プログラミングのお題スレです。
【出題と回答例】
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
256デフォルトの名無しさん
2018/11/08(木) 03:57:11.05ID:AySxWi85 「この料理はまずい」の時点でマナー違反なんだからそのまま訳すのが正しい
料理がまずいときの一言を答えさせたいならそう出題すればいいことだ
そういう出題側の質とか意識してんのかなこいつ
料理がまずいときの一言を答えさせたいならそう出題すればいいことだ
そういう出題側の質とか意識してんのかなこいつ
257デフォルトの名無しさん
2018/11/08(木) 04:48:49.11ID:QHwNiY6E 数学のように、頭の中で正しいかどうかを、証明するような問題は、面倒くさい。
このスレでは、頭を使わず、単純な総当たり問題が好まれる
その方が、プログラミング的な問題
このスレでは、頭を使わず、単純な総当たり問題が好まれる
その方が、プログラミング的な問題
258デフォルトの名無しさん
2018/11/08(木) 05:18:56.02ID:HOEn5tLb お題:
自然数Nと、N個の「半角の小文字アルファベットと数字からなる1文字以上の文字列」が標準入力から順次与えられます。
文字列をNatural Sort*して標準出力から順次出力してください。
追加問題:
お題1を正規表現を使わず実装してください。
*:
"a120"と"a13"が与えられた場合、"a13","a120"の順番にソートするようにする。
また、今回は"a01"と"a1"が与えられた場合、連続する数字が少ない方を先にする、すなわち"a1","a01"の順になるようにするものとし、
"0"と"a"のどちらが先に来るかについては自由とします。
自然数Nと、N個の「半角の小文字アルファベットと数字からなる1文字以上の文字列」が標準入力から順次与えられます。
文字列をNatural Sort*して標準出力から順次出力してください。
追加問題:
お題1を正規表現を使わず実装してください。
*:
"a120"と"a13"が与えられた場合、"a13","a120"の順番にソートするようにする。
また、今回は"a01"と"a1"が与えられた場合、連続する数字が少ない方を先にする、すなわち"a1","a01"の順になるようにするものとし、
"0"と"a"のどちらが先に来るかについては自由とします。
259デフォルトの名無しさん
2018/11/08(木) 05:51:13.63ID:yQlGi5bN >>257
>数学のように、頭の中で正しいかどうかを、証明するような問題は、面倒くさい。
>このスレでは、頭を使わず、単純な総当たり問題が好まれる
ならば、「チンポがシコシコする」という日本語表現は、文法的に正しいのか?
チンポ「を」シコシコするのではなくて、チンポ「が」シコシコする。この場合、「チンポ」は主語となる。
オブジェクト指向で言う「集約」は2種類あって、全体(俺)と部分(チンポ)が繋がっている場合と、
全体(俺)と部分(チンボ)が別々になっている場合とが考えられる。けれども「チンボ」はそれ自体
が独立した生き物であり、所有者の意思とは無関係に、勃起して「シコシコする」。
例えば寝てる時にエロい夢みて朝起きてみたらチンコが勃起して射精してたとか。
違うか?
「胸がドキドキする」は良いが、「チンポがシコシコする」はダメな理由を、50字以内で述べろ!
>数学のように、頭の中で正しいかどうかを、証明するような問題は、面倒くさい。
>このスレでは、頭を使わず、単純な総当たり問題が好まれる
ならば、「チンポがシコシコする」という日本語表現は、文法的に正しいのか?
チンポ「を」シコシコするのではなくて、チンポ「が」シコシコする。この場合、「チンポ」は主語となる。
オブジェクト指向で言う「集約」は2種類あって、全体(俺)と部分(チンポ)が繋がっている場合と、
全体(俺)と部分(チンボ)が別々になっている場合とが考えられる。けれども「チンボ」はそれ自体
が独立した生き物であり、所有者の意思とは無関係に、勃起して「シコシコする」。
例えば寝てる時にエロい夢みて朝起きてみたらチンコが勃起して射精してたとか。
違うか?
「胸がドキドキする」は良いが、「チンポがシコシコする」はダメな理由を、50字以内で述べろ!
260デフォルトの名無しさん
2018/11/08(木) 07:42:34.26ID:Tu3rCJEk >>257
まあそうなんだけど、数学スレでガンガンプログラミング言語で答え出してる奴がいて正直羨ましい。
まあそうなんだけど、数学スレでガンガンプログラミング言語で答え出してる奴がいて正直羨ましい。
261デフォルトの名無しさん
2018/11/08(木) 09:21:24.69ID:UCtqQ5sl なぜそのスレで頑張らないのか。
二軍でヒーローになろうと思ってここで数学の問題出してるの?
二軍でヒーローになろうと思ってここで数学の問題出してるの?
262デフォルトの名無しさん
2018/11/08(木) 09:28:43.02ID:Tu3rCJEk ?
私は出題者じゃ無いよ。
私は出題者じゃ無いよ。
263デフォルトの名無しさん
2018/11/08(木) 09:57:33.73ID:2oWgTmr1264デフォルトの名無しさん
2018/11/08(木) 09:57:41.43ID:llemawmF265デフォルトの名無しさん
2018/11/08(木) 10:23:04.41ID:Cbg63GbQ >>259
君が何を言いたいのかよくわからない。
君が何を言いたいのかよくわからない。
266デフォルトの名無しさん
2018/11/08(木) 10:34:41.85ID:yQlGi5bN >>265
『チンポ』についての生態学は、俺にもよくわからん。
『チンポ』についての生態学は、俺にもよくわからん。
267デフォルトの名無しさん
2018/11/08(木) 11:03:16.65ID:WO5MlDuJ >>258 Ruby
puts$<.readlines.sort_by{|a|[a.scan(/\d+|\D+/).map{|e|e.to_i(36)},a.size]}
puts$<.readlines.sort_by{|a|[a.scan(/\d+|\D+/).map{|e|e.to_i(36)},a.size]}
268デフォルトの名無しさん
2018/11/08(木) 14:52:40.11ID:9PdT3eEJ269デフォルトの名無しさん
2018/11/08(木) 15:03:35.30ID:5p9g1xrz270デフォルトの名無しさん
2018/11/08(木) 15:08:17.09ID:9PdT3eEJ271デフォルトの名無しさん
2018/11/08(木) 15:11:12.86ID:5p9g1xrz272デフォルトの名無しさん
2018/11/08(木) 15:11:38.15ID:rrpg0ZUw273デフォルトの名無しさん
2018/11/08(木) 15:14:27.12ID:tjdDhH3P274デフォルトの名無しさん
2018/11/08(木) 15:33:18.20ID:quzojjRV ソートの問題、
連続する数字はその連を数値として比較しつつ同じ数値のときは桁数少を前としているわけだよな
つまり
a01a
a1b
a01b
をソートすると
a01a
a1b
a01b
連続する数字はその連を数値として比較しつつ同じ数値のときは桁数少を前としているわけだよな
つまり
a01a
a1b
a01b
をソートすると
a01a
a1b
a01b
275デフォルトの名無しさん
2018/11/08(木) 16:29:56.18ID:Tu3rCJEk >>258
Haskell
main = concat $ map qsort grop
grop = map filterlen [1..(maximum $ map length input)]
filterlen n = filter (\x -> n == length x) input
qsort [] = []
qsort (x:xs) = small ++ [x] ++ big
where small = qsort [a |a <- xs, a <= x]
big = qsort [a | a <- xs, a > x]
input = ["a130","a12","a001","a01","a1","1"]
Haskell
main = concat $ map qsort grop
grop = map filterlen [1..(maximum $ map length input)]
filterlen n = filter (\x -> n == length x) input
qsort [] = []
qsort (x:xs) = small ++ [x] ++ big
where small = qsort [a |a <- xs, a <= x]
big = qsort [a | a <- xs, a > x]
input = ["a130","a12","a001","a01","a1","1"]
276デフォルトの名無しさん
2018/11/08(木) 16:31:19.84ID:Tu3rCJEk input = ["a130","a12","a001","a01","a1","1"]
277デフォルトの名無しさん
2018/11/08(木) 18:41:10.95ID:e5hl87sZ278デフォルトの名無しさん
2018/11/08(木) 18:52:29.20ID:B0s1LWLV279デフォルトの名無しさん
2018/11/08(木) 19:15:05.42ID:85A5tG8V お題
M行N列の領域をジグザグスキャンするときの順序を求めよ
3 3
=>
1 2 6
3 5 7
4 8 9
4 2
=>
1 2
3 5
4 6
7 8
3 5
=>
01 02 06 07 12
03 05 08 11 13
04 09 10 14 15
1 8
=>
1 2 3 4 5 6 7 8
M行N列の領域をジグザグスキャンするときの順序を求めよ
3 3
=>
1 2 6
3 5 7
4 8 9
4 2
=>
1 2
3 5
4 6
7 8
3 5
=>
01 02 06 07 12
03 05 08 11 13
04 09 10 14 15
1 8
=>
1 2 3 4 5 6 7 8
280デフォルトの名無しさん
2018/11/08(木) 22:07:15.82ID:k/fJXxDB281デフォルトの名無しさん
2018/11/08(木) 22:11:37.46ID:Tu3rCJEk282デフォルトの名無しさん
2018/11/08(木) 22:16:02.65ID:EeFetNer >>267を訂正 Ruby
puts$<.readlines.sort_by{|a|a.scan(/(\D*)(\d+)/).map{|i,j|[i,j.to_i,j.size]}}
# stdin
a01b2
a1b0002
a130
a12
a001
a1
1
# stdout
1
a1
a1b0002
a01b2
a001
a12
a130
puts$<.readlines.sort_by{|a|a.scan(/(\D*)(\d+)/).map{|i,j|[i,j.to_i,j.size]}}
# stdin
a01b2
a1b0002
a130
a12
a001
a1
1
# stdout
1
a1
a1b0002
a01b2
a001
a12
a130
283デフォルトの名無しさん
2018/11/08(木) 23:33:47.08ID:TLTEncZh 誰に何を文句言うわけでもないがナチュラルソートってのは一般に
"01.25" < "1.5"
"01m 25cm" < "1m 35cm" とか
"Chapter 001 section 5" < "Chapter 1 section 6"
となるような順序での整列
逆でもいいけど
問題の仕様はどうかしらんが単に用語の解説ね
"01.25" < "1.5"
"01m 25cm" < "1m 35cm" とか
"Chapter 001 section 5" < "Chapter 1 section 6"
となるような順序での整列
逆でもいいけど
問題の仕様はどうかしらんが単に用語の解説ね
284デフォルトの名無しさん
2018/11/08(木) 23:49:40.65ID:I6IWEGdd 今回の問題の仕様とは微妙に違うから回答にはならないけど
echo -e "01m30s\n1m45s\n02m03s" | sort -V
01m30s
1m45s
02m03s
ナチュラルソートならこうなるべきだな
echo -e "01m30s\n1m45s\n02m03s" | sort -V
01m30s
1m45s
02m03s
ナチュラルソートならこうなるべきだな
285デフォルトの名無しさん
2018/11/09(金) 09:07:23.82ID:cVPfgm+I >>283-284の仕様で Ruby
args = [
'01.25', '1.5', '01m 25cm', '1m 35cm',
'Chapter 001 section 5', 'Chapter 1 section 6',
'01m30s', '1m45s', '02m03s'
]
nsort = lambda do |args|
f = ->str{str.scan(/(?=.)(\D*)(\d+(\.\d+)?)/).flat_map{|a, b| b.empty? ? [a] : [a, b.to_r]}}
g = ->str{str.scan(/\d+/).map(&:size)}
args.sort do |str1, str2|
comparison = f[str1] <=> f[str2]
comparison.zero? ? g[str1] <=> g[str2] : comparison
end
end
p nsort[args]
#=>["01m30s",
"1m45s",
"01m 25cm",
"1m 35cm",
"01.25",
"1.5",
"02m03s",
"Chapter 001 section 5",
"Chapter 1 section 6"]
args = [
'01.25', '1.5', '01m 25cm', '1m 35cm',
'Chapter 001 section 5', 'Chapter 1 section 6',
'01m30s', '1m45s', '02m03s'
]
nsort = lambda do |args|
f = ->str{str.scan(/(?=.)(\D*)(\d+(\.\d+)?)/).flat_map{|a, b| b.empty? ? [a] : [a, b.to_r]}}
g = ->str{str.scan(/\d+/).map(&:size)}
args.sort do |str1, str2|
comparison = f[str1] <=> f[str2]
comparison.zero? ? g[str1] <=> g[str2] : comparison
end
end
p nsort[args]
#=>["01m30s",
"1m45s",
"01m 25cm",
"1m 35cm",
"01.25",
"1.5",
"02m03s",
"Chapter 001 section 5",
"Chapter 1 section 6"]
286デフォルトの名無しさん
2018/11/09(金) 17:42:13.83ID:SNvr5Euv >>265
『チンポ』については、自分でも良くわからない、何とも言えない不思議な生き物だ。
『チンポ』については、自分でも良くわからない、何とも言えない不思議な生き物だ。
287デフォルトの名無しさん
2018/11/09(金) 18:36:42.14ID:B4AEy6G3 お題
1以上N以下の奇数を並べた数の桁数を求めよ
3
=> 2 (13)
10
=> 5 (13579)
9999
=> 19445 (135...99979999)
123456789
=> ?
31415926535897
=> ?
1以上N以下の奇数を並べた数の桁数を求めよ
3
=> 2 (13)
10
=> 5 (13579)
9999
=> 19445 (135...99979999)
123456789
=> ?
31415926535897
=> ?
288デフォルトの名無しさん
2018/11/09(金) 18:45:16.11ID:DHGOZxva289デフォルトの名無しさん
2018/11/09(金) 18:47:33.93ID:DHGOZxva ん、ああ。
10とか100とかになったら個数と桁数は違うか。
悪かった。
10とか100とかになったら個数と桁数は違うか。
悪かった。
290デフォルトの名無しさん
2018/11/09(金) 19:31:42.41ID:myvceSEv お題
与えられた数を最小文字数で生成する。
与えられた数を最小文字数で生成する。
291デフォルトの名無しさん
2018/11/09(金) 19:36:37.28ID:b84kY48J292デフォルトの名無しさん
2018/11/09(金) 19:38:13.95ID:JsSTi+Gx >>290
問題の意味がわからん。何か例を書いてくれ。
問題の意味がわからん。何か例を書いてくれ。
293デフォルトの名無しさん
2018/11/09(金) 19:45:38.08ID:OW/zGENl 意味のわからない日本語を解析する
294デフォルトの名無しさん
2018/11/09(金) 19:46:38.02ID:A6qAb8kp 134217728 が与えられたら 8^9 を返すとかそういう話かね?
295デフォルトの名無しさん
2018/11/09(金) 19:46:54.75ID:EUp1VEAA >>287
Haskell
main = mapM_ print $ zip3 lst fosl fos
oddstr [] = []
oddstr (x:xs) = show x:oddstr xs
fo = map (\x-> filter (odd) [1..x]) lst
foo f = map (f.concat.oddstr) fo
fos = foo id
fosl = foo length
lst = [3,10,999,123456789,31415926535897]
コードはすぐ出来たけど、計算が終わらないw
奇数が多すぎてバッファに残ってなさそうだから、ファイルにリダイレクトし直しかな。。。
Haskell
main = mapM_ print $ zip3 lst fosl fos
oddstr [] = []
oddstr (x:xs) = show x:oddstr xs
fo = map (\x-> filter (odd) [1..x]) lst
foo f = map (f.concat.oddstr) fo
fos = foo id
fosl = foo length
lst = [3,10,999,123456789,31415926535897]
コードはすぐ出来たけど、計算が終わらないw
奇数が多すぎてバッファに残ってなさそうだから、ファイルにリダイレクトし直しかな。。。
296デフォルトの名無しさん
2018/11/09(金) 20:06:34.46ID:JsSTi+Gx >>287
スマホから直接一度も試さずに書くが、Kotlin だと理屈の上ではこれでできると思う。
nが最大値な。
println((1..n step 2).joinToString("").length)
かといってこんなのメモリ食うだけ。
スマホから直接一度も試さずに書くが、Kotlin だと理屈の上ではこれでできると思う。
nが最大値な。
println((1..n step 2).joinToString("").length)
かといってこんなのメモリ食うだけ。
297デフォルトの名無しさん
2018/11/09(金) 20:38:18.97ID:Zs2FyImb >>287 Ruby
args = [0, 1, 2, 3, 10, 9999, 123456789, 31415926535897]
floor_log10 = -> n {r = 1; (0..n).find{ r *= 10; r > n}}
kotae = ->n{
x = floor_log10[n + 1]
((9*x - 1)*10**x + 10)/18 + (n-10**x+1)/2 * (x + 1) + (n < 8 ? n & 1 : 0)
}
args.each{|e| puts '%d => %d' % [e, kotae[e]]}
# =>
0 => 0
1 => 1
2 => 1
3 => 2
10 => 5
9999 => 19445
123456789 => 500000000
31415926535897 => 214355930195731
args = [0, 1, 2, 3, 10, 9999, 123456789, 31415926535897]
floor_log10 = -> n {r = 1; (0..n).find{ r *= 10; r > n}}
kotae = ->n{
x = floor_log10[n + 1]
((9*x - 1)*10**x + 10)/18 + (n-10**x+1)/2 * (x + 1) + (n < 8 ? n & 1 : 0)
}
args.each{|e| puts '%d => %d' % [e, kotae[e]]}
# =>
0 => 0
1 => 1
2 => 1
3 => 2
10 => 5
9999 => 19445
123456789 => 500000000
31415926535897 => 214355930195731
298デフォルトの名無しさん
2018/11/09(金) 21:56:37.18ID:lMSYlD+9 >>297
なんで
なんで
299デフォルトの名無しさん
2018/11/09(金) 21:58:02.15ID:lMSYlD+9300デフォルトの名無しさん
2018/11/09(金) 22:05:09.74ID:gJrymgLI >>287
Python3
print(len("".join(map(str, range(1, int(input())+1, 2)))))
を実行したらフリーズしたので
odd = range(1, int(input())+1, 2)
keta = 0
for i in odd:
keta += len(str(i))
print(keta)
#==============
123456789
=> 500000000
31415926535897
=> 終わらん
Python3
print(len("".join(map(str, range(1, int(input())+1, 2)))))
を実行したらフリーズしたので
odd = range(1, int(input())+1, 2)
keta = 0
for i in odd:
keta += len(str(i))
print(keta)
#==============
123456789
=> 500000000
31415926535897
=> 終わらん
301デフォルトの名無しさん
2018/11/09(金) 22:09:18.25ID:EUp1VEAA >>295
123456789の桁数は500000000ってのは分かった。
123456789の桁数は500000000ってのは分かった。
302デフォルトの名無しさん
2018/11/09(金) 22:23:23.31ID:PBoRuHnu >>299
0からnまでの奇数を並べてできる数の桁数をf(n)とすると(n >= 0)
p := [log10(n+1)] として n >= 10の時
f(n) = Σ[k は 0〜[(n-1)/2]]( (2k+1)の桁数 )
= 1*(0〜9までの奇数の数) + 2*(10〜99までの奇数の数) + ...
+ p*(10^(p-1)〜10^p-1までの奇数の数) + (p+1)*(10^p〜nまでの奇数の数)
= 1*5 + Σ[k は 2〜p]45k*10^(k-2) + (p+1)*[(n - 10^p + 1)/2]
= 45/100*Σ[k は 1〜p]k*10^k + 1/2 + (p+1)*[(n - 10^p + 1)/2]
= ((9p - 1)10^p + 1)/18 + 1/2 + (p+1)*[(n - 10^p + 1)/2]
= ((9p - 1)10^p + 10)/18 + (p+1)*[(n - 10^p + 1)/2] …… (*)
n = 0, 2, 4, 8, 9 の時はちょうど (*)
n = 1, 3, 5, 7 時は (*) + 1 なので
f(n) = ((9p - 1)10^p + 10)/18 + (p+1)*[(n - 10^p + 1)/2] + (n < 8 ? n & 1 : 0)
末尾の項を無理やり数式にしたいなら
[8/(n + 1)]((1 - (-1)^n)/2)(2^((5 - n)/2)([n/7] + 1))
とかにすればいいんじゃない意味ないけど
0からnまでの奇数を並べてできる数の桁数をf(n)とすると(n >= 0)
p := [log10(n+1)] として n >= 10の時
f(n) = Σ[k は 0〜[(n-1)/2]]( (2k+1)の桁数 )
= 1*(0〜9までの奇数の数) + 2*(10〜99までの奇数の数) + ...
+ p*(10^(p-1)〜10^p-1までの奇数の数) + (p+1)*(10^p〜nまでの奇数の数)
= 1*5 + Σ[k は 2〜p]45k*10^(k-2) + (p+1)*[(n - 10^p + 1)/2]
= 45/100*Σ[k は 1〜p]k*10^k + 1/2 + (p+1)*[(n - 10^p + 1)/2]
= ((9p - 1)10^p + 1)/18 + 1/2 + (p+1)*[(n - 10^p + 1)/2]
= ((9p - 1)10^p + 10)/18 + (p+1)*[(n - 10^p + 1)/2] …… (*)
n = 0, 2, 4, 8, 9 の時はちょうど (*)
n = 1, 3, 5, 7 時は (*) + 1 なので
f(n) = ((9p - 1)10^p + 10)/18 + (p+1)*[(n - 10^p + 1)/2] + (n < 8 ? n & 1 : 0)
末尾の項を無理やり数式にしたいなら
[8/(n + 1)]((1 - (-1)^n)/2)(2^((5 - n)/2)([n/7] + 1))
とかにすればいいんじゃない意味ないけど
303デフォルトの名無しさん
2018/11/09(金) 23:35:53.00ID:QKOvQ/Be >>287 Squeak/Pharo Smalltalk
| fn |
fn := [:N |
| nDig |
nDig := N log truncated.
(1 to: nDig)
inject: (1 to: N by: 2) size * (nDig + 1)
into: [:tot :m | tot - ((10 raisedTo: m) / 2)]
].
#(3 10 9999 123456789 31415926535897) collect: fn
"=> #(2 5 19445 500000000 214355930195731) "
| fn |
fn := [:N |
| nDig |
nDig := N log truncated.
(1 to: nDig)
inject: (1 to: N by: 2) size * (nDig + 1)
into: [:tot :m | tot - ((10 raisedTo: m) / 2)]
].
#(3 10 9999 123456789 31415926535897) collect: fn
"=> #(2 5 19445 500000000 214355930195731) "
304デフォルトの名無しさん
2018/11/09(金) 23:56:11.30ID:EzT7HP1o >>302
訂正
((9p - 1)10^p + 10)/18 -> [((9p - 1)10^p + 10)/18]
あと (n < 8 ? n & 1 : 0) は (1 - (-1)^n)/2*[3/([√n] + 1)] の方がより簡単か
訂正
((9p - 1)10^p + 10)/18 -> [((9p - 1)10^p + 10)/18]
あと (n < 8 ? n & 1 : 0) は (1 - (-1)^n)/2*[3/([√n] + 1)] の方がより簡単か
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
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 [ぐれ★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★2 [BFU★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★3 [BFU★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★2 [BFU★]
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 [Hitzeschleier★]
- 政府、株式の配当など金融所得を高齢者の医療保険料や窓口負担に反映する方針を固めた [バイト歴50年★]
- 中国高官と話す外務省局長の表情、やばい ★2 [175344491]
- 偏差値35大臣「すぐに経済的威圧するところへの依存はリスク」 [834922174]
- 中国外務省「日中関係の悪化は高市早苗首相が原因」と名指しで強く非難。キタ━(゚∀゚)━! [153490809]
- 【朗報】高市、中国からの日本行き空路49万件キャンセルを達成🤩オーバーツーリズム対策の手腕が光る [359965264]
- 日本政府「高市総理の発言は問題ないと伝え、中国総領事のSNS投稿は問題があると中国に伝えました😊」 [931948549]
- 小野田経済安保相「すぐに経済的威圧するところへの依存はリスク」😲 [861717324]
