[過去ログ] プログラミングのお題スレ Part16 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
654: 2020/01/19(日)20:22 ID:MJwntUeD(1) AAS
>>652
PowerShellには論理XOR演算子があるので簡潔に書けるな。

(1..1000 |? {$_ % 3 -xor $_ % 5} | measure -sum).sum

-- 実行結果 --
201003
655
(1): 2020/01/19(日)21:28 ID:RfLx+x9F(1/2) AAS
>>652
なぜそう思った?
656: 2020/01/19(日)21:32 ID:CR4NZ4aH(2/2) AAS
>>655
だけ と強調してたから15を含めない意図があったのかと思った
657: 2020/01/19(日)21:35 ID:RrNuywTU(1) AAS
「3の倍数または5の倍数であるものだけ」という文言をそう理解するのは宇宙でお前だけだと思う
658
(1): 2020/01/19(日)22:24 ID:RfLx+x9F(2/2) AAS
妊娠してるか体が不自由な人だけ使ってください
659: 2020/01/19(日)23:13 ID:xkwic4JQ(1) AAS
>>658
妊娠してる障害者はすわれないやんけ!
660
(1): 2020/01/20(月)07:26 ID:MadDRkAO(1) AAS
日本語の選択が排他的かどうかは状況しだいだから難しいところだと思うけどね
レストランで「コーヒーか紅茶が付きます」と言えばどちらか一方でしょ
ケースバイケース

こう解釈したらこういうプログラムになるというふうに思考を広げることはできるっしょ
661: 2020/01/20(月)08:18 ID:ItoFGwWk(1) AAS
それは選ぶ条件ではなく、選ぶ個数の問題

>>346は全て選ぶのが暗黙の了解
>>660は選ぶのが1個であるのが暗黙の了解

>>346も全てとは書いてないから
1個選ぶのか、任意の個数選ぶのか、全ての選び方の場合を求めるのか、などが考えられるのかも
誤解の可能性があるなら「全て選ぶ」と書かないとね
662: 2020/01/20(月)10:07 ID:DzK/Jy6Q(1) AAS
0個選んで答えは0
コンピュータ言語読み書きしてたらこういう
発想が自然に感じられるが
日常言語の世界ではナンセンス杉
663: 2020/01/20(月)14:10 ID:gT/yNp+O(1) AAS
>651 のようにした
common lisp
(loop for i from 1 to 1000 when (= (* (mod i 3) (mod i 5)) 0) sum i)
234168
664: 2020/01/20(月)15:41 ID:/G9h8LiI(1) AAS
>>651 Ruby
def si(n,m); n.step(m,n).inject(:+); end

p n3 = si( 3, 1000 ) #=> 166833
p n5 = si( 5, 1000 ) #=> 100500
p n15 = si( 15, 1000 ) #=> 33165
p n3 + n5 - 2 * n15 #=> 201003
665
(1): 2020/01/20(月)21:46 ID:eV9B9Eib(1) AAS
>>629
Rで全探索
外部リンク:ideone.com

