プログラミングのお題スレです。
【出題と回答例】
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/
宿題は宿題スレがあるのでそちらへ。
前スレ
プログラミングのお題スレ Part10
https://mevius.5ch.net/test/read.cgi/tech/1514772904/
プログラミングのお題スレ Part11
https://mevius.5ch.net/test/read.cgi/tech/1524570314/
探検
プログラミングのお題スレ Part12
■ このスレッドは過去ログ倉庫に格納されています
2018/09/28(金) 10:09:07.13ID:phwOkayR
305デフォルトの名無しさん
2018/11/10(土) 01:35:04.59ID:PYYpj2JU306デフォルトの名無しさん
2018/11/10(土) 04:32:40.14ID:dp2CGyZQ >>305
すごい😆
すごい😆
307デフォルトの名無しさん
2018/11/10(土) 04:35:26.34ID:PYYpj2JU >>258
Kotlin
https://paiza.io/projects/sjgIQuhZ44UZcdFZ2CwncQ
色々考えたが結局クラス作ってそこに数字列と文字列で切り分けて入れておいて比較時にそこ見るようにした。
入力の仕様は拡張されていて、最初に数字だけがあった場合はその後に続く単語がその個数あるとみなして
入力を行うが、最初に数字がない場合は無制限に読む。出力は入力した単語とソート後の単語を出す。
Kotlin
https://paiza.io/projects/sjgIQuhZ44UZcdFZ2CwncQ
色々考えたが結局クラス作ってそこに数字列と文字列で切り分けて入れておいて比較時にそこ見るようにした。
入力の仕様は拡張されていて、最初に数字だけがあった場合はその後に続く単語がその個数あるとみなして
入力を行うが、最初に数字がない場合は無制限に読む。出力は入力した単語とソート後の単語を出す。
308デフォルトの名無しさん
2018/11/10(土) 05:36:17.18ID:zQnB+SVr 提案
回答は言語別に別スレで
2スレ位になるかな?
評価価値基準で別れていくんじゃないかと
ここではコメントのみになるのかな。
回答は言語別に別スレで
2スレ位になるかな?
評価価値基準で別れていくんじゃないかと
ここではコメントのみになるのかな。
309デフォルトの名無しさん
2018/11/10(土) 05:52:45.45ID:5gG2FCqG スレ過疎りそうだし誰もわざわざ別スレに回答見に行かなそう
310デフォルトの名無しさん
2018/11/10(土) 06:43:43.85ID:zQnB+SVr 乱立して過疎ってる特定言語専用スレの活性化に寄与することを願いたいしコード例が増えることはそれぞれメリットあるんじゃないかと。
ここと相互リンクは必ず貼る。他の言語と比較しない
他を貶さないを基本ルールに。
ここと相互リンクは必ず貼る。他の言語と比較しない
他を貶さないを基本ルールに。
311デフォルトの名無しさん
2018/11/10(土) 07:08:49.40ID:mapNUhJU もとのスレにも迷惑かと
312デフォルトの名無しさん
2018/11/10(土) 08:21:22.38ID:2tLivqWS >乱立して過疎ってる特定言語
具体的に何?
一番肝心のこと言ってないから説得力がまるで無い
具体的に何?
一番肝心のこと言ってないから説得力がまるで無い
313デフォルトの名無しさん
2018/11/10(土) 09:22:59.55ID:dp2CGyZQ お題:
A,B,Cの3人が1から5までの値が1つずつ書かれた5枚のカードを使ってインディアンポーカーを行う。
各々ランダムに1枚カードを引き、自分は値を見ず他の参加者に値が見えるように額にかざす。
この状態でA,B,Cの順に自分の値が今回引かれた3枚の中で最大(MAX)か,2番目に大きい(MID)か,最小(MIN)かを予想して答える。
AとBはパスしてもよいものとし、誰かが答えた時点で終了となる。
なお全員必ず正解するものとする。
各々の引いたカードの値を引数にとり、一回分のインディアンポーカーの結果を出力する関数indian_poker(a, b, c)を実装せよ。
期待動作例:
indian_poker(3, 2, 1) // 「A is MAX」
indian_poker(5, 2, 4) // 「B is MIN」
indian_poker(4, 2, 3) // 「C is MID」
A,B,Cの3人が1から5までの値が1つずつ書かれた5枚のカードを使ってインディアンポーカーを行う。
各々ランダムに1枚カードを引き、自分は値を見ず他の参加者に値が見えるように額にかざす。
この状態でA,B,Cの順に自分の値が今回引かれた3枚の中で最大(MAX)か,2番目に大きい(MID)か,最小(MIN)かを予想して答える。
AとBはパスしてもよいものとし、誰かが答えた時点で終了となる。
なお全員必ず正解するものとする。
各々の引いたカードの値を引数にとり、一回分のインディアンポーカーの結果を出力する関数indian_poker(a, b, c)を実装せよ。
期待動作例:
indian_poker(3, 2, 1) // 「A is MAX」
indian_poker(5, 2, 4) // 「B is MIN」
indian_poker(4, 2, 3) // 「C is MID」
314デフォルトの名無しさん
2018/11/10(土) 09:43:13.06ID:9vqEahoA そのスレの流れを無視してよそのスレで出されたお題の答えだけ書かれても、そのスレの住人には邪魔なだけだと思う。
315デフォルトの名無しさん
2018/11/10(土) 09:56:28.53ID:X2YiMm/N こういう指示語ばかり使うやつはだいたい頭悪い
316デフォルトの名無しさん
2018/11/10(土) 10:03:50.52ID:0iGN/oEh317デフォルトの名無しさん
2018/11/10(土) 10:10:03.22ID:zQnB+SVr 乱立して過疎ってる (特定言語専用(スレッド))
形容詞句?の係りはこれな
(こういうものの表しかたにも流儀が色々あって混在するとややこしい)
形容詞句?の係りはこれな
(こういうものの表しかたにも流儀が色々あって混在するとややこしい)
318デフォルトの名無しさん
2018/11/10(土) 10:19:13.79ID:2tLivqWS 係り受けなんてどーでもいいよ
「特定言語」って具体的に何なんだ、って聞いてるだけじゃん
返答が『形容詞句?の係りはこれな』って人の話をわざと聞かない人間だろ
かなりのサイコパスなんで『乱立して過疎ってるスレ』とやらに誘いこんでマウンティングしたいだけじゃねえの
なぜなら、特定言語の具体的な名前を5時間経っても未だに出さない、
口を開いたかと思えば「係り受けはこうだから」
もう頭がおかしいだろこいつ
「特定言語」って具体的に何なんだ、って聞いてるだけじゃん
返答が『形容詞句?の係りはこれな』って人の話をわざと聞かない人間だろ
かなりのサイコパスなんで『乱立して過疎ってるスレ』とやらに誘いこんでマウンティングしたいだけじゃねえの
なぜなら、特定言語の具体的な名前を5時間経っても未だに出さない、
口を開いたかと思えば「係り受けはこうだから」
もう頭がおかしいだろこいつ
319デフォルトの名無しさん
2018/11/10(土) 10:34:20.29ID:zQnB+SVr 一つの言語を話題の軸に置いたスレッドは幾らでもあるだろ?この板には。
過疎ってるのも伸びてるのも全部特定言語専用スレな
過疎ってるのも伸びてるのも全部特定言語専用スレな
320デフォルトの名無しさん
2018/11/10(土) 10:36:44.35ID:zQnB+SVr コマンドプロンプトとかSQLとかでワイルドカード使ったことないのかな?
321デフォルトの名無しさん
2018/11/10(土) 11:08:46.45ID:1MT6N26R そもそもここが過疎だし、他スレなんかにここのコード書いても荒らしにしかならんので当然ながら反対
やりたい奴だけ勝手にやってろ
やりたい奴だけ勝手にやってろ
322デフォルトの名無しさん
2018/11/10(土) 11:14:10.79ID:16GnFLu/ >>313
一人が答えた時点で終了になるのに全員正解とは
一人が答えた時点で終了になるのに全員正解とは
323デフォルトの名無しさん
2018/11/10(土) 11:20:45.22ID:zQnB+SVr 幾らなんでも既存スレ無許可で乗っ取るのはやめてほしい。
でも逆にそちらで希望された場合には別スレにしなくてもいいのでは?リンクさえあれば
でも逆にそちらで希望された場合には別スレにしなくてもいいのでは?リンクさえあれば
324デフォルトの名無しさん
2018/11/10(土) 11:31:50.87ID:T2pc5qWv そもそも>>308の時点で日本語が怪しいですし
325デフォルトの名無しさん
2018/11/10(土) 11:33:27.18ID:16GnFLu/ >>313
答えた者が必ず正解するならAが常にあてずっぽうで正解できることになるな
パスする意味も無い
言わんとすることは推測できるが、問題文としては明らかにおかしい
各自、論理的に正解が絞りきれた場合のみ解答し、そうで無ければ必ずパスするものとする。又、その論理に誤りはないものとする。みたいな条件が必要
答えた者が必ず正解するならAが常にあてずっぽうで正解できることになるな
パスする意味も無い
言わんとすることは推測できるが、問題文としては明らかにおかしい
各自、論理的に正解が絞りきれた場合のみ解答し、そうで無ければ必ずパスするものとする。又、その論理に誤りはないものとする。みたいな条件が必要
326デフォルトの名無しさん
2018/11/10(土) 11:34:10.16ID:g5G2TnXq327デフォルトの名無しさん
2018/11/10(土) 11:36:49.05ID:16GnFLu/ >>326
ごり押しで草
ごり押しで草
328デフォルトの名無しさん
2018/11/10(土) 11:44:08.17ID:16GnFLu/ Aは常に正解する
Aは常に正しい
故にA is GOD
Aは常に正しい
故にA is GOD
329デフォルトの名無しさん
2018/11/10(土) 12:18:21.41ID:2tLivqWS >>313は9月末あたりに話題になってた
ttps://qiita.com/gorillab/items/fab2a6637f681221f687
ttps://qiita-image-store.s3.amazonaws.com/0/169376/80ea2cf1-37e7-60b0-3230-c7dc1d2d60cc.jpeg
ttps://qiita.com/gorillab/items/fab2a6637f681221f687
ttps://qiita-image-store.s3.amazonaws.com/0/169376/80ea2cf1-37e7-60b0-3230-c7dc1d2d60cc.jpeg
330デフォルトの名無しさん
2018/11/10(土) 12:38:22.96ID:16GnFLu/ >>329
元ネタからして雑すぎて草
元ネタからして雑すぎて草
331デフォルトの名無しさん
2018/11/10(土) 12:44:49.01ID:gks79eHH 前スレ951のやつか
332デフォルトの名無しさん
2018/11/10(土) 12:44:51.58ID:xqriZsUd >>313 Ruby
def indian_poker(a, b, c)
x = [Set[1, 2], Set[1, 5], Set[4, 5]]
winner, winners_num = case
when x.include?(Set[b, c]) then [?A, a]
when a == 3 || (b == 3 && Set[a, b, c] != Set[2, 3, 4]) || x.include?(Set[a, c]) ||
Set[b, c] == Set[2, 4] then [?B, b]
else [?C, c]
end
'%s is %s' % [winner, %w[MIN MID MAX].zip([a, b, c].sort).find{|e| e.last == winners_num}.first]
end
arr = [*(1..5)].permutation(3){|i| puts '%p -> %s' % [i, indian_poker(*i)]};
# =>
[1, 2, 3] -> C is MAX
[1, 2, 4] -> B is MID
[1, 2, 5] -> B is MID
...
以下>>326と同じ
def indian_poker(a, b, c)
x = [Set[1, 2], Set[1, 5], Set[4, 5]]
winner, winners_num = case
when x.include?(Set[b, c]) then [?A, a]
when a == 3 || (b == 3 && Set[a, b, c] != Set[2, 3, 4]) || x.include?(Set[a, c]) ||
Set[b, c] == Set[2, 4] then [?B, b]
else [?C, c]
end
'%s is %s' % [winner, %w[MIN MID MAX].zip([a, b, c].sort).find{|e| e.last == winners_num}.first]
end
arr = [*(1..5)].permutation(3){|i| puts '%p -> %s' % [i, indian_poker(*i)]};
# =>
[1, 2, 3] -> C is MAX
[1, 2, 4] -> B is MID
[1, 2, 5] -> B is MID
...
以下>>326と同じ
333デフォルトの名無しさん
2018/11/10(土) 13:25:37.16ID:hLxIIZfE334デフォルトの名無しさん
2018/11/10(土) 13:27:54.99ID:8cjk91S6335デフォルトの名無しさん
2018/11/10(土) 13:37:54.71ID:16GnFLu/336デフォルトの名無しさん
2018/11/10(土) 13:52:54.08ID:9b5VuL4P お題
n^n^nの下2桁を求めよ(^はべき乗、nは1以上の整数)
1 => 1
2 => 16 (2^2^2 = 2^4 = 16)
3 => 87 (3^3^3 = 3^27 = 7625597484987)
4 => 96
11 => 11
13 => 53
100 => 0
777 => ??
n^n^nの下2桁を求めよ(^はべき乗、nは1以上の整数)
1 => 1
2 => 16 (2^2^2 = 2^4 = 16)
3 => 87 (3^3^3 = 3^27 = 7625597484987)
4 => 96
11 => 11
13 => 53
100 => 0
777 => ??
337デフォルトの名無しさん
2018/11/10(土) 14:00:49.74ID:hLxIIZfE338デフォルトの名無しさん
2018/11/10(土) 15:46:45.95ID:16GnFLu/339デフォルトの名無しさん
2018/11/10(土) 15:58:06.48ID:xqriZsUd >>338
97じゃない?
97じゃない?
340デフォルトの名無しさん
2018/11/10(土) 16:06:41.30ID:16GnFLu/341デフォルトの名無しさん
2018/11/10(土) 16:28:23.31ID:31tiZVqm >>326-327
そういうのはそれよりマシなコードを出してから言わないと単なる口先番長にしか見えないぞw
そういうのはそれよりマシなコードを出してから言わないと単なる口先番長にしか見えないぞw
342デフォルトの名無しさん
2018/11/10(土) 17:09:13.33ID:xqriZsUd >>336 Ruby
def powmod(n, e, m)
case e
when 0 then 1
when :even?.to_proc then powmod(n * n % m, e >> 1, m)
else n * powmod(n, e - 1, m) % m
end
end
def kotae(n, m)
index, cycle = (1..m).each_with_object([1]) do |i, a|
x = (a.last * n % m)
ind = a.index(x)
ind.nil? ? a.push(x) : (break([ind, i - ind]))
end
x = n.times.reduce(1){|r, i| r *= n; r < index ? r : break}
y = x.nil? ? index + (powmod(n, n, cycle) - index) % cycle : x
powmod(n, y, m)
end
[0, 1, 2, 3, 4, 5, 10, 11, 13, 100, 777].each{|i| puts '%d -> %06d' % [i, kotae(i, 10**6)]}
# =>0 -> 000000
1 -> 000001
2 -> 000016
3 -> 484987
4 -> 084096
5 -> 203125
10 -> 000000
11 -> 906611
13 -> 549053
100 -> 000000
777 -> 977097
def powmod(n, e, m)
case e
when 0 then 1
when :even?.to_proc then powmod(n * n % m, e >> 1, m)
else n * powmod(n, e - 1, m) % m
end
end
def kotae(n, m)
index, cycle = (1..m).each_with_object([1]) do |i, a|
x = (a.last * n % m)
ind = a.index(x)
ind.nil? ? a.push(x) : (break([ind, i - ind]))
end
x = n.times.reduce(1){|r, i| r *= n; r < index ? r : break}
y = x.nil? ? index + (powmod(n, n, cycle) - index) % cycle : x
powmod(n, y, m)
end
[0, 1, 2, 3, 4, 5, 10, 11, 13, 100, 777].each{|i| puts '%d -> %06d' % [i, kotae(i, 10**6)]}
# =>0 -> 000000
1 -> 000001
2 -> 000016
3 -> 484987
4 -> 084096
5 -> 203125
10 -> 000000
11 -> 906611
13 -> 549053
100 -> 000000
777 -> 977097
343デフォルトの名無しさん
2018/11/10(土) 17:30:26.21ID:g5G2TnXq >>341
自分で書いて自分でひどいコードと言うとるんやがww
自分で書いて自分でひどいコードと言うとるんやがww
344デフォルトの名無しさん
2018/11/10(土) 17:52:39.10ID:AvCW4uHY python
def ans(num):
_def calc(N):
__n = (N ** 2) % 100
__p = []
__while n not in p:
___p.append(n)
___n = (n * N) % 100
__return p
_loop = calc(num)
_step = num**num % len(loop)
_if len(loop) == 1:
__print(loop[0])
_else:
__print(loop[step-2])
for x in [0,1,2,3,4,5,10,11,13,777]:
_ans(x)
-> 0,1,16,87,96,25,0,11,53,97
def ans(num):
_def calc(N):
__n = (N ** 2) % 100
__p = []
__while n not in p:
___p.append(n)
___n = (n * N) % 100
__return p
_loop = calc(num)
_step = num**num % len(loop)
_if len(loop) == 1:
__print(loop[0])
_else:
__print(loop[step-2])
for x in [0,1,2,3,4,5,10,11,13,777]:
_ans(x)
-> 0,1,16,87,96,25,0,11,53,97
345デフォルトの名無しさん
2018/11/10(土) 17:55:30.82ID:hLxIIZfE346デフォルトの名無しさん
2018/11/10(土) 19:50:00.93ID:nd1h6x9x347デフォルトの名無しさん
2018/11/10(土) 20:50:56.73ID:G7iMNc/F >>313 Squeak/Pharo Smalltalk
| numOfCards indianPoker |
numOfCards := 5.
indianPoker := [:args |
| cards names infer |
cards := (1 to: numOfCards) asArray.
names := (Character alphabet asUppercase first: args size) asArray collect: #asSymbol.
infer := nil. (infer := [:dealts :limit |
| turn possibilities lastAns answers |
turn := 0. answers := OrderedCollection new.
possibilities := dealts collect: [:dealt | cards asSet removeAll: dealts; add: dealt; yourself].
lastAns := nil -> #?.
[lastAns value = #? and: [(turn := turn + 1) < limit]] whileTrue: [
| myCards others |
myCards := possibilities atWrap: turn.
turn > 1 ifTrue: [
(myCards copyWithout: (dealts atWrap: turn)) do: [:pCard |
(infer value: (dealts copy atWrap: turn put: pCard; yourself) value: turn) value ~= #?
ifTrue: [myCards remove: pCard]]].
others := dealts copyWithoutIndex: turn - 1 \\ 3 + 1.
lastAns := (names atWrap: turn) -> (true caseOf: {
[others min > myCards max] -> [#MIN].
[others max < myCards min] -> [#MAX].
[others max > myCards max and: [others min < myCards min]] -> [#MID]
} otherwise: [#?])
]. lastAns]) value: args value: Float infinity
].
indianPoker value: #(3 2 1). " #A->#MAX "
indianPoker value: #(5 2 4). " #B->#MIN "
indianPoker value: #(4 2 3). " #C->#MID "
| numOfCards indianPoker |
numOfCards := 5.
indianPoker := [:args |
| cards names infer |
cards := (1 to: numOfCards) asArray.
names := (Character alphabet asUppercase first: args size) asArray collect: #asSymbol.
infer := nil. (infer := [:dealts :limit |
| turn possibilities lastAns answers |
turn := 0. answers := OrderedCollection new.
possibilities := dealts collect: [:dealt | cards asSet removeAll: dealts; add: dealt; yourself].
lastAns := nil -> #?.
[lastAns value = #? and: [(turn := turn + 1) < limit]] whileTrue: [
| myCards others |
myCards := possibilities atWrap: turn.
turn > 1 ifTrue: [
(myCards copyWithout: (dealts atWrap: turn)) do: [:pCard |
(infer value: (dealts copy atWrap: turn put: pCard; yourself) value: turn) value ~= #?
ifTrue: [myCards remove: pCard]]].
others := dealts copyWithoutIndex: turn - 1 \\ 3 + 1.
lastAns := (names atWrap: turn) -> (true caseOf: {
[others min > myCards max] -> [#MIN].
[others max < myCards min] -> [#MAX].
[others max > myCards max and: [others min < myCards min]] -> [#MID]
} otherwise: [#?])
]. lastAns]) value: args value: Float infinity
].
indianPoker value: #(3 2 1). " #A->#MAX "
indianPoker value: #(5 2 4). " #B->#MIN "
indianPoker value: #(4 2 3). " #C->#MID "
348デフォルトの名無しさん
2018/11/11(日) 03:24:01.44ID:HtKIrWnT349デフォルトの名無しさん
2018/11/11(日) 10:02:52.73ID:ZG9KPLpE350デフォルトの名無しさん
2018/11/11(日) 12:53:19.00ID:ILkwXRqJ >>336 Squeak/Pharo Smalltalk
| fn |
fn := [:N |
(Array new: 3 withAll: N) reduce: [:mex :n |
mex \\ 100 = 0 ifTrue: [0] ifFalse: [n raisedTo: mex modulo: 100]
]
].
#(1 2 3 4 11 13 100 777) collect: fn
"=> #(1 16 87 96 11 53 0 97) "
| fn |
fn := [:N |
(Array new: 3 withAll: N) reduce: [:mex :n |
mex \\ 100 = 0 ifTrue: [0] ifFalse: [n raisedTo: mex modulo: 100]
]
].
#(1 2 3 4 11 13 100 777) collect: fn
"=> #(1 16 87 96 11 53 0 97) "
351デフォルトの名無しさん
2018/11/11(日) 14:11:48.73ID:j7sl2u35352デフォルトの名無しさん
2018/11/11(日) 14:19:03.18ID:SClia95W それでもJニキなら何とかしてくれる
353デフォルトの名無しさん
2018/11/11(日) 14:25:13.88ID:j7sl2u35 よく読んだら素直に実装してるだけか
354デフォルトの名無しさん
2018/11/11(日) 14:34:26.37ID:ILkwXRqJ >>353
ですね…^^;
ですね…^^;
355デフォルトの名無しさん
2018/11/11(日) 16:24:01.50ID:xWJTm2Oc お題
n次のヒルベルト曲線を描画せよ
n=1
■□■
■□■
■■■
n=3
■□■■■■■□■■■■■□■
■□■□□□■□■□□□■□■
■■■□■■■□■■■□■■■
□□□□■□□□□□■□□□□
■■■□■■■□■■■□■■■
■□■□□□■□■□□□■□■
■□■■■■■□■■■■■□■
■□□□□□□□□□□□□□■
■■■□■■■■■■■□■■■
□□■□■□□□□□■□■□□
■■■□■■■□■■■□■■■
■□□□□□■□■□□□□□■
■□■■■□■□■□■■■□■
■□■□■□■□■□■□■□■
■■■□■■■□■■■□■■■
n次のヒルベルト曲線を描画せよ
n=1
■□■
■□■
■■■
n=3
■□■■■■■□■■■■■□■
■□■□□□■□■□□□■□■
■■■□■■■□■■■□■■■
□□□□■□□□□□■□□□□
■■■□■■■□■■■□■■■
■□■□□□■□■□□□■□■
■□■■■■■□■■■■■□■
■□□□□□□□□□□□□□■
■■■□■■■■■■■□■■■
□□■□■□□□□□■□■□□
■■■□■■■□■■■□■■■
■□□□□□■□■□□□□□■
■□■■■□■□■□■■■□■
■□■□■□■□■□■□■□■
■■■□■■■□■■■□■■■
356デフォルトの名無しさん
2018/11/11(日) 17:11:10.50ID:Gv5Fmm22 >>336 Perl5
use bignum (l=>GMP);
for $i (1,2,3,4,11,13,100,777) {
$j = $i % 100;
$k = $j ** $j % 100;
$p = $j ** $k % 100;
printf "$i %02d\n", $p;
}
実行例
$ time perl 12_338.pl
1 01
2 16
3 87
4 96
11 11
13 53
100 00
777 97
0.562 secs
use bignum (l=>GMP);
for $i (1,2,3,4,11,13,100,777) {
$j = $i % 100;
$k = $j ** $j % 100;
$p = $j ** $k % 100;
printf "$i %02d\n", $p;
}
実行例
$ time perl 12_338.pl
1 01
2 16
3 87
4 96
11 11
13 53
100 00
777 97
0.562 secs
357デフォルトの名無しさん
2018/11/11(日) 17:52:24.96ID:tvDFPkAv >>355 Ruby
def hilbert_curve(n)
return [[1, 0, 1], [1, 0, 1], [1, 1, 1]] if n == 1
hc = hilbert_curve(n - 1)
[
*hc.transpose.reverse.zip(hc.reverse.transpose).map{|a, b| [*a, 0, *b]},
[1, *Array.new(2**(n + 1) - 3, 0), 1],
*hc.zip(hc).map.with_index{|(a, b), i| [*a, 1/(i + 1), *b]}
]
end
[1, 3].each{|e| puts "n = #{e}", hilbert_curve(e).map{|a| a.join.gsub(/\d/, ?0 => ?□, ?1 => ?■)}.join($/)}
# => n = 1
■□■
■□■
■■■
n = 3
■□■■■■■□■■■■■□■
■□■□□□■□■□□□■□■
■■■□■■■□■■■□■■■
□□□□■□□□□□■□□□□
■■■□■■■□■■■□■■■
■□■□□□■□■□□□■□■
■□■■■■■□■■■■■□■
■□□□□□□□□□□□□□■
■■■□■■■■■■■□■■■
□□■□■□□□□□■□■□□
■■■□■■■□■■■□■■■
■□□□□□■□■□□□□□■
■□■■■□■□■□■■■□■
■□■□■□■□■□■□■□■
■■■□■■■□■■■□■■■
def hilbert_curve(n)
return [[1, 0, 1], [1, 0, 1], [1, 1, 1]] if n == 1
hc = hilbert_curve(n - 1)
[
*hc.transpose.reverse.zip(hc.reverse.transpose).map{|a, b| [*a, 0, *b]},
[1, *Array.new(2**(n + 1) - 3, 0), 1],
*hc.zip(hc).map.with_index{|(a, b), i| [*a, 1/(i + 1), *b]}
]
end
[1, 3].each{|e| puts "n = #{e}", hilbert_curve(e).map{|a| a.join.gsub(/\d/, ?0 => ?□, ?1 => ?■)}.join($/)}
# => n = 1
■□■
■□■
■■■
n = 3
■□■■■■■□■■■■■□■
■□■□□□■□■□□□■□■
■■■□■■■□■■■□■■■
□□□□■□□□□□■□□□□
■■■□■■■□■■■□■■■
■□■□□□■□■□□□■□■
■□■■■■■□■■■■■□■
■□□□□□□□□□□□□□■
■■■□■■■■■■■□■■■
□□■□■□□□□□■□■□□
■■■□■■■□■■■□■■■
■□□□□□■□■□□□□□■
■□■■■□■□■□■■■□■
■□■□■□■□■□■□■□■
■■■□■■■□■■■□■■■
358デフォルトの名無しさん
2018/11/11(日) 22:01:36.28ID:B3f/927d >>336
Haskell
素直に書いた版。
何やってるかは分かりやすい。
main = mapM_ put $ zip list $ map f list
put (x,y) = putStr (show x ++ ":") >> print y
f x = (x ^ x ^ x) `mod` 100
list = [1,2,3,4,5,6,7,8]
Haskell
素直に書いた版。
何やってるかは分かりやすい。
main = mapM_ put $ zip list $ map f list
put (x,y) = putStr (show x ++ ":") >> print y
f x = (x ^ x ^ x) `mod` 100
list = [1,2,3,4,5,6,7,8]
359デフォルトの名無しさん
2018/11/11(日) 22:10:56.11ID:B3f/927d Haskell
Perlの人のパクリ版(めちゃ速い)
main = mapM_ put $ zip list $ map f list
put (x,y) = putStr (show x ++ ":") >> print y
f x = p
where j = x `mod` 100
k = j ^ j `mod` 100
p = j ^ k `mod` 100
list = [1,2,3,4,11,13,100,777]
Perlの人のパクリ版(めちゃ速い)
main = mapM_ put $ zip list $ map f list
put (x,y) = putStr (show x ++ ":") >> print y
f x = p
where j = x `mod` 100
k = j ^ j `mod` 100
p = j ^ k `mod` 100
list = [1,2,3,4,11,13,100,777]
360デフォルトの名無しさん
2018/11/11(日) 22:20:34.69ID:xWJTm2Oc >>356
n=10のときどうなる?
n=10のときどうなる?
361デフォルトの名無しさん
2018/11/11(日) 23:54:52.39ID:VLVUrnJ+ 指数を100の剰余取ってるのってどういう根拠なの?
362デフォルトの名無しさん
2018/11/11(日) 23:59:16.36ID:lebYcZ/K >>360
use bignum (l=>GMP);
for $i (10) {
$j = $i % 100;
$k = $j ** $j % 100;
$p = $j ** $k % 100;
printf "$i %02d\n", $p;
}
$i = 10;
print ($i**$i)**$i;
実行結果
$ perl 12_338_1.pl
10 01
10000000000
ダメですね合いませんね。
単に左辺を%100すると一般性はありませんでした。サーせん。
ちゃんと循環性を見るとか、別の解法が要りますね
use bignum (l=>GMP);
for $i (10) {
$j = $i % 100;
$k = $j ** $j % 100;
$p = $j ** $k % 100;
printf "$i %02d\n", $p;
}
$i = 10;
print ($i**$i)**$i;
実行結果
$ perl 12_338_1.pl
10 01
10000000000
ダメですね合いませんね。
単に左辺を%100すると一般性はありませんでした。サーせん。
ちゃんと循環性を見るとか、別の解法が要りますね
363デフォルトの名無しさん
2018/11/12(月) 00:02:23.31ID:EX0FpiMD ちなみに循環性を見るとこんな感じになってました
use bignum (l=>GMP);
use Tie::IxHash;
use feature 'say';
for $i (0,1,2,3,4,5,10,11,13,777) {
tie my %h,'Tie::IxHash';
$p = $i;
for (1..100) {
last if exists $h{$p} and $h{$p} > 10;
$h{sprintf "%02d", $p % 100} = $_;
$p = $p * $i % 100;
}
@a = keys %h;
say "$i: ", scalar @a, ": @a", ": $p";
}
実行結果
1: 1: 01: 1
2: 21: 02 04 08 16 32 64 28 56 12 24 48 96 92 84 68 36 72 44 88 76 52: 48
3: 20: 03 09 27 81 43 29 87 61 83 49 47 41 23 69 07 21 63 89 67 01: 47
4: 10: 04 16 64 56 24 96 84 36 44 76: 16
5: 2: 05 25: 25
10: 2: 10 00: 0
11: 10: 11 21 31 41 51 61 71 81 91 01: 11
13: 20: 13 69 97 61 93 09 17 21 73 49 37 81 53 89 57 41 33 29 77 01: 37
777: 20: 77 29 33 41 57 89 53 81 37 49 73 21 17 09 93 61 97 69 13 01: 73
use bignum (l=>GMP);
use Tie::IxHash;
use feature 'say';
for $i (0,1,2,3,4,5,10,11,13,777) {
tie my %h,'Tie::IxHash';
$p = $i;
for (1..100) {
last if exists $h{$p} and $h{$p} > 10;
$h{sprintf "%02d", $p % 100} = $_;
$p = $p * $i % 100;
}
@a = keys %h;
say "$i: ", scalar @a, ": @a", ": $p";
}
実行結果
1: 1: 01: 1
2: 21: 02 04 08 16 32 64 28 56 12 24 48 96 92 84 68 36 72 44 88 76 52: 48
3: 20: 03 09 27 81 43 29 87 61 83 49 47 41 23 69 07 21 63 89 67 01: 47
4: 10: 04 16 64 56 24 96 84 36 44 76: 16
5: 2: 05 25: 25
10: 2: 10 00: 0
11: 10: 11 21 31 41 51 61 71 81 91 01: 11
13: 20: 13 69 97 61 93 09 17 21 73 49 37 81 53 89 57 41 33 29 77 01: 37
777: 20: 77 29 33 41 57 89 53 81 37 49 73 21 17 09 93 61 97 69 13 01: 73
364デフォルトの名無しさん
2018/11/12(月) 00:03:57.97ID:EX0FpiMD365デフォルトの名無しさん
2018/11/12(月) 00:05:03.96ID:JEwLf6Zk >>362
それは0乗しちゃってるからじゃない?
それは0乗しちゃってるからじゃない?
366デフォルトの名無しさん
2018/11/12(月) 00:10:02.50ID:EX0FpiMD >>365
10については、そういわれてみればそうだね。
10については、そういわれてみればそうだね。
367デフォルトの名無しさん
2018/11/12(月) 00:11:06.48ID:D6ILV7Jx >>362
iが10で割り切れれば00って別で切り分ければ良いんじゃ無いかな。
iが10で割り切れれば00って別で切り分ければ良いんじゃ無いかな。
368デフォルトの名無しさん
2018/11/12(月) 00:18:43.46ID:EX0FpiMD369デフォルトの名無しさん
2018/11/12(月) 00:19:14.52ID:JEwLf6Zk >>363
0〜99までとりあえず循環部分の周期は全て20の約数になるみたいだけど
数学雑魚の俺には理屈がわからなかった
とりあえず、ざっくり100の剰余取るだけだと循環開始より小さい指数になったときにおかしくなりそう
0〜99までとりあえず循環部分の周期は全て20の約数になるみたいだけど
数学雑魚の俺には理屈がわからなかった
とりあえず、ざっくり100の剰余取るだけだと循環開始より小さい指数になったときにおかしくなりそう
370デフォルトの名無しさん
2018/11/12(月) 00:52:30.78ID:+qrAueUv >>368
寧ろそれが成り立つ方がかなり特別なケースだぞ
寧ろそれが成り立つ方がかなり特別なケースだぞ
371デフォルトの名無しさん
2018/11/12(月) 02:34:45.23ID:MtlIUxHY 多分数学的には証明されていることだろうと思うが、x ^ 100 とか x ^ 200 とか x ^ 300 って、
下3桁の結果が同じになるようだな。どうしてかはわからんが。多分考えて行くとその内わかる
んだろう。後の事は数学が得意な人に任せた。
下3桁の結果が同じになるようだな。どうしてかはわからんが。多分考えて行くとその内わかる
んだろう。後の事は数学が得意な人に任せた。
372デフォルトの名無しさん
2018/11/12(月) 04:19:59.43ID:lDwndekZ x^22 - x^2
が常に100で割り切れるのが理由だと思う
なので巡回群の長さは高々20までになる
が常に100で割り切れるのが理由だと思う
なので巡回群の長さは高々20までになる
373デフォルトの名無しさん
2018/11/12(月) 04:44:54.48ID:lDwndekZ もう少し分かりやすく書くと x^20 - 1 と x^21 - x が
100で割り切れる保証はない(実際大部分は割り切れない)が
x^22 - x^2 は絶対に100で割り切れる(合同式を用いれば証明は簡明)ので
一般に2以上の自然数 n に対して x^(n+20) - x^n ≡ 0 mod 100が成り立つ(xは整数)
よって一般に指数部の20の剰余を取っても問題ないと言える
100で割り切れる保証はない(実際大部分は割り切れない)が
x^22 - x^2 は絶対に100で割り切れる(合同式を用いれば証明は簡明)ので
一般に2以上の自然数 n に対して x^(n+20) - x^n ≡ 0 mod 100が成り立つ(xは整数)
よって一般に指数部の20の剰余を取っても問題ないと言える
374デフォルトの名無しさん
2018/11/12(月) 04:49:06.55ID:fKeD1dzA >>371
任意の整数 10n + r (-4 <= r <= 5)に対して
(10n + r)^100 = r^100 mod 1000 なので mod 1000 で
0^100 = 0
5^100 = 625^25 = 625
(±1)^100 = 1
(±2)^100 = 24^10 = 376
(±3)^100 = 243^5 = 1
(±4)^100 = 376^2 = 376
となって 0, 1, 376, 625 は2乗しても下3桁は変わらないから
任意の整数は100n乗しても下3桁は常に同じだね
任意の整数 10n + r (-4 <= r <= 5)に対して
(10n + r)^100 = r^100 mod 1000 なので mod 1000 で
0^100 = 0
5^100 = 625^25 = 625
(±1)^100 = 1
(±2)^100 = 24^10 = 376
(±3)^100 = 243^5 = 1
(±4)^100 = 376^2 = 376
となって 0, 1, 376, 625 は2乗しても下3桁は変わらないから
任意の整数は100n乗しても下3桁は常に同じだね
375デフォルトの名無しさん
2018/11/12(月) 09:11:34.15ID:WiNaWTIj 数学板でやれ。問題からしてクソだった。
376デフォルトの名無しさん
2018/11/12(月) 10:17:56.51ID:iaSpw+rm これ以上はスレ違いってなら同意だけど問題自体は別に良かっただろ
377デフォルトの名無しさん
2018/11/12(月) 11:03:12.07ID:oQPj2WUY とりあえず>>336の出題者は用意してあった解答を出そうか
くそ問題かどうかはそれを見て判断する
くそ問題かどうかはそれを見て判断する
378デフォルトの名無しさん
2018/11/12(月) 11:11:40.60ID:iaSpw+rm 既に回答がたくさん出てるのにクソ問題も何もねえだろ
379デフォルトの名無しさん
2018/11/12(月) 11:51:52.42ID:oQPj2WUY 回答の多さとクソさとの相関はないだろ
例えばQiitaでいいねが多ければクソじゃないということがないのと同じように
そういうのはいいから出題者は早めに解答だしてくれ
例えばQiitaでいいねが多ければクソじゃないということがないのと同じように
そういうのはいいから出題者は早めに解答だしてくれ
380デフォルトの名無しさん
2018/11/12(月) 12:01:03.54ID:iaSpw+rm ボクがわからないからクソとか草生えるわ
なんでお前の救い難い知的レベルに合わせてやらなければならいんだよ
なんでお前の救い難い知的レベルに合わせてやらなければならいんだよ
381デフォルトの名無しさん
2018/11/12(月) 12:07:32.95ID:iShTB70W >>379
最近のQiitaのトレンド見てて いいねの数=内容の薄さ だと思うようになってきたわ
最近のQiitaのトレンド見てて いいねの数=内容の薄さ だと思うようになってきたわ
382デフォルトの名無しさん
2018/11/12(月) 12:11:20.95ID:b6USGf7s 今回の問題はべき剰余の特殊な場合を求めるものだけど、工夫する余地もいくつかあり悪い問題ではないと思った。
というかなぜこれを悪い問題だと思ったんだ?
というかなぜこれを悪い問題だと思ったんだ?
383デフォルトの名無しさん
2018/11/12(月) 12:19:11.85ID:DYCuacpe 競技プログラミングなんかでよく見るタイプの問題なのにな。
384デフォルトの名無しさん
2018/11/12(月) 12:23:12.24ID:hXyGmgtP a↑↑b mod n を一般化してみたらテトレーション計算より
最初に使うφ(n)の計算のほうが重かった
10**nなら2**n * 5**nなので高速に計算できますけども
最初に使うφ(n)の計算のほうが重かった
10**nなら2**n * 5**nなので高速に計算できますけども
385デフォルトの名無しさん
2018/11/12(月) 12:28:21.72ID:TKKxOWxM このスレは不特定言語スレだけど
高速性ならC/C++/Rast
コンパクト性の追求ならSmallTalkとかRubyとか
RADならJavaとかPythonとか定番固定化。
既にもうある程度少数特定言語スレになりつつあ
る希ガス
高速性ならC/C++/Rast
コンパクト性の追求ならSmallTalkとかRubyとか
RADならJavaとかPythonとか定番固定化。
既にもうある程度少数特定言語スレになりつつあ
る希ガス
386デフォルトの名無しさん
2018/11/12(月) 12:28:55.23ID:TKKxOWxM RastじゃなくてRustやったなwww
387デフォルトの名無しさん
2018/11/12(月) 12:49:28.80ID:7mLFygVa >>380
> なんでお前の救い難い知的レベルに合わせてやらなければならいんだよ
数学の素養のあるっぽいやつのよくやりがちなダメな考え方だな
そういう(逆)選民思想を持っているならこのスレで出題するのはやめてくれ
そもそも良問と思うものをけなされるお前自身がたのしくないだろ?
> なんでお前の救い難い知的レベルに合わせてやらなければならいんだよ
数学の素養のあるっぽいやつのよくやりがちなダメな考え方だな
そういう(逆)選民思想を持っているならこのスレで出題するのはやめてくれ
そもそも良問と思うものをけなされるお前自身がたのしくないだろ?
388デフォルトの名無しさん
2018/11/12(月) 12:56:08.79ID:1XBBjLKo いずれにせよ出題者がどこまで考えて出題したか(つまり良問か否か)はそいつ自らの解答を見れば一目瞭然だよ
論よりコード
はよ出せ
論よりコード
はよ出せ
389デフォルトの名無しさん
2018/11/12(月) 13:24:01.86ID:WWnCJgTu 問題の良さって問題じゃなく解答で決まるものなのか?
問題だけで問題の良さが確定しないのは初めて知ったわ
問題だけで問題の良さが確定しないのは初めて知ったわ
390デフォルトの名無しさん
2018/11/12(月) 13:26:44.24ID:DYCuacpe も一回言うけどこの問題はプログラミングのお題としてはよく見るような問題だぞ。
揚げ足取りというか難癖付けてる奴はおかしいだろ。
それこそスレチだから黙ってろよ。
揚げ足取りというか難癖付けてる奴はおかしいだろ。
それこそスレチだから黙ってろよ。
391デフォルトの名無しさん
2018/11/12(月) 13:28:23.55ID:X+KqJ1/Z >>389
解答で決まるなんて誰もいっとらんがな(数学の前にやることあるんじゃ?w)
解答を見れば「どこまで考えて出題したか」が一目瞭然ということ
どこまで考えて出された問題かで良問か否かが決まる
もとより様々な状況で「結果的に良問」ということは実際あるしそれは否定する気は無いが、蓋然性は低い
解答で決まるなんて誰もいっとらんがな(数学の前にやることあるんじゃ?w)
解答を見れば「どこまで考えて出題したか」が一目瞭然ということ
どこまで考えて出された問題かで良問か否かが決まる
もとより様々な状況で「結果的に良問」ということは実際あるしそれは否定する気は無いが、蓋然性は低い
392デフォルトの名無しさん
2018/11/12(月) 13:38:11.17ID:b6USGf7s この程度のことで選民思想がどうのとか言い出すのはおかしいと思うよ。
冪剰余の計算は面白いテーマだし。
逆に悪問だと言ってる人がその根拠を示すべきだと思うんだけど。
冪剰余の計算は面白いテーマだし。
逆に悪問だと言ってる人がその根拠を示すべきだと思うんだけど。
393デフォルトの名無しさん
2018/11/12(月) 13:57:27.23ID:9RzF2H48 >>392
「この程度(のレベル)」とか言ってる選民思想バリバリの奴が
自分は違うって体で何か主張したところでぜんぜん説得力ないんだがw
ともあれ、回答が多い割に文句なしの正答が出てこないのがこのスレ的には異常事態だろ
お題 and/or 出題者をクソだと疑う十分な根拠になりうる
「この程度(のレベル)」とか言ってる選民思想バリバリの奴が
自分は違うって体で何か主張したところでぜんぜん説得力ないんだがw
ともあれ、回答が多い割に文句なしの正答が出てこないのがこのスレ的には異常事態だろ
お題 and/or 出題者をクソだと疑う十分な根拠になりうる
394デフォルトの名無しさん
2018/11/12(月) 14:13:38.48ID:b6USGf7s395デフォルトの名無しさん
2018/11/12(月) 14:16:13.02ID:CqB5lm+V396デフォルトの名無しさん
2018/11/12(月) 14:24:13.52ID:D6ILV7Jx >>355とか良い問題じゃ無い?
私は解けないが。
私は解けないが。
397デフォルトの名無しさん
2018/11/12(月) 16:17:37.15ID:9RzF2H48398デフォルトの名無しさん
2018/11/12(月) 16:22:54.34ID:CqB5lm+V399デフォルトの名無しさん
2018/11/12(月) 16:27:56.77ID:9RzF2H48 あとお前ら(直近ではID:9RzF2H48とID:CqB5lm+V)
勝手にクソ問題断定のクレーマー扱いしとるが
出題者の用意していた解答次第では良問の可能性も(わずかだが)あるんだからな
ほどほどにしとけよw
勝手にクソ問題断定のクレーマー扱いしとるが
出題者の用意していた解答次第では良問の可能性も(わずかだが)あるんだからな
ほどほどにしとけよw
400デフォルトの名無しさん
2018/11/12(月) 16:29:53.16ID:9RzF2H48 いかん自分を安価しちゃったよID:b6USGf7sな
401デフォルトの名無しさん
2018/11/12(月) 16:33:57.40ID:DYCuacpe どうやら ID:9RzF2H48 は人を馬鹿にしたいだけみたいだな。
きちんと説明してもらってんのに言ってることがわけわからんし。
冪剰余の最適化なんて教科書にあってもいいくらいものすごくありふれたお題だっていうのに馬鹿らしい。
きちんと説明してもらってんのに言ってることがわけわからんし。
冪剰余の最適化なんて教科書にあってもいいくらいものすごくありふれたお題だっていうのに馬鹿らしい。
402デフォルトの名無しさん
2018/11/12(月) 16:37:03.80ID:CqB5lm+V 数学の話ししてるのにイライラして思わずクソ問題呼ばわりして引くに引けなくなったんだろ
403デフォルトの名無しさん
2018/11/12(月) 16:43:20.29ID:b6USGf7s404デフォルトの名無しさん
2018/11/12(月) 16:46:44.76ID:9RzF2H48405デフォルトの名無しさん
2018/11/12(月) 16:52:28.57ID:9RzF2H48■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国、日本行き“50万人”キャンセル 渡航自粛でコロナ禍以来最大 ★2 [お断り★]
- 中国、日本行き“50万人”キャンセル 渡航自粛でコロナ禍以来最大 [お断り★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★5 [ぐれ★]
- 【次の一手】台湾問題で小林よしのり氏が私見「まさに戦争前夜」「ただちに徴兵制を敷いて、高市支持者を最前線へ」… ★4 [BFU★]
- 【速報】日本産牛肉の対中国輸出再開協議が中止 ★2 [おっさん友の会★]
- 毛寧(もう・ねい)報道官「中国に日本の水産品の市場は無い」 高市首相の国会答弁に「中国民衆の強い怒り」 [ぐれ★]
- 【悲報】ヤフコメのネトウヨさん、岡田克也のせいにしたり高市総理は間違ったないと言ったり手のひら返しに大忙し [268718286]
- 【悲報】高市早苗さん、もう辞職しか選択肢がない… [271912485]
- 【急募】今度天国に旅行に行くから安倍さんに伝えたいこと、質問したいこと書いて毛 [343591364]
- 【愛国者速報】フィフィ、中国の“日本産水産物輸入停止”措置に私見「中国依存しないとやっていけない企業は考えを改めて」 [856698234]
- 【ござる専🏡】風間🥷配信実況スレ🏯【風間いろは】
- 【速報】中国政府、ゲームを禁輸。原神やブルアカ、荒野行動が日本で影響 [347751896]
