プログラミングのお題スレです。
【出題と回答例】
1 名前:デフォルトの名無しさん
お題:お題本文
2 名前:デフォルトの名無しさん
>>1 使用言語
回答本文
結果がある場合はそれも
【ソースコードが長くなったら】 (オンラインでコードを実行できる)
https://ideone.com/
http://codepad.org/
http://compileonline.com/
http://rextester.com/runcode
https://runnable.com/
https://code.hackerearth.com/
http://melpon.org/wandbox
https://paiza.io/
宿題は宿題スレがあるのでそちらへ。
※前スレ
プログラミングのお題スレ Part20
https://mevius.5ch.net/test/read.cgi/tech/1624028577/
プログラミングのお題スレ Part21
■ このスレッドは過去ログ倉庫に格納されています
2022/11/13(日) 19:00:36.84ID:ZCYlhUwL
565デフォルトの名無しさん
2023/03/10(金) 22:07:04.07ID:HEpguiV4 >>561
誰も見てないから心配すんな。
誰も見てないから心配すんな。
566559
2023/03/12(日) 02:44:00.49ID:eBdq5KuG >>533
Kotlin
BigDecimal (及び BigInteger)は使うが文字列を使うのは止めて色々計算して何とかするようにした。
https://paiza.io/projects/6H3b_gf_Kc3RCT6_S_HISw
Kotlin
BigDecimal (及び BigInteger)は使うが文字列を使うのは止めて色々計算して何とかするようにした。
https://paiza.io/projects/6H3b_gf_Kc3RCT6_S_HISw
567デフォルトの名無しさん
2023/03/12(日) 18:49:22.70ID:eBdq5KuG >>557のお題を勝手に改造
お題:5chのスレのURLが入力されるので内容を取得してもっともレスが付いているレス番号から順に出力しなさい
複数同率の場合は複数表示しなさい
回答例
Kotlin
https://paiza.io/projects/CICvfqwT52X4FsmIwxb_Zw
出力はURLと「レス数: レス番号, ...」になる。
要するに、>>557作っている内に最大のやつ一つ出すだけなのも勿体ないなと思って改造して出来上がったが元のお題とちょっと違うのでお題も勝手に改造した。
お題:5chのスレのURLが入力されるので内容を取得してもっともレスが付いているレス番号から順に出力しなさい
複数同率の場合は複数表示しなさい
回答例
Kotlin
https://paiza.io/projects/CICvfqwT52X4FsmIwxb_Zw
出力はURLと「レス数: レス番号, ...」になる。
要するに、>>557作っている内に最大のやつ一つ出すだけなのも勿体ないなと思って改造して出来上がったが元のお題とちょっと違うのでお題も勝手に改造した。
568564
2023/03/13(月) 02:22:32.85ID:3T4oo4fg569デフォルトの名無しさん
2023/03/14(火) 04:11:08.17ID:39BjzOmR >>509
Ruby で、
require 'csv'
require 'json'
# 製品タイプの出現回数を数える。初期値は0
prod_type_count = Hash.new( 0 )
# 1行ずつ処理する。Array.new( 1 ) で先頭要素に、nil が入る。
# 蓄積変数・ary のインデックスと、出現回数を同じにする。
# 例えば、ary[ 2 ] には、2つ目のB やC などが入る
result_ary = CSV.foreach( "input.csv" ).
each_with_object( Array.new( 1 ) ) do |row, ary|
plus_1 = prod_type_count[ row[ 0 ] ] + 1
prod_type_count[ row[ 0 ] ] = plus_1
if ary[ plus_1 ] # 存在する
ary[ plus_1 ].push row
else # 存在しない
ary[ plus_1 ] = [ row ]
end
end
# p prod_type_count
#=> { "B"=>2, "C"=>3, "F"=>2, "E"=>3, "D"=>4, "A"=>1, "G"=>1 }
次へ続く
Ruby で、
require 'csv'
require 'json'
# 製品タイプの出現回数を数える。初期値は0
prod_type_count = Hash.new( 0 )
# 1行ずつ処理する。Array.new( 1 ) で先頭要素に、nil が入る。
# 蓄積変数・ary のインデックスと、出現回数を同じにする。
# 例えば、ary[ 2 ] には、2つ目のB やC などが入る
result_ary = CSV.foreach( "input.csv" ).
each_with_object( Array.new( 1 ) ) do |row, ary|
plus_1 = prod_type_count[ row[ 0 ] ] + 1
prod_type_count[ row[ 0 ] ] = plus_1
if ary[ plus_1 ] # 存在する
ary[ plus_1 ].push row
else # 存在しない
ary[ plus_1 ] = [ row ]
end
end
# p prod_type_count
#=> { "B"=>2, "C"=>3, "F"=>2, "E"=>3, "D"=>4, "A"=>1, "G"=>1 }
次へ続く
570569
2023/03/14(火) 04:12:26.06ID:39BjzOmR result_ary.shift # 先頭要素のnil を削除する
res = result_ary.each_with_object( [ ] ) do |outer_ary, accum|
outer_ary.sort_by! { |inner_ary| inner_ary[ 0 ] } # 製品タイプでソートする
transposed_ary = outer_ary.transpose # 2次元配列を転置する
accum.push ( { "製品タイプ" => transposed_ary[ 0 ],
"製品ID" => transposed_ary[ 1 ],
"製品色" => transposed_ary[ 2 ] } )
end
puts JSON.dump( res ) # 文字列化
# p result_ary
=begin
ソート後のデータ
[ [["A", "01", "Y"], ["B", "02", "B"], ["C", "04", "Y"], ["D", "07", "B"], ["E", "12", "C"], ["F", "15", "R"], ["G", "16", "M"]],
[["B", "03", "C"], ["C", "06", "G"], ["D", "08", "B"], ["E", "11", "Y"], ["F", "14", "G"]],
[["C", "05", "C"], ["D", "10", "M"], ["E", "13", "B"]],
[["D", "09", "B"]] ]
=end
res = result_ary.each_with_object( [ ] ) do |outer_ary, accum|
outer_ary.sort_by! { |inner_ary| inner_ary[ 0 ] } # 製品タイプでソートする
transposed_ary = outer_ary.transpose # 2次元配列を転置する
accum.push ( { "製品タイプ" => transposed_ary[ 0 ],
"製品ID" => transposed_ary[ 1 ],
"製品色" => transposed_ary[ 2 ] } )
end
puts JSON.dump( res ) # 文字列化
# p result_ary
=begin
ソート後のデータ
[ [["A", "01", "Y"], ["B", "02", "B"], ["C", "04", "Y"], ["D", "07", "B"], ["E", "12", "C"], ["F", "15", "R"], ["G", "16", "M"]],
[["B", "03", "C"], ["C", "06", "G"], ["D", "08", "B"], ["E", "11", "Y"], ["F", "14", "G"]],
[["C", "05", "C"], ["D", "10", "M"], ["E", "13", "B"]],
[["D", "09", "B"]] ]
=end
571567
2023/03/15(水) 02:47:25.92ID:N1pHvbol >>557
Kotlin
>>567を更に改造して>>568の言うような >>xxx-xxx とかも可能にした。
実際に受け付けるのは「>>」の後が「数」または「数-数」で複数ある場合はカンマ区切り。
https://paiza.io/projects/CDH-JDZD12laCkRrON4Q2A
Kotlin
>>567を更に改造して>>568の言うような >>xxx-xxx とかも可能にした。
実際に受け付けるのは「>>」の後が「数」または「数-数」で複数ある場合はカンマ区切り。
https://paiza.io/projects/CDH-JDZD12laCkRrON4Q2A
572デフォルトの名無しさん
2023/03/16(木) 19:59:21.18ID:rEpIo1do マッチ棒パズルソルバ
0123456789+-=×/からなる文字列が与えられる
この文字列にC変換1回、またはA変換とB変換を一回ずつ行って得られる文字列のうち数式として成立するものを列挙せよ
https://youtu.be/2sqvh8KBdQk
例
6 = 3 + 3 - 8 → 6 = 3 + 3 = 6
7 = 6 + 5 → 11 = 6 + 5
2 = 3 + 0 → 3 = 3 + 0, 2 = 2 + 0
6 = 9 - 3 → 5 = 8 - 3
A変換(逆変換がB変換)
6 → 5
8 → 0, 6, 9
9 → 3, 5
= → -
× → /
C変換
0 → 6,9
2 → 3
3 → 2,5
4 → 7,11
5 → 3
6 → 0
7 → 4,11
9 → 0
11 → 4,7
0123456789+-=×/からなる文字列が与えられる
この文字列にC変換1回、またはA変換とB変換を一回ずつ行って得られる文字列のうち数式として成立するものを列挙せよ
https://youtu.be/2sqvh8KBdQk
例
6 = 3 + 3 - 8 → 6 = 3 + 3 = 6
7 = 6 + 5 → 11 = 6 + 5
2 = 3 + 0 → 3 = 3 + 0, 2 = 2 + 0
6 = 9 - 3 → 5 = 8 - 3
A変換(逆変換がB変換)
6 → 5
8 → 0, 6, 9
9 → 3, 5
= → -
× → /
C変換
0 → 6,9
2 → 3
3 → 2,5
4 → 7,11
5 → 3
6 → 0
7 → 4,11
9 → 0
11 → 4,7
573デフォルトの名無しさん
2023/03/18(土) 05:36:02.04ID:YIU3ErvV >>572
A変換に + → - もあるよね?
A変換に + → - もあるよね?
574デフォルトの名無しさん
2023/03/18(土) 06:36:08.37ID:Pxj+DrXq 他にも色々と抜けっぽいのが
B変換 : A変換の逆変換
C変換 : B変換=>A変換 (元に戻るのは除く)
だから
A変換だけ(またはB変換だけ)ちゃんと考えて定義すれば良いよ
「数式が成り立つ」もちゃんと定義しないと
"1+1=2" "1+1" "1"
どこまで含む?
B変換 : A変換の逆変換
C変換 : B変換=>A変換 (元に戻るのは除く)
だから
A変換だけ(またはB変換だけ)ちゃんと考えて定義すれば良いよ
「数式が成り立つ」もちゃんと定義しないと
"1+1=2" "1+1" "1"
どこまで含む?
575デフォルトの名無しさん
2023/03/18(土) 12:24:06.83ID:u+wfSKhj576デフォルトの名無しさん
2023/03/18(土) 18:16:04.06ID:YIU3ErvV 要するにマッチ棒使って数字と四則演算記号と = 記号を表現した時に1本動かして、最低でも一つは = 記号がある状態で式が成立すれば良いんだよね?
577デフォルトの名無しさん
2023/03/18(土) 18:56:17.32ID:KeK4M5sZ >>576
yes
yes
578デフォルトの名無しさん
2023/03/20(月) 16:53:45.60ID:OQwjcDiz ≠もOK?
579デフォルトの名無しさん
2023/03/20(月) 17:51:34.56ID:xiC6G7QO まともに出題出来ないヤツは出題するなよ
580デフォルトの名無しさん
2023/03/21(火) 15:12:23.88ID:icU0z8mb AIは数式や記号に意味を持たせない
581デフォルトの名無しさん
2023/03/25(土) 18:45:52.85ID:WgnIlBna >>572
Kotlin
https://paiza.io/projects/mlep0Qk1tQhwMlC1r6awRw
式が成立するかの判定ではパターンマッチング使ってやっているので多分ちゃんと出来ないこともあるんじゃないかと思うが、多分だいたいは大丈夫。
式の計算は括弧を使った入れ子がないので再帰は使ってない。掛け算と割り算を優先してるだけ。
Kotlin
https://paiza.io/projects/mlep0Qk1tQhwMlC1r6awRw
式が成立するかの判定ではパターンマッチング使ってやっているので多分ちゃんと出来ないこともあるんじゃないかと思うが、多分だいたいは大丈夫。
式の計算は括弧を使った入れ子がないので再帰は使ってない。掛け算と割り算を優先してるだけ。
582521
2023/03/27(月) 05:06:18.68ID:YhTH5dNR >>523
Elixir で再帰で書いた。多分木の走査か。
末尾再帰になっているかどうかは分からないけど。
>>456 よりも、さらに難しかった
https://paiza.io/projects/oeDtiQEX0oQtWQT7SMKwLA?language=elixir
以下は、データの変遷
input_list は、[ ["ガンド部長", "ブリ事業部長", "9000"], ["モジャコ", "ヤズ係長", "39000"] ]
input_map は順不同で、%{ "イナダ課長" => {"ワラサ部長", 5000}, "ガンド部長" => {"ブリ事業部長", 9000} }
boss_subordinates_map は、%{ "ツバス係長" => ["ワカナ"], "ハマチ課長" => ["ヤズ係長", "ツバス係長"] }
total_power は、[ {"ガンド部長", 81000}, {"モジャコ", 39000} ]
出力
ガンド部長 : 81000
モジャコ : 39000
Elixir で再帰で書いた。多分木の走査か。
末尾再帰になっているかどうかは分からないけど。
>>456 よりも、さらに難しかった
https://paiza.io/projects/oeDtiQEX0oQtWQT7SMKwLA?language=elixir
以下は、データの変遷
input_list は、[ ["ガンド部長", "ブリ事業部長", "9000"], ["モジャコ", "ヤズ係長", "39000"] ]
input_map は順不同で、%{ "イナダ課長" => {"ワラサ部長", 5000}, "ガンド部長" => {"ブリ事業部長", 9000} }
boss_subordinates_map は、%{ "ツバス係長" => ["ワカナ"], "ハマチ課長" => ["ヤズ係長", "ツバス係長"] }
total_power は、[ {"ガンド部長", 81000}, {"モジャコ", 39000} ]
出力
ガンド部長 : 81000
モジャコ : 39000
583デフォルトの名無しさん
2023/03/30(木) 17:53:04.26ID:78T5MT6s お題 板違い
数学板に貼られてた問題
こっちでしょ
298 132人目の素数さん[] 2023/03/30(木) 16:50:53.60 ID:FIHeBSy3
66,203,335,759,2227,3663,7249,80,252,420,882,2770,4618,9126
の数字の和を使って22999をピッタリ作りたい
この時、解は存在するか。
数字は重複して何度でも使用して良いが、使う回数は少なければ少ないほど良い。
18-(使用した数字の合計個数)をこの問題の得点とする
という問題誰かといてください!
数学板に貼られてた問題
こっちでしょ
298 132人目の素数さん[] 2023/03/30(木) 16:50:53.60 ID:FIHeBSy3
66,203,335,759,2227,3663,7249,80,252,420,882,2770,4618,9126
の数字の和を使って22999をピッタリ作りたい
この時、解は存在するか。
数字は重複して何度でも使用して良いが、使う回数は少なければ少ないほど良い。
18-(使用した数字の合計個数)をこの問題の得点とする
という問題誰かといてください!
584デフォルトの名無しさん
2023/03/30(木) 20:36:43.76ID:aEUdLEfy 4618+3663+3663+3663+3663+3663+66
585デフォルトの名無しさん
2023/03/30(木) 20:56:17.32ID:beAio6H7 GPT4がこのスレ知っててワロタ
586デフォルトの名無しさん
2023/04/05(水) 19:08:55.65ID:dFp+KIIO お題 nか2n
長さがn+1, 総和が3nの正の整数の列が入力されます
その連続する部分列で総和がnまたは2nであるものを見つけ、その先頭と最後のindexの組み(indexは1〜n+1とする)を返す関数を作ってください
存在しない時は(-1,-1)を返して下さい
備考 総当たりでも列の長さnに対して計算量はn²オーダーですが、線形オーダーの解があります(四則演算等をO(1)として)
例
[4,1,2,3,3,2]
(3,4)
[3,2,1,3,2,3,4,3,1,4,4]
(6,8)
[3,9,1,1,1,2,5,4,3,5,4,2,1,10,3,4,2,7,1,5,1,2,3,3,1,1,1,1,3,1,2,4,1,1,2,2,11,2,1,4,7,4,6,1,7,1,4,2,1,5,2,5,6,1,5,2,1,1,5,1,1,1,1,5,1,1,3,2,9,6,1,3,4,11,1,1,4,1,2,6,1,2,1,1,3,1,1,1,1,1,2,7,6,2,1,3,9,1,1,2,2]
(36,67)
長さがn+1, 総和が3nの正の整数の列が入力されます
その連続する部分列で総和がnまたは2nであるものを見つけ、その先頭と最後のindexの組み(indexは1〜n+1とする)を返す関数を作ってください
存在しない時は(-1,-1)を返して下さい
備考 総当たりでも列の長さnに対して計算量はn²オーダーですが、線形オーダーの解があります(四則演算等をO(1)として)
例
[4,1,2,3,3,2]
(3,4)
[3,2,1,3,2,3,4,3,1,4,4]
(6,8)
[3,9,1,1,1,2,5,4,3,5,4,2,1,10,3,4,2,7,1,5,1,2,3,3,1,1,1,1,3,1,2,4,1,1,2,2,11,2,1,4,7,4,6,1,7,1,4,2,1,5,2,5,6,1,5,2,1,1,5,1,1,1,1,5,1,1,3,2,9,6,1,3,4,11,1,1,4,1,2,6,1,2,1,1,3,1,1,1,1,1,2,7,6,2,1,3,9,1,1,2,2]
(36,67)
587デフォルトの名無しさん
2023/04/05(水) 20:56:42.55ID:hXUfkOct 簡単すぎる
他の人どうぞ
他の人どうぞ
588デフォルトの名無しさん
2023/04/05(水) 21:33:05.46ID:9gh0I7vV 2^(2^(2^(2^(2^(2^2)))))
を10進数で先頭から100桁を出力する方法は?
を10進数で先頭から100桁を出力する方法は?
589デフォルトの名無しさん
2023/04/05(水) 21:40:43.46ID:hXUfkOct 1桁でも無理
590デフォルトの名無しさん
2023/04/09(日) 16:16:32.45ID:Hy4gOb3Q お題
4つの数字a,b,c,dが複数個入力されます
入力
0, 1, 1, 1
0, 0, 0, 0
1, 0, 0, 1
1, 0, 1, 0
0, 0, 0, 1
0, 0, 1, 1
1, 1, 1, 0
1, 0, 0, 0
1, 1, 1, 1
0, 1, 1, 0
1, 1, 0, 0
1, 0, 1, 1
0, 1, 0, 1
1, 1, 0, 1
0, 0, 1, 0
0, 1, 0, 0
次の条件でソートして出力してください
dの昇順
, bの降順
, cの昇順
, aの降順
出力
1, 1, 0, 0
0, 1, 0, 0
1, 1, 1, 0
0, 1, 1, 0
1, 0, 0, 0
0, 0, 0, 0
1, 0, 1, 0
0, 0, 1, 0
1, 1, 0, 1
0, 1, 0, 1
1, 1, 1, 1
0, 1, 1, 1
1, 0, 0, 1
0, 0, 0, 1
1, 0, 1, 1
0, 0, 1, 1
4つの数字a,b,c,dが複数個入力されます
入力
0, 1, 1, 1
0, 0, 0, 0
1, 0, 0, 1
1, 0, 1, 0
0, 0, 0, 1
0, 0, 1, 1
1, 1, 1, 0
1, 0, 0, 0
1, 1, 1, 1
0, 1, 1, 0
1, 1, 0, 0
1, 0, 1, 1
0, 1, 0, 1
1, 1, 0, 1
0, 0, 1, 0
0, 1, 0, 0
次の条件でソートして出力してください
dの昇順
, bの降順
, cの昇順
, aの降順
出力
1, 1, 0, 0
0, 1, 0, 0
1, 1, 1, 0
0, 1, 1, 0
1, 0, 0, 0
0, 0, 0, 0
1, 0, 1, 0
0, 0, 1, 0
1, 1, 0, 1
0, 1, 0, 1
1, 1, 1, 1
0, 1, 1, 1
1, 0, 0, 1
0, 0, 0, 1
1, 0, 1, 1
0, 0, 1, 1
591デフォルトの名無しさん
2023/04/09(日) 19:47:50.00ID:ha0YD44C592デフォルトの名無しさん
2023/04/09(日) 19:53:31.67ID:fcL4nlHr593デフォルトの名無しさん
2023/04/09(日) 22:47:43.52ID:9X2mZ6aY594デフォルトの名無しさん
2023/04/12(水) 02:41:24.12ID:1sJZVfCp595デフォルトの名無しさん
2023/04/12(水) 12:53:01.20ID:XUdaOkVA お題 何通り?
黒玉 b 個、赤玉 r 個、白玉 w 個が入ってる袋の中から玉を一個ずつ取り出し、取り出した玉を順に横一列に b+r+w 個すべて並べる。
どの黒玉同士も隣り合わず、どの赤玉同士も隣り合わない数を求めよ
例
( b, r, w ) = ( 1,2,2)
→ 18
( b, r, w ) = ( 1,2,3 )
→ 40
( b, r, w ) = ( 3,4,5 )
→ 4326
( b, r, w ) = ( 12,34,56 )
→ 138961718287080638152811314224672
( b, r, w ) = ( 1, 2, 2 )の場合の18通り
["BRWRW","BRWWR","BWRWR","RBRWW","RBWRW","RBWWR","RWBRW","RWBWR","RWRBW","RWRWB","RWWBR","RWWRB","WBRWR","WRBRW","WRBWR","WRWBR","WRWRB","WWRBR"]
黒玉 b 個、赤玉 r 個、白玉 w 個が入ってる袋の中から玉を一個ずつ取り出し、取り出した玉を順に横一列に b+r+w 個すべて並べる。
どの黒玉同士も隣り合わず、どの赤玉同士も隣り合わない数を求めよ
例
( b, r, w ) = ( 1,2,2)
→ 18
( b, r, w ) = ( 1,2,3 )
→ 40
( b, r, w ) = ( 3,4,5 )
→ 4326
( b, r, w ) = ( 12,34,56 )
→ 138961718287080638152811314224672
( b, r, w ) = ( 1, 2, 2 )の場合の18通り
["BRWRW","BRWWR","BWRWR","RBRWW","RBWRW","RBWWR","RWBRW","RWBWR","RWRBW","RWRWB","RWWBR","RWWRB","WBRWR","WRBRW","WRBWR","WRWBR","WRWRB","WWRBR"]
596デフォルトの名無しさん
2023/04/12(水) 14:41:48.33ID:KpWDuFOt こういうの、中学の時に散々やった
597デフォルトの名無しさん
2023/04/13(木) 01:54:06.79ID:o3x890Fi >>595
Kotlin
これは馬鹿正直に並べ替えてるだけなので多くなると結果が中々出ないだけでなくメモリが足りなくなって終わるかも知れない。
https://paiza.io/projects/GIJzZldH4F366cas93uAzg
Kotlin
これは馬鹿正直に並べ替えてるだけなので多くなると結果が中々出ないだけでなくメモリが足りなくなって終わるかも知れない。
https://paiza.io/projects/GIJzZldH4F366cas93uAzg
598デフォルトの名無しさん
2023/04/13(木) 04:34:12.97ID:/t/rlj3C599デフォルトの名無しさん
2023/04/13(木) 17:25:16.88ID:oUlx2lX+ この問題よくある「受験問題計算機で解こう」です
元ネタは今年の東大理系[2]が(b,r,w) = (3,4,5)の場合、もちろん元の問題は「手計算で解け」
https://youtu.be/KAJpzptO5Ws
なのでうまく立式すると(b,r,w) = (3,4,5)程度なら手計算でも解けます、計算機ならこの程度なら全数でも27720通りのうちの4326通りなのでいけます
( b, r, w ) = ( 12,34,56 )あたりだと総当たりするのは難しくなります
ちなみにn = b+r+wについて計算量がO(n²⁺ᵉ)のオーダーの解があります
というか普通に動画のように解いた時の一番素直な解法がO(n²⁺ᵉ)オーダーになります
もっと早いのあるかもしれませんけど
元ネタは今年の東大理系[2]が(b,r,w) = (3,4,5)の場合、もちろん元の問題は「手計算で解け」
https://youtu.be/KAJpzptO5Ws
なのでうまく立式すると(b,r,w) = (3,4,5)程度なら手計算でも解けます、計算機ならこの程度なら全数でも27720通りのうちの4326通りなのでいけます
( b, r, w ) = ( 12,34,56 )あたりだと総当たりするのは難しくなります
ちなみにn = b+r+wについて計算量がO(n²⁺ᵉ)のオーダーの解があります
というか普通に動画のように解いた時の一番素直な解法がO(n²⁺ᵉ)オーダーになります
もっと早いのあるかもしれませんけど
600デフォルトの名無しさん
2023/04/13(木) 18:39:05.80ID:gLPq3xqA 全然違うアプローチで解いた
乗算やCombinationの計算オーダーをどう考えてるか知らないけど、
シンプルな2重ループの中身がCombination、2のn乗、乗算、加減算だけだから、
Combinationを毎回単純に計算してもO(n^4 log(n))
工夫すればO(n^3 log(n))になる
乗算やCombinationの計算オーダーをどう考えてるか知らないけど、
シンプルな2重ループの中身がCombination、2のn乗、乗算、加減算だけだから、
Combinationを毎回単純に計算してもO(n^4 log(n))
工夫すればO(n^3 log(n))になる
601デフォルトの名無しさん
2023/04/14(金) 16:38:26.25ID:KAnE9iae 動画の方法の計算量は高々O(n²⁺ᵉ)なのはすぐ言えます
ここでの計算量は普通の固定長のレジスタしか持たない計算機で計算した場合の計算回数
動画の計算は0<b≦rのときは
Σ[ k:1〜b ]C[ b-1, k-1 ]C[ w+1, k ]C[ k+w+1, w+b+1-r ]
( ただしm<0,m>nのときはC[ m,n ] = 0とする )
で漏れなくダブりなく計算できるというやつ
これの計算量ですが
①ループはb≦nなのでO(n)回
②計算で出てくる数値の大きさは大体指数オーダーなので桁数はO(n¹⁺ᵉ)オーダー
③3つあるCの計算は漸化式使って前で求めた値にそれぞれ掛け算1回、割り算1回で求まるので桁数がO(n¹⁺ᵉ)だからO(n¹⁺ᵉ)オーダーで計算可能、それを掛け算2回して累計 に足すだけなので結局ループ1回の計算量はO(n¹⁺ᵉ)オーダー
④総計算量は結局高々O(n²⁺ᵉ)オーダー
Σの各項は階乗がたくさん出る形なのでBinary splittingとか使ったら早くなる可能性もあるけど、流石に暇つぶしにそこまでやる気は出ない
ここでの計算量は普通の固定長のレジスタしか持たない計算機で計算した場合の計算回数
動画の計算は0<b≦rのときは
Σ[ k:1〜b ]C[ b-1, k-1 ]C[ w+1, k ]C[ k+w+1, w+b+1-r ]
( ただしm<0,m>nのときはC[ m,n ] = 0とする )
で漏れなくダブりなく計算できるというやつ
これの計算量ですが
①ループはb≦nなのでO(n)回
②計算で出てくる数値の大きさは大体指数オーダーなので桁数はO(n¹⁺ᵉ)オーダー
③3つあるCの計算は漸化式使って前で求めた値にそれぞれ掛け算1回、割り算1回で求まるので桁数がO(n¹⁺ᵉ)だからO(n¹⁺ᵉ)オーダーで計算可能、それを掛け算2回して累計 に足すだけなので結局ループ1回の計算量はO(n¹⁺ᵉ)オーダー
④総計算量は結局高々O(n²⁺ᵉ)オーダー
Σの各項は階乗がたくさん出る形なのでBinary splittingとか使ったら早くなる可能性もあるけど、流石に暇つぶしにそこまでやる気は出ない
602デフォルトの名無しさん
2023/04/14(金) 16:42:45.21ID:KAnE9iae Cの但し書き逆 orz
C[ m, n ] = 0 if n < 0 or n > m
でつ
C[ m, n ] = 0 if n < 0 or n > m
でつ
603デフォルトの名無しさん
2023/04/14(金) 18:34:45.76ID:rZCGb039 eはεか
2.718... かと思って、えらい遅いなあと思ってしまった
桁数はn log n 程度、乗除算の定数の桁数がlog nだから、
だいたい n^2 (log n)^2 くらい
2.718... かと思って、えらい遅いなあと思ってしまった
桁数はn log n 程度、乗除算の定数の桁数がlog nだから、
だいたい n^2 (log n)^2 くらい
604デフォルトの名無しさん
2023/04/14(金) 19:30:49.02ID:FnL8j1Jt そうそう、上つきのεが出ないのでeで代用しました
明示しとくべきでした
そもそも計算過程でO(exp(n))オーダーちょいの数扱わざるを得ないしO(n)より真に小さいオーダーのループも無理っぽいのでO(n²⁺ᵉ)より劇的に早くするのは無理ではなかろかと思う今日この頃
明示しとくべきでした
そもそも計算過程でO(exp(n))オーダーちょいの数扱わざるを得ないしO(n)より真に小さいオーダーのループも無理っぽいのでO(n²⁺ᵉ)より劇的に早くするのは無理ではなかろかと思う今日この頃
605デフォルトの名無しさん
2023/04/17(月) 12:15:45.96ID:0+VsNbTw お題 何通り?
黒玉 b 個、赤玉 r 個、白玉 w 個が入ってる袋の中から玉を一個ずつ取り出し、取り出した玉を順に横一列に b+r+w 個すべて並べる。
どの黒玉同士も隣り合わず、どの赤玉同士も隣り合わず、どの白玉同士も隣り合わない数を求めよ
黒玉 b 個、赤玉 r 個、白玉 w 個が入ってる袋の中から玉を一個ずつ取り出し、取り出した玉を順に横一列に b+r+w 個すべて並べる。
どの黒玉同士も隣り合わず、どの赤玉同士も隣り合わず、どの白玉同士も隣り合わない数を求めよ
606デフォルトの名無しさん
2023/04/18(火) 20:26:54.25ID:ZdFu9SM3 オリジナル問題をほんの少し変えただけなんだけど
解き方の解説動画がない問題には回答出来ない人なのかな?
解き方の解説動画がない問題には回答出来ない人なのかな?
607デフォルトの名無しさん
2023/04/19(水) 10:51:18.73ID:vlbinbz4608デフォルトの名無しさん
2023/04/19(水) 23:01:33.08ID:6dkgbtB2 >>605
Kotlin
前回のプログラムを修正して入力の最初の値として 0 または 0 以外を受け付けるようにして、
それが 0 だったら前回と同じ動作(Wは連続して良い)、0以外だったら今回のお題の動作(連続不可)
になるようにした。
https://paiza.io/projects/YHo1f9RRZcJ5qWeKjh4A5A
Kotlin
前回のプログラムを修正して入力の最初の値として 0 または 0 以外を受け付けるようにして、
それが 0 だったら前回と同じ動作(Wは連続して良い)、0以外だったら今回のお題の動作(連続不可)
になるようにした。
https://paiza.io/projects/YHo1f9RRZcJ5qWeKjh4A5A
609デフォルトの名無しさん
2023/04/20(木) 16:05:31.06ID:6lEemSZE >>605
haskell
https://ideone.com/eoDuMc
アルゴリズムは何も変わってないんだけどGHCという一番メジャーなhaskell コンパイラはソースでユニコード文字で処理してるので変数名に漢字とか使えてちょっと面白いんですけど試しr̅みたいな合字やってみたら使えました、まぁそりゃ使えるだろって話なんですけど
ちょっとコードの見た目が全然違って楽しい
haskell
https://ideone.com/eoDuMc
アルゴリズムは何も変わってないんだけどGHCという一番メジャーなhaskell コンパイラはソースでユニコード文字で処理してるので変数名に漢字とか使えてちょっと面白いんですけど試しr̅みたいな合字やってみたら使えました、まぁそりゃ使えるだろって話なんですけど
ちょっとコードの見た目が全然違って楽しい
610デフォルトの名無しさん
2023/04/23(日) 16:27:41.83ID:Gk05N8zk テトリスで任意の模様を作成可能か
611デフォルトの名無しさん
2023/04/24(月) 12:22:06.49ID:qM/Ri5Lg NO
612デフォルトの名無しさん
2023/04/25(火) 23:39:05.78ID:IsvU68XT お題
上半分と下半分にそれぞれ文字列が書かれたカードがN枚ある。
カードiの上半分の文字列をx_i、下半分の文字列をy_iとする。
カードを何枚か選び横一列に並べ、上側と下側でそれぞれ文字列を結合する。
カードを上手く選ぶことで上側と下側の文字列を一致させることが可能か?
ただし、同じカードを2回以上使用しても良い。
上半分と下半分にそれぞれ文字列が書かれたカードがN枚ある。
カードiの上半分の文字列をx_i、下半分の文字列をy_iとする。
カードを何枚か選び横一列に並べ、上側と下側でそれぞれ文字列を結合する。
カードを上手く選ぶことで上側と下側の文字列を一致させることが可能か?
ただし、同じカードを2回以上使用しても良い。
613デフォルトの名無しさん
2023/04/25(火) 23:50:59.14ID:W7Q84ofX >>612
言ってる意味がよく分からない。そのカードは上下で分離できるものなのか?
言ってる意味がよく分からない。そのカードは上下で分離できるものなのか?
614デフォルトの名無しさん
2023/04/26(水) 13:54:14.97ID:rSRQIU87 お題出すならまず自分で解答作ってそれに何個か入力してどんな出力になるのか例示しとくべき
そもそももちろん日本語で他人に伝わる仕様書書けないようでは話にならんのだけど
そもそももちろん日本語で他人に伝わる仕様書書けないようでは話にならんのだけど
615デフォルトの名無しさん
2023/04/26(水) 22:38:58.02ID:gYCG8z6s 問いは「可能か?」
答えは「可能(例:全て同一の文字列とする)」
以上
答えは「可能(例:全て同一の文字列とする)」
以上
616デフォルトの名無しさん
2023/04/27(木) 14:44:36.68ID:G4fBhDOx 自分でできてないなら出すな
以上
以上
617デフォルトの名無しさん
2023/04/27(木) 23:16:52.66ID:wlT8UOG8 ちょっと誰か >>612 を ChatGPT にコピペして入力してどう答えるか試してみ
618デフォルトの名無しさん
2023/04/27(木) 23:24:12.73ID:6BBE08oV はい、上側と下側の文字列を一致させることが可能です。
以下の手順で可能です。
カードの上半分の文字列x_iをすべて結合すると文字列Xが得られます。
カードの下半分の文字列y_iをすべて結合すると文字列Yが得られます。
文字列Xと文字列Yを逆順に結合した文字列Z = X + Y'を考えます。ここでY'は文字列Yを逆順にしたものです。
Zの中央にあるカードを選びます。つまり、Zを左右に分割するときに真ん中にあるカードです。
このカードを選ぶことで、上側の文字列をカードの上半分の文字列に、下側の文字列をカードの下半分の文字列にすることができます。
残りのカードに対して、上側と下側で同じ文字列を選びます。このとき、カードを上下反転させたものを選ぶことで、
上側と下側で同じ文字列を選ぶことができます。
こうして選んだカードを横一列に並べることで、上側と下側の文字列を一致させることができます。
具体的には、以下の手順で解くことができます。
カードの上半分の文字列x_iをすべて結合すると文字列Xが得られます。
カードの下半分の文字列y_iをすべて結合すると文字列Yが得られます。
文字列Xと文字列YのLCSを求めます。LCSを求めるアルゴリズムには、動的計画法が使われます。
LCSを構成する文字列を上側と下側の文字列に選びます。このとき、同じ文字列を複数回選ぶことができるので、
LCSの中に同じ文字列が複数回現れる場合には、その文字列を選ぶことができます。
残りのカードに対して、上側と下側でLCSに現れない文字列を選びます。同じ文字列を複数回使用することができるので、
LCSに現れない文字列を上側と下側で同じように選ぶことができます。
こうして選んだカードを横一列に並べることで、上側と下側の文字列を一致させることができます。
このアルゴリズムの時間計算量は、文字列Xと文字列Yの長さの合計をNとした場合、O(N^2)です。
LCSを求める動的計画法の時間計算量はO(N^2)であり、残りの処理の時間計算量もO(N^2)です。したがって、全体としての時間計算量はO(N^2)となります。
以下の手順で可能です。
カードの上半分の文字列x_iをすべて結合すると文字列Xが得られます。
カードの下半分の文字列y_iをすべて結合すると文字列Yが得られます。
文字列Xと文字列Yを逆順に結合した文字列Z = X + Y'を考えます。ここでY'は文字列Yを逆順にしたものです。
Zの中央にあるカードを選びます。つまり、Zを左右に分割するときに真ん中にあるカードです。
このカードを選ぶことで、上側の文字列をカードの上半分の文字列に、下側の文字列をカードの下半分の文字列にすることができます。
残りのカードに対して、上側と下側で同じ文字列を選びます。このとき、カードを上下反転させたものを選ぶことで、
上側と下側で同じ文字列を選ぶことができます。
こうして選んだカードを横一列に並べることで、上側と下側の文字列を一致させることができます。
具体的には、以下の手順で解くことができます。
カードの上半分の文字列x_iをすべて結合すると文字列Xが得られます。
カードの下半分の文字列y_iをすべて結合すると文字列Yが得られます。
文字列Xと文字列YのLCSを求めます。LCSを求めるアルゴリズムには、動的計画法が使われます。
LCSを構成する文字列を上側と下側の文字列に選びます。このとき、同じ文字列を複数回選ぶことができるので、
LCSの中に同じ文字列が複数回現れる場合には、その文字列を選ぶことができます。
残りのカードに対して、上側と下側でLCSに現れない文字列を選びます。同じ文字列を複数回使用することができるので、
LCSに現れない文字列を上側と下側で同じように選ぶことができます。
こうして選んだカードを横一列に並べることで、上側と下側の文字列を一致させることができます。
このアルゴリズムの時間計算量は、文字列Xと文字列Yの長さの合計をNとした場合、O(N^2)です。
LCSを求める動的計画法の時間計算量はO(N^2)であり、残りの処理の時間計算量もO(N^2)です。したがって、全体としての時間計算量はO(N^2)となります。
619デフォルトの名無しさん
2023/04/27(木) 23:45:06.42ID:pA6narNs お題:立方体の頂点x,y,zを格納する配列がある。
ある面の頂点が4つ与えられるのでその頂点をコピーしてx軸上に少し移動させる。
与えられた頂点とコピーした頂点で、3点を結んで面を構築し立方体を表現する頂点のインデックスの配列を生成せよ。
(結果的に立方体の横に新しい立方体ができることがある)
頂点の配列は一次元の実数の配列でx,y,z,x,y,z,というふうに要素が並んでいる。
インデックスの配列も整数の一次元で3点をa,b,cとするとa,b,c,a,b,cというふうに並ぶ。
座標系は右手座標系とする。
頂点は左回りが表面とする。
ある面の頂点が4つ与えられるのでその頂点をコピーしてx軸上に少し移動させる。
与えられた頂点とコピーした頂点で、3点を結んで面を構築し立方体を表現する頂点のインデックスの配列を生成せよ。
(結果的に立方体の横に新しい立方体ができることがある)
頂点の配列は一次元の実数の配列でx,y,z,x,y,z,というふうに要素が並んでいる。
インデックスの配列も整数の一次元で3点をa,b,cとするとa,b,c,a,b,cというふうに並ぶ。
座標系は右手座標系とする。
頂点は左回りが表面とする。
620デフォルトの名無しさん
2023/04/28(金) 00:03:21.44ID:lDiXy321 出題ミスりました
ごめんちゃい
ごめんちゃい
621デフォルトの名無しさん
2023/04/28(金) 11:21:29.27ID:PxvXnl2U なんで自分で組んでみてから出題しないんだろう?
622デフォルトの名無しさん
2023/04/30(日) 20:51:55.51ID:19p6IWVT お題
A、B、C、D、Eの5人が前を向いて横一列に座っている。以下は、異なる5人の発言である。
ア メガネをかけている人は、私の左隣に座っている。
イ 私の右隣にはCが座っている。
ウ 私から右に3番目にはAが座っている。
エ 私の左隣にはB、Bから左に2番目にCが座っている。
オ 私の左隣にはDが座っている。
5人のうち1人だけがメガネをかけているとしたら、それは誰か。
A、B、C、D、Eの5人が前を向いて横一列に座っている。以下は、異なる5人の発言である。
ア メガネをかけている人は、私の左隣に座っている。
イ 私の右隣にはCが座っている。
ウ 私から右に3番目にはAが座っている。
エ 私の左隣にはB、Bから左に2番目にCが座っている。
オ 私の左隣にはDが座っている。
5人のうち1人だけがメガネをかけているとしたら、それは誰か。
623デフォルトの名無しさん
2023/04/30(日) 21:48:41.86ID:ZZzyWIF2 お題……?
624デフォルトの名無しさん
2023/04/30(日) 21:57:15.12ID:HY/OhQ92 このタイミングだと嫌儲からコピペだろうなあ
625デフォルトの名無しさん
2023/04/30(日) 22:27:50.40ID:3Dh4f3TB ECDBA
イウアオエ
イウアオエ
626デフォルトの名無しさん
2023/05/01(月) 12:33:57.06ID:WH7Mepuq627デフォルトの名無しさん
2023/05/01(月) 12:39:19.81ID:uALURsVT 証明支援言語ってこういう問題にも使えるのかな
628デフォルトの名無しさん
2023/05/01(月) 12:40:30.40ID:uALURsVT >>626
なんじゃこれすげえ
なんじゃこれすげえ
629デフォルトの名無しさん
2023/05/01(月) 16:21:07.51ID:+96+d68c Prologおじさんの大好物だろうけどさすがにもう絶滅したか
630デフォルトの名無しさん
2023/05/01(月) 23:58:39.74ID:O2/WfmSw よく見たら総当りしてるだけだった🥺
631デフォルトの名無しさん
2023/05/03(水) 19:34:29.78ID:swhBFkse お題
最長重複文字列を求めてください
入力: mississippi
出力: issi
最長重複文字列を求めてください
入力: mississippi
出力: issi
632デフォルトの名無しさん
2023/05/03(水) 21:54:26.00ID:oXOwbOLg >>631
PowerShell
$s = "mississippi"
$n = $s.length - 1
$t = $u = ""
foreach ($i in 1..$n) {
$t += ((0..$n |% {("-", "#")[$s[$_] -ceq $s[$_ + $i]]}) -join "") + "`n"
$u += ($s[$i..$n + 0..($i - 1)] -join "") + "`n"
}
foreach ($i in $n..1) {
if (!($matches = [regex]::matches($t, "#" * $i)).count) {continue}
$matches |% {$u[$_.index..($_.index + $i - 1)] -join ""}
break
}
PowerShell
$s = "mississippi"
$n = $s.length - 1
$t = $u = ""
foreach ($i in 1..$n) {
$t += ((0..$n |% {("-", "#")[$s[$_] -ceq $s[$_ + $i]]}) -join "") + "`n"
$u += ($s[$i..$n + 0..($i - 1)] -join "") + "`n"
}
foreach ($i in $n..1) {
if (!($matches = [regex]::matches($t, "#" * $i)).count) {continue}
$matches |% {$u[$_.index..($_.index + $i - 1)] -join ""}
break
}
633デフォルトの名無しさん
2023/05/04(木) 13:03:48.76ID:RYbIzcoN634デフォルトの名無しさん
2023/05/04(木) 15:56:11.94ID:RYbIzcoN お題
いろはに王国の国民はみな、氏・ミドルネーム・名を持つ
いろはに政府のマイナンバーシステムでは
氏・ミドルネーム・名
をそれぞれ別項目に保存するはずであったが
氏+ミドルネーム+名の処理が行われて一つの項目に保存されてしまっていた
政府とシステム開発会社のコミュニケーション不足が原因と思われる
再発防止をお願いした
さて、とある国民の名前が「いろはにほ」で保存されていた
この国民の名前を氏・ミドルネーム・名に分割するとき
考えられる分割の仕方をすべて列挙してください
例:
い・ろ・はにほ
い・ろは・にほ
い・ろはに・ほ
いろ・は・にほ
いろ・はに・ほ
いろは・に・ほ
いろはに王国の国民はみな、氏・ミドルネーム・名を持つ
いろはに政府のマイナンバーシステムでは
氏・ミドルネーム・名
をそれぞれ別項目に保存するはずであったが
氏+ミドルネーム+名の処理が行われて一つの項目に保存されてしまっていた
政府とシステム開発会社のコミュニケーション不足が原因と思われる
再発防止をお願いした
さて、とある国民の名前が「いろはにほ」で保存されていた
この国民の名前を氏・ミドルネーム・名に分割するとき
考えられる分割の仕方をすべて列挙してください
例:
い・ろ・はにほ
い・ろは・にほ
い・ろはに・ほ
いろ・は・にほ
いろ・はに・ほ
いろは・に・ほ
635デフォルトの名無しさん
2023/05/04(木) 19:39:10.82ID:YUvdE+K0 例をコピペ出力するだけでOKなのでそれより長いプログラムは冗長
むしろ出題からして最後の部分以外不要なのを踏まえてそこを楽しむべきかもしれない
むしろ出題からして最後の部分以外不要なのを踏まえてそこを楽しむべきかもしれない
636蟻人間 ◆T6xkBnTXz7B0
2023/05/04(木) 19:44:38.00ID:7cs6Lag7 お題: 直方体の段ボール箱の幅・高さ・奥行きがcm単位で指定される。その段ボール箱の展開図をSVG形式で出力せよ。
637蟻人間 ◆T6xkBnTXz7B0
2023/05/04(木) 20:16:34.04ID:7cs6Lag7638638
2023/05/05(金) 15:50:16.77ID:ZEoAaBzl >>631 Perl5
$len = length ($s = 'mississippi');
for $a (0..$len-2) {
for $l (1..$len-$a) {
$t = substr($s, $a, $l);
$b = index($s, $t, $a+1);
$h{length $t} = $t if 0 <= $b
}
}
print $h{(sort keys %h)[-1]}, "\n";
注: インデントは全角スペースに置換してあります
実行結果
~ $ perl 21_631_mississippi.pl
issi
$len = length ($s = 'mississippi');
for $a (0..$len-2) {
for $l (1..$len-$a) {
$t = substr($s, $a, $l);
$b = index($s, $t, $a+1);
$h{length $t} = $t if 0 <= $b
}
}
print $h{(sort keys %h)[-1]}, "\n";
注: インデントは全角スペースに置換してあります
実行結果
~ $ perl 21_631_mississippi.pl
issi
639デフォルトの名無しさん
2023/05/05(金) 20:55:42.28ID:NSI8td4c640デフォルトの名無しさん
2023/05/05(金) 22:37:41.22ID:2BqfMj91641デフォルトの名無しさん
2023/05/05(金) 23:20:24.37ID:ZEoAaBzl >>638
重複を検出した文字の長さが二けた以上になる場合にも対応させるには
print $h{(sort keys %h)[-1]}, "\n";
↓
print $h{(sort{$a <=> $b} keys %h)[-1]}, "\n";
だな。
重複を検出した文字の長さが二けた以上になる場合にも対応させるには
print $h{(sort keys %h)[-1]}, "\n";
↓
print $h{(sort{$a <=> $b} keys %h)[-1]}, "\n";
だな。
642634
2023/05/05(金) 23:33:20.01ID:i3ZizMLE >>640
そんなに簡単に解かれるとは思ってなかった
王国の話に引っ張られて解けない人いるかもと思ってた
3分割に限定したのが良くなかったかも
お題
文字列の分割パターンを全部列挙してください
入力: いろはにほ
出力:
い・ろ・は・に・ほ
い・ろ・は・にほ
い・ろ・はに・ほ
い・ろ・はにほ
い・ろは・に・ほ
い・ろは・にほ
い・ろはに・ほ
い・ろはにほ
いろ・は・に・ほ
いろ・は・にほ
いろ・はに・ほ
いろ・はにほ
いろは・に・ほ
いろは・にほ
いろはに・ほ
いろはにほ
そんなに簡単に解かれるとは思ってなかった
王国の話に引っ張られて解けない人いるかもと思ってた
3分割に限定したのが良くなかったかも
お題
文字列の分割パターンを全部列挙してください
入力: いろはにほ
出力:
い・ろ・は・に・ほ
い・ろ・は・にほ
い・ろ・はに・ほ
い・ろ・はにほ
い・ろは・に・ほ
い・ろは・にほ
い・ろはに・ほ
い・ろはにほ
いろ・は・に・ほ
いろ・は・にほ
いろ・はに・ほ
いろ・はにほ
いろは・に・ほ
いろは・にほ
いろはに・ほ
いろはにほ
643638
2023/05/06(土) 00:28:50.96ID:vZgCL7uL >>642 Perl5
use utf8;
binmode STDOUT => "utf8";
use feature qw{:5.16 signatures say};
say for sub($a, @b) {
if (@b) {
my @s = __SUB__->(@b);
(map{"$a・$_"} @s), (map{"$a$_"} @s);
} else { $a }
}->(split'', 'いろはにほ');
※インデントは全角スペースに置換してあります。
perl5の__SUB__は、5.16以降で使用可能な「現在の関数(この場合無名関数)のリファレンス」
実行結果
~ $ perl 21_642_いろはにほ.pl
い・ろ・は・に・ほ
い・ろ・は・にほ
い・ろ・はに・ほ
い・ろ・はにほ
い・ろは・に・ほ
い・ろは・にほ
い・ろはに・ほ
い・ろはにほ
いろ・は・に・ほ
いろ・は・にほ
いろ・はに・ほ
いろ・はにほ
いろは・に・ほ
いろは・にほ
いろはに・ほ
いろはにほ
use utf8;
binmode STDOUT => "utf8";
use feature qw{:5.16 signatures say};
say for sub($a, @b) {
if (@b) {
my @s = __SUB__->(@b);
(map{"$a・$_"} @s), (map{"$a$_"} @s);
} else { $a }
}->(split'', 'いろはにほ');
※インデントは全角スペースに置換してあります。
perl5の__SUB__は、5.16以降で使用可能な「現在の関数(この場合無名関数)のリファレンス」
実行結果
~ $ perl 21_642_いろはにほ.pl
い・ろ・は・に・ほ
い・ろ・は・にほ
い・ろ・はに・ほ
い・ろ・はにほ
い・ろは・に・ほ
い・ろは・にほ
い・ろはに・ほ
い・ろはにほ
いろ・は・に・ほ
いろ・は・にほ
いろ・はに・ほ
いろ・はにほ
いろは・に・ほ
いろは・にほ
いろはに・ほ
いろはにほ
644デフォルトの名無しさん
2023/05/06(土) 03:38:46.54ID:FFZq2N9u645デフォルトの名無しさん
2023/05/06(土) 10:49:16.05ID:5AOK1X8m >>642
PowerShell 3以上 (文字列は32文字以下とする)
$s = "いろはにほ"
$n = $s.length - 1
foreach ($i in 0..((1 -shl $n) - 1)) {
(0..$n |% {$s[$_], "・"[!($i -band (1 -shl $_))]}) -join ""
}
[実行結果]
いろはにほ
い・ろはにほ
いろ・はにほ
い・ろ・はにほ
いろは・にほ
い・ろは・にほ
いろ・は・にほ
い・ろ・は・にほ
いろはに・ほ
い・ろはに・ほ
いろ・はに・ほ
い・ろ・はに・ほ
いろは・に・ほ
い・ろは・に・ほ
いろ・は・に・ほ
い・ろ・は・に・ほ
PowerShell 3以上 (文字列は32文字以下とする)
$s = "いろはにほ"
$n = $s.length - 1
foreach ($i in 0..((1 -shl $n) - 1)) {
(0..$n |% {$s[$_], "・"[!($i -band (1 -shl $_))]}) -join ""
}
[実行結果]
いろはにほ
い・ろはにほ
いろ・はにほ
い・ろ・はにほ
いろは・にほ
い・ろは・にほ
いろ・は・にほ
い・ろ・は・にほ
いろはに・ほ
い・ろはに・ほ
いろ・はに・ほ
い・ろ・はに・ほ
いろは・に・ほ
い・ろは・に・ほ
いろ・は・に・ほ
い・ろ・は・に・ほ
646デフォルトの名無しさん
2023/05/07(日) 06:28:33.03ID:FtrFphzu647デフォルトの名無しさん
2023/05/07(日) 17:24:01.83ID:UIWGws2E648デフォルトの名無しさん
2023/05/12(金) 00:04:09.01ID:i1xOndM3 お題
次のように定義される関数f(x,y)を実装せよ。
x==0のとき:f(0,y):=y+1
y==0のとき:f(x,0):=f(x-1,1)
それ以外のとき:f(x,y):=f(x-1,f(x,y-1))
また以下の値を計算せよ。
f(1,1)
f(2,3)
f(3,4)
f(4,1)
f(4,2)
次のように定義される関数f(x,y)を実装せよ。
x==0のとき:f(0,y):=y+1
y==0のとき:f(x,0):=f(x-1,1)
それ以外のとき:f(x,y):=f(x-1,f(x,y-1))
また以下の値を計算せよ。
f(1,1)
f(2,3)
f(3,4)
f(4,1)
f(4,2)
649デフォルトの名無しさん
2023/05/12(金) 00:10:00.43ID:roSWG4E/ 罠かな
650デフォルトの名無しさん
2023/05/12(金) 17:49:03.47ID:x+yBqAtm アッカーマン関数?
651デフォルトの名無しさん
2023/05/12(金) 17:59:41.22ID:x+yBqAtm 世の中にはもっとずっと急激に増加する関数があるんだよね
増加が速過ぎて、宇宙中のリソースを使ってもコンピューター言語では記述不可能
増加が速過ぎて、宇宙中のリソースを使ってもコンピューター言語では記述不可能
652デフォルトの名無しさん
2023/05/12(金) 18:17:41.52ID:S6WSdC9T >>648
メモ化してもf(4, 2)でスタックオーバーフローしたわ
メモ化してもf(4, 2)でスタックオーバーフローしたわ
653デフォルトの名無しさん
2023/05/12(金) 20:14:17.32ID:YXrNhaWW yはループでやれよ
654デフォルトの名無しさん
2023/05/12(金) 20:24:24.18ID:Or0Z5F6h PowerShell 3以上 (x, yは0以上の整数とする)
function hyper($n, $a, $b)
{
if ($n -eq 0) {return $b + 1}
if ($n -eq 1) {return $a + $b}
if ($n -eq 2) {return $a * $b}
if ($n -eq 3) {return [BigInt]::pow($a, $b)}
$c = 1
1..[Int]$b |% {$c = hyper ($n - 1) $a $c}
$c
}
function f($x, $y)
{
(hyper $x 2 ($y + 3)) - 3
}
((1,1),(2,3),(3,4),(4,1),(4,2)) |% {"f($($_[0]), $($_[1])) = $(f $_[0] $_[1])"}
[実行結果]
f(1, 1) = 3
f(2, 3) = 9
f(3, 4) = 125
f(4, 1) = 65533
f(4, 2) = 2003529930…(19709桁省略)…5719156733
function hyper($n, $a, $b)
{
if ($n -eq 0) {return $b + 1}
if ($n -eq 1) {return $a + $b}
if ($n -eq 2) {return $a * $b}
if ($n -eq 3) {return [BigInt]::pow($a, $b)}
$c = 1
1..[Int]$b |% {$c = hyper ($n - 1) $a $c}
$c
}
function f($x, $y)
{
(hyper $x 2 ($y + 3)) - 3
}
((1,1),(2,3),(3,4),(4,1),(4,2)) |% {"f($($_[0]), $($_[1])) = $(f $_[0] $_[1])"}
[実行結果]
f(1, 1) = 3
f(2, 3) = 9
f(3, 4) = 125
f(4, 1) = 65533
f(4, 2) = 2003529930…(19709桁省略)…5719156733
655デフォルトの名無しさん
2023/05/13(土) 14:43:52.11ID:gMiTxPxz 計算できるのすご
656デフォルトの名無しさん
2023/05/13(土) 18:02:29.70ID:Zeyov0xO 流石にネタでしょ
657蟻人間 ◆T6xkBnTXz7B0
2023/05/13(土) 19:33:04.83ID:V001hfax お題: 地球によく似た星earth2では小さなインターネットmininetが整備されている。mininet上の端末はIPv2という2バイトのアドレスでアクセスできる。
IPv2の各バイトの範囲が最小値と最大値のペアとして与えられる。与えられた範囲内のIPv2に対して対応する2個の引数の関数fを呼び出すブルートフォースを順番に実行せよ(シングルスレッド)。関数fは実引数の内容を順番に表示するものとする。
例)
data = {{1, 3}, {3, 4}}
→ f(1, 3), f(1, 4), f(2, 3), f(2, 4), f(3, 3), f(3, 4).
※フィクションです。
IPv2の各バイトの範囲が最小値と最大値のペアとして与えられる。与えられた範囲内のIPv2に対して対応する2個の引数の関数fを呼び出すブルートフォースを順番に実行せよ(シングルスレッド)。関数fは実引数の内容を順番に表示するものとする。
例)
data = {{1, 3}, {3, 4}}
→ f(1, 3), f(1, 4), f(2, 3), f(2, 4), f(3, 3), f(3, 4).
※フィクションです。
658デフォルトの名無しさん
2023/05/14(日) 01:48:51.69ID:AS0t3f9C お題:割り算を逆数の掛け算で近似する
単に逆数を掛けるだけだと簡単過ぎるので、例えば、
x/60 = x*(1/64 + (1/60 - 1/64)) = x*(1/64 + 1/960) = x*(1/64) + x*(1/960)
の様に、
a)2の整数べき乗と、
b)残り(除数の逆数-a)
に分割する事を考える(∵2の整数べき乗との乗算は誤差が発生しない)。
ゼロより大きい除数が与えられた時、これをa, bに分割せよ。
分割は、除算の計算精度が最も高いものにすること。
単に逆数を掛けるだけだと簡単過ぎるので、例えば、
x/60 = x*(1/64 + (1/60 - 1/64)) = x*(1/64 + 1/960) = x*(1/64) + x*(1/960)
の様に、
a)2の整数べき乗と、
b)残り(除数の逆数-a)
に分割する事を考える(∵2の整数べき乗との乗算は誤差が発生しない)。
ゼロより大きい除数が与えられた時、これをa, bに分割せよ。
分割は、除算の計算精度が最も高いものにすること。
659デフォルトの名無しさん
2023/05/14(日) 03:59:03.17ID:nPGo3rg2660デフォルトの名無しさん
2023/05/14(日) 10:23:02.41ID:+GvRlsVe 要するに2進展開の小数部の最初のゼロでない桁決定するの?
661デフォルトの名無しさん
2023/05/14(日) 10:41:00.83ID:+GvRlsVe662蟻人間 ◆T6xkBnTXz7B0
2023/05/14(日) 13:13:59.00ID:3wB1r/Tt お題: 縦3マス、横3マスの○×ゲーム(まるばつげーむ)について、ゲームが完了したときの盤面のパターンを重複なく出力し、何通りのパターンがあるかを計算せよ。
663デフォルトの名無しさん
2023/05/14(日) 14:04:22.95ID:MJtG7egZ 対称性は無視?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★3 [ぐれ★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- 現役猟師・東出昌大、クマ被害続出も過熱する報道に「クマはそんな危ないもんじゃない」理由語る [muffin★]
- イギリス「日本でニュースに関するインフルエンサーを順位付けした」 1位ひろゆき 4位ガレソ 5位池上彰 ガチで終わってると話題に [279254606]
- ハゲがレジやってるコンビニって
- 4時だから窓から4回ちんこ出した
- クマどもが冬眠拒否
- 抜いたことある歴史上の人物
- Perfume・あ~ちゃんの結婚相手の一般男性、吉田カバンの社長と判明 [977261419]