物が9個しかないので512通りの組み合わせを全探索してもすぐ終わるし、
上のプログラムの2番目の問題のように、合計価値が最大となる組み合わせが
複数ある場合でもすべて挙げられるし、重さが小数や大きな整数の場合でも
同様に解けるから、全探索が時間的に可能なら全探索の方が良いんじゃないか?
666: 2020/01/20(月)22:42 ID:vyZs8dgX(1/2) AAS
>>665
問題の条件によって適した解法が変わる。
たとえば個数が高々十数個程度であっても、
個々の重さや価値の範囲が広く、詰め込める荷物のキャパが大きいとか、
整数でない場合は、動的計画法だと解けないが、ナイーブな解法なら解ける。
逆に個数が大きくて、個々の重さや価値、キャパがそれほど大きくない整数だと、
ナイーブな解法では時間がかかりすぎて解けないが、
動的計画法だと短時間で解ける。
条件によって適した解法を選択する。
>>653 は動的計画法の復習と最適解に至る経路を逆にたどる復習のつもりで書いのよん。
667: 2020/01/20(月)23:01 ID:kEPXORSp(1) AAS
問題に適した解法なら>>631が最強
668: 2020/01/20(月)23:10 ID:vyZs8dgX(2/2) AAS
(´・ω・`)「・・・・・」
669: 2020/01/21(火)14:48 ID:/dftakVp(1) AAS
>>650
Kotlin script

KotlinもBooleanのxor使えたよ。こういう場合は優先順位の問題で括弧が必要になるけどね。

println((1..1000).filter { (it % 3 == 0) xor (it % 5 == 0) }.sum())
670
(1): [age] 2020/01/21(火)16:44 ID:TMO7rdDn(1) AAS
!=でいんじゃ、、、
671
(6): 2020/01/21(火)21:56 ID:q8k+mYw1(1/2) AAS
["A -> B" , "A -> D", "B -> E", "D -> E"]


A
B
E
D
E

このようにツリー状に表現する際に計算量が少ない書き出し方ってどうなりますか。言語問いません。
672: 2020/01/21(火)21:57 ID:q8k+mYw1(2/2) AAS
スペースきえた…
673: 2020/01/21(火)21:58 ID:5H3OckH4(1) AAS
D -> B のようなループできるかもね
674: 2020/01/22(水)03:28 ID:HNO/xGn/(1) AAS
>>670
それを言っちゃあおしめえよ
675: 2020/01/22(水)10:29 ID:Oj6zQLXh(1) AAS
>>671
データ構造がツリーじゃないのにツリー形式で表示するのは効率悪くない?

同じデータを何度も表示しちゃう
676: 2020/01/22(水)11:00 ID:8VKZzbv1(1) AAS
>>671
dot
677
(1): 2020/01/22(水)19:16 ID:0ayd3B3Q(1) AAS
お題

>>671 において
入力文字列が20個以内で出力の行数が最大となる
入力文字列(を1個)を求めよ
678: 2020/01/22(水)19:50 ID:k+w34kNu(1) AAS
["A -> B" , "B -> A]
これで循環参照のチェックいれるコードがない再帰っぽい感じなら無限に出力だ
679: 2020/01/22(水)19:55 ID:F1N+c+gr(1/2) AAS
閉路と多重辺は無しで
辺の無い点も表現出来ないので無し
680: 2020/01/22(水)20:19 ID:3jquT0bn(1/2) AAS
>>677
20個ならループしない限りは内容が何だろうが20行にしかならないのでは?
681: 2020/01/22(水)20:23 ID:1i745hKi(1) AAS
最大は21行だよ
682: 2020/01/22(水)20:40 ID:3jquT0bn(2/2) AAS
あー。そうか。21だね。
683
(1): 2020/01/22(水)20:43 ID:F1N+c+gr(2/2) AAS
>>671に "E -> C" を加えると?
684: 2020/01/22(水)21:13 ID:pXdYyKNl(1) AAS
>>671
Java
外部リンク:paiza.io
685: 2020/01/23(木)01:12 ID:LqZxq9h8(1) AAS
>>683
分岐か。そうすれば増えるね。
686: 2020/01/23(木)18:13 ID:AdSJ3UeH(1/2) AAS
[] 0行
["A -> B"] 2行
["A -> C", "B -> C"] 4行
["A -> D", "B -> D", "C -> D"] 6行
["A -> D", "B -> D", "C -> D", "D -> E"] 9行
687
(1): 2020/01/23(木)18:45 ID:AdSJ3UeH(2/2) AAS
n≧12 の時、以下を四捨五入した行数になるかな

偶数
4 * exp(n*0.24060591252980172375)

奇数
4.0137530980362538594 * exp(n*0.24060591252980172375)
688
(1): 2020/01/24(金)23:55 ID:qxZ+oily(1) AAS
>>671 Perl5 (goto 関数を使っていますが、perl5ではこれはcontinuationです)

use feature qw{current_sub signatures};
no warnings 'experimental::signatures';
@sx = (A => B, A => D, B => E, D => E);
sub {
 if (@_) {
  ($a, $b) = (shift, shift);
  push @lx, $a unless $h{$a};
  push @{$h{$a}}, $b;
  $r{$b}{$a} = 1;
省15
689: 2020/01/25(土)02:34 ID:XZtTnZKV(1/2) AAS
>>646
サンプルデータも考えて、回答も作れと言われると
めんどくさすぎてスルーされるんじゃまいか
690: 2020/01/25(土)02:36 ID:XZtTnZKV(2/2) AAS
つか、無向グラフの最小サイクル検出って
いいアルゴリズムあったっけ
691: 2020/01/25(土)06:09 ID:Fgzm1LAC(1/2) AAS
最小サイクルとは?
コストが最小?通る辺の数が最小?

コストとは?
通る辺の重みの和?
点のコストはゼロ?

出題者しかわからない前提が色々とあるお題
692
(1): 2020/01/25(土)06:22 ID:Fgzm1LAC(2/2) AAS
>>688
gotoを使っちゃいけないローカルルールとかあるの?
693: 2020/01/25(土)08:11 ID:O6wUvbi6(1) AAS
tsort(1) ?
694: 2020/01/25(土)10:35 ID:ZrgQFiPc(1) AAS
>>692
そんなルールはないけれど、制御構造の構文の代わりに安直に
goto分岐を使ったヘッポココードではなくて、perl5のgoto 関数名構文が持つ
continuationの機能を使って、動的環境を維持したまま末尾再帰的な
loopを表現したと言いたかったのよ
695: 2020/01/25(土)10:38 ID:icKJvqvk(1) AAS
なるほど
お前はなかなかやるじゃねえか
696
(13): 2020/01/25(土)11:05 ID:mLh1vP4R(1) AAS
お題

.bash_history には、入力したコマンドが、1行ずつ追記されていくが、
同じコマンドが出てくると面倒なので、古い(上にある)方をすべて消してください

入力
5
3
1
4
2
5
省9
697: 2020/01/25(土)11:14 ID:wxh/zNmo(1) AAS
>>696 Ruby

puts gets(p).split.reverse.uniq.reverse

# =>
1
2
3
4
5
698: 2020/01/25(土)12:48 ID:dgvYVRBF(1) AAS
>>696
Java
外部リンク:paiza.io
699: 2020/01/25(土)13:56 ID:yjSryLut(1) AAS
>>696 Perl5

$h{$_} = $. while <>;
print for sort{$h{$a} <=> $h{$b}} keys %h;

実行結果
~ $ cat .bash_history
5
3
1
4
2
省10
700: 2020/01/25(土)18:59 ID:xXb4DuHd(1) AAS
>>696
外部リンク:ideone.com
RのuniqueにはfromLastオプションがあるので、revによる前後処理が不要。
701
(1): 2020/01/25(土)19:19 ID:i4ScOGkF(1) AAS
>>696 Ruby

a=STDIN.readlines
puts a.select.with_index{|v,i| i==a.rindex(v)}.join
702
(2): 2020/01/25(土)19:26 ID:eYyvJiZZ(1) AAS
>>696 .bashrc
HISTCONTROL=erasedups:ignorespace
ついでに
HISTIGNORE="history*"
703: 2020/01/25(土)20:22 ID:J6xo1Vbp(1) AAS
>>696 Emacs Lisp
(with-temp-buffer-window #1="*odai-pt16-696*" nil nil
  (switch-to-buffer #1#)
  (insert-file-contents "~/.bash_history")
  (delete-duplicate-lines (point-min) (point-max) t))
704
(1): 2020/01/26(日)00:01 ID:4S7WZkam(1/4) AAS
>>701 ナイス
705: 2020/01/26(日)00:02 ID:4S7WZkam(2/4) AAS
>>704 アンカーしくった
>>702 ナイスはこっちだた
706
(2): 696 2020/01/26(日)00:35 ID:2jcz6vHU(1/7) AAS
>>702
スレ違いで、スマンが、

erasedups で、現在の行と一致する履歴を、保存前にすべて削除するけど、
WSL, Ubuntu 18.04, bash では、削除されなかった!

これは難しい

tmuxとかの仮想端末で複数の画面間で、Bashのコマンド履歴を共有すると、
同じ履歴が何度も記録されてしまう問題を解決する
外部リンク:piro.sa@kura.ne.jp/latest/blosxom/webtech/2018-03-04_history-nodup-with-tmux.htm
707: 2020/01/26(日)01:20 ID:4S7WZkam(3/4) AAS
>>706
モチツケ
708
(1): 696 2020/01/26(日)01:39 ID:2jcz6vHU(2/7) AAS
history の仕組みが難しいから、

定期的に、ここのスクリプトで、履歴ファイルを上書きした方が良いかも
709
(2): 2020/01/26(日)01:43 ID:HPdacZve(1) AAS
rubyXLでエクセルいじってるが

印刷範囲を設定したいときは、どのようにすればよいのでしょうか?
いろいろ探しても見当たらず・・
710
(1): 2020/01/26(日)02:08 ID:4S7WZkam(4/4) AAS
>>709
スレチ

>>708
bashから.bash_profileの重複をなくすプログラムを実行しても
logoutするときにbashが記憶しているコマンド履歴を.bash_profileに
上書きしちゃって、元の木阿弥になるんジャマイカ
711
(1): 696 2020/01/26(日)05:19 ID:2jcz6vHU(3/7) AAS
>>710

>>706
のサイトに書いてあるけど、

.bash_history から重複を排除して、上書きする

次に、history -c && history -r

-c で、メモリ上のコマンド履歴を削除して、
-r で、履歴ファイルからメモリへ、コマンド履歴を読み込む
省1
712: 696 2020/01/26(日)06:05 ID:2jcz6vHU(4/7) AAS
>>696
Ruby で作った。
コマンドは「ruby script.rb 入力ファイル名」

# ARGF とは、複数のファイルや標準入力を連結して、1つにした仮想ファイル
ary = ARGF.readlines # 1行ずつ配列に入れる

# ! が付く破壊的メソッドは、メソッドチェーンしない!
ary.reverse!
ary.uniq! # 連続していないものも削除する
ary.reverse! # 元に戻す

print ary.join
713: 696 2020/01/26(日)06:21 ID:2jcz6vHU(5/7) AAS
>>711
の方法で、.bash_history から重複を排除できました!
714
(6): 2020/01/26(日)09:38 ID:6CyPsFJq(1) AAS
お題: 入力された整数を因数分解し、因数の数だけ「どんだけぇ〜♪」と表示せよ

in < 24
因数分解: 2 2 2 3
out > どんだけぇ〜♪
どんだけぇ〜♪
どんだけぇ〜♪
どんだけぇ〜♪
715: 2020/01/26(日)10:24 ID:mBsLdcGX(1) AAS
>>709

121 名前:デフォルトの名無しさん (ワッチョイ a763-gk0v)[] 投稿日:2020/01/25(土) 15:52:45.46 ID:WZ3Oswhu0
rubyXLでエクセルいじってるが

印刷範囲を設定したいときは、どのようにすればよいのでしょうか?
いろいろ探しても見当たらず・・
716: 2020/01/26(日)10:35 ID:OyPCa8uu(1) AAS
>>714 Ruby

puts "どんだけぇ〜♪\n"*~-`factor`.split.size
717
(1): 2020/01/26(日)11:45 ID:pipfilQo(1/8) AAS
>>714
Java
外部リンク:paiza.io
718
(2): 蟻人間 ◆T6xkBnTXz7B0 2020/01/26(日)15:31 ID:QR2U0M8L(1/5) AAS
お題: どこかの国に競馬があった。そこの競馬場のルールでは馬券一枚に対して単勝の馬一頭しか選べない。
その日の各ゲームのそれぞれの出場馬について、名前と勝率とオッズが掲示されている。

【今日の競馬】
ゲーム1:
馬A, 0.5, 2.0
馬B, 0.8, 1.2
馬C, 0.9, 0.2
ゲーム2:
馬D, 0.3, 4.0
馬E, 0.5, 3.0
省2
719
(1): 2020/01/26(日)15:44 ID:uQg9mh+n(1/4) AAS
勝率の和が1を越えてるけど勝率って言うのは勝つ確率のことではなくて何かしらの競馬用語なのか?
720: 蟻人間 ◆T6xkBnTXz7B0 2020/01/26(日)15:46 ID:TOQ25Lx5(1/2) AAS
ここでは、払戻金の倍率(賭けた金が何倍になって払い戻されるか)のことをオッズと呼ぶことにする。払戻金は小数点以下切り捨てとする。
721: 2020/01/26(日)15:47 ID:uQg9mh+n(2/4) AAS
てよく見たらいつもの糞コテやん
解散
722: 蟻人間 ◆T6xkBnTXz7B0 2020/01/26(日)15:55 ID:QR2U0M8L(2/5) AAS
>>719
馬の勝率はこれまでのレースで一着になった確率。
723: 2020/01/26(日)16:14 ID:jQnb27FW(1/3) AAS
勝つ確率がわからないなら期待値もわからない
普通は買わないのが一番
724
(1): 2020/01/26(日)16:45 ID:jQnb27FW(2/3) AAS
オッズ0.2って何?
725: 2020/01/26(日)17:18 ID:aRFw4TjA(1) AAS
杜撰なお題だなw
726: 蟻人間 ◆T6xkBnTXz7B0 2020/01/26(日)17:19 ID:QR2U0M8L(3/5) AAS
>>724
勝つと20%戻ってくるという意味。
727: 2020/01/26(日)17:23 ID:uQg9mh+n(3/4) AAS
100円の馬券が当たるとなんと20円に!
728
(1): 2020/01/26(日)18:27 ID:jQnb27FW(3/3) AAS
>>718
ちゃんとしたお題にするつもりが無いなら取り下げて
729
(1): 蟻人間 ◆T6xkBnTXz7B0 2020/01/26(日)18:40 ID:TOQ25Lx5(2/2) AAS
>>718 >>728
取り下げます。もっと良いお題を考えて下さい。
730
(4): 2020/01/26(日)18:56 ID:OTxXTlwF(1/5) AAS
>>714

初心者です
JavaScriptです

let n = 24;
const factors = [];

for(let i=2;i<=Math.floor(n/2);i++){
if(n % i !== 0) continue;
for(;;) {
n /= i;
factors.push(i);
省9
731
(2): 2020/01/26(日)19:03 ID:uQg9mh+n(4/4) AAS
>>730
for(let i=2;i<=Math.floor(n/2);i++){

const sup = Math.sqrt(n);
for(let i=2;i<=sup;i++){
732: 2020/01/26(日)19:09 ID:OTxXTlwF(2/5) AAS
>>731
ありがとうございます!動きました
何かとんでもない思い違いをしていたみたいで恥ずかしい…
733: 2020/01/26(日)19:18 ID:9QNAjmQu(1) AAS
n % i !== 0
734
(10): 2020/01/26(日)19:23 ID:pipfilQo(2/8) AAS
>>729
ビルの回数Nを引数として受け取って次の問題を解くプログラムを作ってください

N階建てのビルのある階から卵を落とします。
卵はある階よりも低ければ割れることはなく、ある階よりも高いと割れてしまう。
今、あなたは卵を2つ持っています。
卵が何階で割れるかを調べるもっとも効率のよい方法は何ですか?
そして、その方法で必要な卵を落とす回数は最大で何回ですか?
735
(1): 2020/01/26(日)19:26 ID:TCoNMy8F(1) AAS
2分探索じゃだめか?
736: 2020/01/26(日)19:40 ID:yXTxN+fl(1/3) AAS
>>714
C++ イデオン揚げるの面倒なのでべた書きしておくわ。
半月ぶり位にコード書いたけど、やはり良いね。

#include <iostream>
#include <cstdint>

int main() {
std::uintmax_t N = 24;
while (std::cin >> N) {
for (std::uintmax_t i = 2; i <= N; i++) {
while (N % i == 0 && N != 0) {
省8
737: 2020/01/26(日)19:46 ID:3yHBwxN6(1/4) AAS
>>734
効率
とは?

落とす回数の平均?
落とす回数の最大?
階を上がる回数の平均?
階を上がる回数の最大?
他?
738: 2020/01/26(日)19:50 ID:3yHBwxN6(2/4) AAS
卵を使う個数

ってのもある
これだとリニア検索で1個使用でつまらん問題になるけど
739: 2020/01/26(日)20:01 ID:vOa1pk8h(1) AAS
>>714
R
外部リンク:ideone.com
740
(1): 2020/01/26(日)20:15 ID:yXTxN+fl(2/3) AAS
>>734
プログラミング言語・日本語でいうと、
2階から落としていって、割れるまで二階ずつ上っていく。
割れたら一階下りて割れるか確認する。
基本的にそれだけ。
741: 2020/01/26(日)20:16 ID:pipfilQo(3/8) AAS
>>735
二分探索だとタマゴが割れて調べられないケースがでてくるんよー
742
(2): 2020/01/26(日)20:22 ID:OTxXTlwF(3/5) AAS
>>731さんの指摘も踏まえ>>730のコードを以下のように修正してみました
JavaScriptです、念のため…

let n = 24
const sup = Math.sqrt(n);

for(let i=2;i<=sup;i++) {
if(n % i !== 0) continue;
while(n % i === 0) {
n /= i;
console.log('どんだけぇ〜♪');
}
省2
743
(1): 2020/01/26(日)20:28 ID:3yHBwxN6(3/4) AAS
>>734
1階は必ず割れない
N階は必ず割れる
という設定とする

卵を落とす最大回数をa回とすると
N≦(a^2 + a + 4)*0.5
までは調べられる
744
(2): 2020/01/26(日)20:30 ID:yXTxN+fl(3/3) AAS
>>742
後学のために教えてほしいんだが、なんでnをsqrtしてsup作ってるんだい?
745
(1): 2020/01/26(日)20:34 ID:3yHBwxN6(4/4) AAS
>>742
n/= i
を実行する度にsupの値を減らせる

最後に残ったnが1じゃない場合
もう1回文字列を表示する必要がある
746
(1): 730 2020/01/26(日)21:16 ID:OTxXTlwF(4/5) AAS
>>744
そこは731さんの指摘のままに書いて深く考えていませんでしたが
745さんの言うようにsupの値を減らせるというところにヒントがありそうですね
再帰的?なやりかたになるのかな…うーんわからん

>>745
上については上述の通りまだわかりませんが
下は、小さい順にしらみつぶしで割れるだけ割っていっているのでおっしゃるような結果にはならないのではと考えるのですがどうでしょうか
747
(1): 2020/01/26(日)21:23 ID:pipfilQo(4/8) AAS
>>746
nに3とかを入れてみると最後の表示については確認できるかと

割り切れたときはiはそのまま
割り切れなかったらiを+1
ループでできるはず
748: 730 2020/01/26(日)21:28 ID:OTxXTlwF(5/5) AAS
>>747
確認しました…>最後の表示
ちゃんと自分で調べないとダメですね
ちょっと直してみます
749
(2): 2020/01/26(日)22:44 ID:2jcz6vHU(6/7) AAS
>>734
このお題は、どこかで見た

VBScript のスレか何かで、ピッコロ大魔王が出したクイズじゃないの?w
750: 2020/01/26(日)22:55 ID:2jcz6vHU(7/7) AAS
>>744
素数かどうかなど、素因数分解する際、平方根まで調べれば見つかるから

例えば、a, b が素数で、a < b の時、
a * b = 7 * 11 = 77 なら、√77 = 8.8 で、aは、9 以下で必ず見つかる

つまり、
平方根よりも小さいa * 平方根よりも大きいb = 77
751
(1): 蟻人間 ◆T6xkBnTXz7B0 2020/01/26(日)23:02 ID:QR2U0M8L(4/5) AAS
その辺は数学の整数論を参照あれ。
752: 2020/01/26(日)23:07 ID:pipfilQo(5/8) AAS
>>749
ネタ元はグーグルの入社試験
ググったら解法もわかる
プログラムで解いてる人は少ないからプログラミング能力を測るのに適当かと
753
(1): 2020/01/26(日)23:18 ID:pipfilQo(6/8) AAS
お題
ある長方形の面積Sが与えられたとき
短い方の辺の長さが最も長くなるときの縦の長さと横の長さを出力してください
1-
あと 249 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.081s