[過去ログ]
プログラミングのお題スレ Part13 (1002レス)
プログラミングのお題スレ Part13 http://mevius.5ch.net/test/read.cgi/tech/1549160513/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
875: デフォルトの名無しさん [] 2019/05/09(木) 19:00:51.34 ID:n0QdGvKz コラッツ数列を作る関数chainを書け コラッツ数列の定義 任意の自然数から開始する 数が 1ならば 、終了 数が偶数なら 、 2で割る 数が奇数なら 、 3倍して 1を足す 新しい値でこのアルゴリズムを繰り返す 使用例 >chain 10 [ 1 0 , 5 , 1 6 , 8 , 4 , 2 , 1 ] >chain 1 [ 1 ] >chain 30 [ 3 0 , 1 5 , 4 6 , 2 3 , 7 0 , 3 5 , 1 0 6 , 5 3 , 1 6 0 , 8 0 , 4 0 , 2 0 , 1 0 , 5 , 1 6 , 8 , 4 , 2 , 1 ] http://mevius.5ch.net/test/read.cgi/tech/1549160513/875
876: デフォルトの名無しさん [] 2019/05/09(木) 21:28:06.85 ID:V3giiBFx >>875 C https://ideone.com/vpQG5P http://mevius.5ch.net/test/read.cgi/tech/1549160513/876
878: デフォルトの名無しさん [] 2019/05/10(金) 08:21:41.55 ID:Z1uC1A15 >>875 python def chain(n): lst = [] if n < 1: raise ValueError("Please n > 0 number") while n != 1: lst.append(n) if n % 2 == 0: n //= 2 else: n = n * 3 + 1 lst.append(1) return lst for i in [10,1,30,0]: print(chain(i)) http://mevius.5ch.net/test/read.cgi/tech/1549160513/878
879: デフォルトの名無しさん [] 2019/05/10(金) 08:24:53.49 ID:Z1uC1A15 >>875 Haskell main = mapM_ (print.chain) [10,1,30,0] chain 1 = [1] chain n | n < 1 = error "Please n > 0 number" chain n | even n = n:chain (n `div` 2) chain n = n:chain (n * 3 + 1) http://mevius.5ch.net/test/read.cgi/tech/1549160513/879
880: デフォルトの名無しさん [sage] 2019/05/10(金) 11:11:44.01 ID:VtNtFyvg >>875 C https://ideone.com/mBt0yE 1未満の値の判定はchain関数に実装すべきなのかどうなのか…… http://mevius.5ch.net/test/read.cgi/tech/1549160513/880
890: デフォルトの名無しさん [] 2019/05/10(金) 15:43:29.85 ID:aTy0NCJ4 >>875 与えられた数の3倍以上の個数を持つ系列を を3個示せ。 http://mevius.5ch.net/test/read.cgi/tech/1549160513/890
891: デフォルトの名無しさん [sage] 2019/05/10(金) 17:50:33.37 ID:58PV3kUA >>875,884 Squeak Smalltalk | chain | chain := [:n | Array streamContents: [:ss | ss nextPut: n. [n > 1] whileTrue: [ss nextPut: (n := n even ifTrue: [n / 2] ifFalse: [n * 3 + 1])] ] ]. chain value: 10. "=> #(10 5 16 8 4 2 1) " (1 to: 100) count: [:n | (chain value: n) size >= 15] "=> 71 " http://mevius.5ch.net/test/read.cgi/tech/1549160513/891
892: デフォルトの名無しさん [] 2019/05/10(金) 20:05:13.80 ID:0Zlxa6bH >>875 Perl のワンライナー。 perl -ne '$n=$_;chomp($n);@d=($n);while($n!=1){$n=$n&1?($n*3+1):($n/2);push(@d,$n)}print "[".join(", ", @d)."]\n"' 実行する場合はbash等のシェルから行う(シングルクォートの中がそのままperlに引き渡されさえすれば他のシェルでも良い)。 標準入力から1行1データで入力して結果を出力するようにした。 http://mevius.5ch.net/test/read.cgi/tech/1549160513/892
896: デフォルトの名無しさん [sage] 2019/05/11(土) 11:54:01.37 ID:Ze1v8w/9 >>875 Perl5 sub chain { my $i = shift; $i == 1 ? $i : ($i, ($i & 1 ? chain(3*$i + 1) : chain($i / 2))) } for (qw{10 1 30}) { @a = chain $_; print "[@a]\n"; } 実行 ~ $ perl 13_875_collatz.pl [10 5 16 8 4 2 1] [1] [30 15 46 23 70 35 106 53 160 80 40 20 10 5 16 8 4 2 1] http://mevius.5ch.net/test/read.cgi/tech/1549160513/896
898: デフォルトの名無しさん [] 2019/05/11(土) 13:06:48.39 ID:bKjSBhWB >>875 Ruby で module Collatz def self.next_number( num ) if num.even? # 偶数 num / 2 else # 奇数 num * 3 + 1 end end def self.chain( num ) @@results = [ ] tmp = num while true @@results.push tmp break if tmp == 1 tmp = next_number( tmp ) end @@results end end [ 1, 27 ].each do | num | p Collatz.chain( num ) end http://mevius.5ch.net/test/read.cgi/tech/1549160513/898
899: デフォルトの名無しさん [sage] 2019/05/11(土) 18:55:11.91 ID:fAbbaveG >>875 c https://ideone.com/jwtvbF >>875 ruby https://ideone.com/MIKeM7 >>875 ocaml https://ideone.com/CEassZ http://mevius.5ch.net/test/read.cgi/tech/1549160513/899
901: デフォルトの名無しさん [sage] 2019/05/11(土) 23:44:29.57 ID:fAbbaveG >>875 octave https://ideone.com/eNqIim http://mevius.5ch.net/test/read.cgi/tech/1549160513/901
902: デフォルトの名無しさん [] 2019/05/12(日) 02:01:10.46 ID:FbICTnq7 >>875 Java https://paiza.io/projects/VSqA-UZgWeXB-YzVTnrQRg takeUntilが欲しいなー http://mevius.5ch.net/test/read.cgi/tech/1549160513/902
903: デフォルトの名無しさん [] 2019/05/12(日) 06:46:28.87 ID:R9TUiFuu >>875 コラッツ樹で作れば出力を減らせる。 http://mevius.5ch.net/test/read.cgi/tech/1549160513/903
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.031s