プログラミングのお題スレです。
【出題と回答例】
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/
宿題は宿題スレがあるのでそちらへ。
※前スレ
プログラミングのお題スレ Part16
https://mevius.5ch.net/test/read.cgi/tech/1573948822/
探検
プログラミングのお題スレ Part17
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2020/03/13(金) 01:42:47.06ID:0rEhys36365デフォルトの名無しさん
2020/04/28(火) 19:44:24.43ID:6K6MgdzD >>293
全加算器
Step 12, Solution 3
0 : -1, -2: 0, 0, 0, 0, 1, 1, 1, 1 : 4
1 : -1, -2: 0, 0, 1, 1, 0, 0, 1, 1 : 4
2 : -1, -2: 0, 1, 0, 1, 0, 1, 0, 1 : 4
3 : 2, 1: 1, 1, 1, 0, 1, 1, 1, 0 : 6
4 : 3, 1: 1, 1, 0, 1, 1, 1, 0, 1 : 6
5 : 3, 2: 1, 0, 1, 1, 1, 0, 1, 1 : 6
6 : 5, 4: 0, 1, 1, 0, 0, 1, 1, 0 : 4
7 : 6, 0: 1, 1, 1, 1, 1, 0, 0, 1 : 6
8 : 7, 0: 1, 1, 1, 1, 0, 1, 1, 0 : 6
9 : 7, 3: 0, 0, 0, 1, 0, 1, 1, 1 : 4 *
10 : 7, 6: 1, 0, 0, 1, 1, 1, 1, 1 : 6
11 : 10, 8: 0, 1, 1, 0, 1, 0, 0, 1 : 4 *
他2
全加算器
Step 12, Solution 3
0 : -1, -2: 0, 0, 0, 0, 1, 1, 1, 1 : 4
1 : -1, -2: 0, 0, 1, 1, 0, 0, 1, 1 : 4
2 : -1, -2: 0, 1, 0, 1, 0, 1, 0, 1 : 4
3 : 2, 1: 1, 1, 1, 0, 1, 1, 1, 0 : 6
4 : 3, 1: 1, 1, 0, 1, 1, 1, 0, 1 : 6
5 : 3, 2: 1, 0, 1, 1, 1, 0, 1, 1 : 6
6 : 5, 4: 0, 1, 1, 0, 0, 1, 1, 0 : 4
7 : 6, 0: 1, 1, 1, 1, 1, 0, 0, 1 : 6
8 : 7, 0: 1, 1, 1, 1, 0, 1, 1, 0 : 6
9 : 7, 3: 0, 0, 0, 1, 0, 1, 1, 1 : 4 *
10 : 7, 6: 1, 0, 0, 1, 1, 1, 1, 1 : 6
11 : 10, 8: 0, 1, 1, 0, 1, 0, 0, 1 : 4 *
他2
366デフォルトの名無しさん
2020/04/28(火) 21:14:59.05ID:5Mrr6wN/ お題:CapsLock on/offを切り替えながら文字入力
[入力]
A B C S
A : Shiftキーを押さずに1文字入力するのにかかる時間
B : Shiftキーを押しながら1文字入力するのにかかる時間(※)
C : CapsLock on/offの切り替えにかかる時間
S : 入力する文字列(英字のみ)
※CapsLock onで小文字入力、CapsLock offで大文字入力にかかる時間をBとする
[出力]
初期状態をCapsLock offとしたとき、Sを入力するのにかかる時間の最小値を求めよ
(例1)
2 3 4 ABCDE
=> 14
CapsLockを使わない場合、3+3+3+3+3=15
CapsLockを使うと、(4)+2+2+2+2+2=14
(例2)
2 3 4 aBCDe
=> 13
CapsLockを使わない場合、2+3+3+3+2=13
2文字目以降CapsLock onの場合、2+(4)+2+2+2+3=15
[入力]
A B C S
A : Shiftキーを押さずに1文字入力するのにかかる時間
B : Shiftキーを押しながら1文字入力するのにかかる時間(※)
C : CapsLock on/offの切り替えにかかる時間
S : 入力する文字列(英字のみ)
※CapsLock onで小文字入力、CapsLock offで大文字入力にかかる時間をBとする
[出力]
初期状態をCapsLock offとしたとき、Sを入力するのにかかる時間の最小値を求めよ
(例1)
2 3 4 ABCDE
=> 14
CapsLockを使わない場合、3+3+3+3+3=15
CapsLockを使うと、(4)+2+2+2+2+2=14
(例2)
2 3 4 aBCDe
=> 13
CapsLockを使わない場合、2+3+3+3+2=13
2文字目以降CapsLock onの場合、2+(4)+2+2+2+3=15
367デフォルトの名無しさん
2020/04/29(水) 01:24:53.33ID:W2Vd/2U1 >>364
そんな長いコードよく1日でかけたな
そんな長いコードよく1日でかけたな
368デフォルトの名無しさん
2020/04/29(水) 02:08:45.13ID:hFx8dHat つられて開いたら、そんなに長くなかった
369デフォルトの名無しさん
2020/04/29(水) 02:11:21.30ID:hFx8dHat モレも若い頃、力ずくの実装でこう言ふコード書いていた時期があった希ガス 遠い目
370デフォルトの名無しさん
2020/04/29(水) 02:17:11.52ID:7u9sxpAB プログラマってプライド高いからすぐに張り合うよねw
371デフォルトの名無しさん
2020/04/29(水) 02:21:44.68ID:MMtCgKFX 誰も張り合っていないが
372デフォルトの名無しさん
2020/04/29(水) 02:22:31.06ID:IXK0ODva 子どもみたい
373デフォルトの名無しさん
2020/04/29(水) 02:25:50.52ID:HpBd3h/I 大人とは何か
374デフォルトの名無しさん
2020/04/29(水) 02:27:25.42ID:IXK0ODva 冗談だから間に受けなくていいよ。
375デフォルトの名無しさん
2020/04/29(水) 02:28:27.81ID:HpBd3h/I 大人とは酒、タバコ、Unix
376デフォルトの名無しさん
2020/04/29(水) 02:29:29.28ID:C2sNF63S >>374
うざいからよそでやれ
うざいからよそでやれ
377デフォルトの名無しさん
2020/04/29(水) 02:29:46.63ID:sgNXZLgj うん。で?
378デフォルトの名無しさん
2020/04/29(水) 02:30:51.12ID:gC4oizq8 >>375
うざいからよそでやれ
うざいからよそでやれ
379デフォルトの名無しさん
2020/04/29(水) 02:33:29.03ID:YwwSpjL1 餌をあげないでください。
380デフォルトの名無しさん
2020/04/29(水) 02:33:56.37ID:b7RiChMO >>379
うざいからよそでやれ
うざいからよそでやれ
381デフォルトの名無しさん
2020/04/29(水) 02:35:59.66ID:nrbD9/Mw >>380
あなたにとってうざいことは、みな歓迎しています
あなたにとってうざいことは、みな歓迎しています
382デフォルトの名無しさん
2020/04/29(水) 02:36:09.16ID:CXgZ7sKW >>369
そうなんだおじさん「そうなんだ」
そうなんだおじさん「そうなんだ」
383デフォルトの名無しさん
2020/04/29(水) 02:37:10.95ID:hZe4L1sV いやいや全然違います
384デフォルトの名無しさん
2020/04/29(水) 02:38:46.06ID:pkOZSJYa いいえ全然違いません
385デフォルトの名無しさん
2020/04/29(水) 02:39:10.87ID:OQU5gELq くだらねぇーw
386デフォルトの名無しさん
2020/04/29(水) 02:40:49.50ID:tOnjZeuD くだらないことは何度も
387デフォルトの名無しさん
2020/04/29(水) 02:41:29.87ID:OQU5gELq うん。で?
388デフォルトの名無しさん
2020/04/29(水) 02:41:55.06ID:i/nVZZDh うざいからよそでやれ
389デフォルトの名無しさん
2020/04/29(水) 02:43:06.43ID:OQU5gELq │ _、_
│ ヽ( ,_ノ`)ノ 残念、それは私のおいなりさんだ。
│ へノ /
└→ ω ノ
>
│ ヽ( ,_ノ`)ノ 残念、それは私のおいなりさんだ。
│ へノ /
└→ ω ノ
>
390デフォルトの名無しさん
2020/04/29(水) 02:43:16.68ID:JIRRi7ju おじさんはここがいいです。
391デフォルトの名無しさん
2020/04/29(水) 02:44:14.14ID:Fecc9l/8 くだらねーw
392デフォルトの名無しさん
2020/04/29(水) 02:44:35.49ID:OQU5gELq 逝ってよし
393デフォルトの名無しさん
2020/04/29(水) 02:45:11.17ID:73PkxB6e おじさんはよそに行きましょうね
394デフォルトの名無しさん
2020/04/29(水) 02:45:55.07ID:OQU5gELq ↓少し下でID変えて書くはず
逝ってよし
逝ってよし
395デフォルトの名無しさん
2020/04/29(水) 02:46:12.06ID:mcZoq7mu くだらねーw
396デフォルトの名無しさん
2020/04/29(水) 02:47:10.32ID:XlBNFPbk 逝ってよし
397デフォルトの名無しさん
2020/04/29(水) 02:47:46.32ID:OQU5gELq ktkr
398デフォルトの名無しさん
2020/04/29(水) 02:48:03.46ID:QCxNpmbM くだらねーw
399デフォルトの名無しさん
2020/04/29(水) 02:49:03.69ID:P4G9hJZv 律儀だなお前
400デフォルトの名無しさん
2020/04/29(水) 02:50:36.73ID:WGhV7jsx おじいちゃんの唐突な自分語りワロタ
401デフォルトの名無しさん
2020/04/29(水) 02:50:44.78ID:189Zc0ZE >>398 ご褒美あげるよ
https://www.google.co.jp/search?q=%E3%83%9E%E3%83%B3%E3%82%B3&hl=ja&source=lnms&tbm=isch&sa=X&ved=2ahUKEwibwsmt14vpAhXGQN4KHZx_AsYQ_AUoAnoECAsQBA&biw=1024&bih=626
https://www.google.co.jp/search?q=%E3%83%9E%E3%83%B3%E3%82%B3&hl=ja&source=lnms&tbm=isch&sa=X&ved=2ahUKEwibwsmt14vpAhXGQN4KHZx_AsYQ_AUoAnoECAsQBA&biw=1024&bih=626
402デフォルトの名無しさん
2020/04/29(水) 02:53:16.11ID:189Zc0ZE >>400
お前も、ご褒美、欲しい?
お前も、ご褒美、欲しい?
403デフォルトの名無しさん
2020/04/29(水) 02:54:44.35ID:189Zc0ZE やっぱ、お前には、あーげない。
404デフォルトの名無しさん
2020/04/29(水) 02:57:53.08ID:189Zc0ZE なぜこの程度で、黙る?
405デフォルトの名無しさん
2020/04/29(水) 02:59:48.25ID:189Zc0ZE かわいそうなことをしてしまったかな…
406デフォルトの名無しさん
2020/04/29(水) 03:13:10.26ID:VGrmX9xw ご褒美にどうせ貼るならこっちだろ
https://www.google.co.jp/search?q=%E3%83%9E%E3%83%B3%E3%82%B3&source=lnms&tbm=isch&sa=X&ved=2ahUKEwi2__io3IvpAhXoy4sBHWLLAs0Q_AUoAnoECAsQBA&biw=1024&bih=626
https://www.google.co.jp/search?q=%E3%83%9E%E3%83%B3%E3%82%B3&source=lnms&tbm=isch&sa=X&ved=2ahUKEwi2__io3IvpAhXoy4sBHWLLAs0Q_AUoAnoECAsQBA&biw=1024&bih=626
407デフォルトの名無しさん
2020/04/29(水) 03:14:48.43ID:VGrmX9xw いやいやこっち
https://www.google.co.jp/search?q=%E3%83%9E%E3%83%B3%E3%82%B3&source=lmns&tbm=vid&bih=626&biw=1024&hl=ja&ved=2ahUKEwja0Yir3IvpAhUyMHAKHSsUDc0Q_AUoAXoECAEQAQ
https://www.google.co.jp/search?q=%E3%83%9E%E3%83%B3%E3%82%B3&source=lmns&tbm=vid&bih=626&biw=1024&hl=ja&ved=2ahUKEwja0Yir3IvpAhUyMHAKHSsUDc0Q_AUoAXoECAEQAQ
408289
2020/04/29(水) 07:47:59.06ID:h4pVS5Or409デフォルトの名無しさん
2020/04/29(水) 09:28:47.04ID:7z7Xd+nS >>366 Ruby
# A <= B とする
def f(a, b, c, arr, cl = false)
return 0 if arr.empty?
arr = arr.clone
cap, size = arr.shift
return a * size + f(a, b, c, arr, cl) if cap == cl
[c + a * size + f(a, b, c, arr, !cl), b * size + f(a, b, c, arr, cl)].min
end
g = -> str {str.scan(/[A-Z]+|[a-z]+/).map{|s| [s.match?(/[A-Z]/), s.size]}}
[
'2 3 4 ABCDE',
'2 3 4 aBCEe',
'2 3 4 XMLHttpRequestEventTarget'
].each{|s| *e, s = s.split; puts '%s => %d' % [s, f(*e.map(&:to_i), g[s])]}
# =>
ABCDE => 14
aBCEe => 13
XMLHttpRequestEventTarget => 57
# A <= B とする
def f(a, b, c, arr, cl = false)
return 0 if arr.empty?
arr = arr.clone
cap, size = arr.shift
return a * size + f(a, b, c, arr, cl) if cap == cl
[c + a * size + f(a, b, c, arr, !cl), b * size + f(a, b, c, arr, cl)].min
end
g = -> str {str.scan(/[A-Z]+|[a-z]+/).map{|s| [s.match?(/[A-Z]/), s.size]}}
[
'2 3 4 ABCDE',
'2 3 4 aBCEe',
'2 3 4 XMLHttpRequestEventTarget'
].each{|s| *e, s = s.split; puts '%s => %d' % [s, f(*e.map(&:to_i), g[s])]}
# =>
ABCDE => 14
aBCEe => 13
XMLHttpRequestEventTarget => 57
410デフォルトの名無しさん
2020/04/29(水) 09:42:47.46ID:v+B1NZPE >>308
2番目の例impossibleじゃなくて S -> 3 -> Gじゃないの?って思ったら入力1行目はH Wだった
2番目の例impossibleじゃなくて S -> 3 -> Gじゃないの?って思ったら入力1行目はH Wだった
411デフォルトの名無しさん
2020/04/29(水) 16:10:16.80ID:HpBd3h/I412デフォルトの名無しさん
2020/04/29(水) 21:05:32.34ID:HpBd3h/I413デフォルトの名無しさん
2020/04/30(木) 06:48:30.61ID:2MGLj+B4 >>293
4入力セレクタ
digraph g1 {
subgraph cluster_1 {
label = "Solution_1"
aa_1_0, aa_1_0 -> aa_1_6 ; aa_1_1, aa_1_1 -> aa_1_7 ; aa_1_3, aa_1_1 -> aa_1_8 ;
aa_1_5, aa_1_1 -> aa_1_9 ; aa_1_7, aa_1_2 -> aa_1_10 ; aa_1_7, aa_1_4 -> aa_1_11 ;
aa_1_10, aa_1_8 -> aa_1_12 ; aa_1_11, aa_1_9 -> aa_1_13 ; aa_1_12, aa_1_6 -> aa_1_14 ;
aa_1_13, aa_1_0 -> aa_1_15 ; aa_1_15, aa_1_14 -> aa_1_16 ;
}
}
4入力セレクタ
digraph g1 {
subgraph cluster_1 {
label = "Solution_1"
aa_1_0, aa_1_0 -> aa_1_6 ; aa_1_1, aa_1_1 -> aa_1_7 ; aa_1_3, aa_1_1 -> aa_1_8 ;
aa_1_5, aa_1_1 -> aa_1_9 ; aa_1_7, aa_1_2 -> aa_1_10 ; aa_1_7, aa_1_4 -> aa_1_11 ;
aa_1_10, aa_1_8 -> aa_1_12 ; aa_1_11, aa_1_9 -> aa_1_13 ; aa_1_12, aa_1_6 -> aa_1_14 ;
aa_1_13, aa_1_0 -> aa_1_15 ; aa_1_15, aa_1_14 -> aa_1_16 ;
}
}
414289
2020/04/30(木) 07:15:11.89ID:SPWNNB7s415デフォルトの名無しさん
2020/05/01(金) 05:08:54.81ID:GhPTuZah >>286
EXNORはちょっとおもしろい。
Step 7, Solution 1
0 : -1, -2: 0, 0, 1, 1 : 2
1 : -1, -2: 0, 1, 0, 1 : 2
2 : 0, 0: 1, 1, 0, 0 : 2
3 : 1, 0: 1, 1, 1, 0 : 3
4 : 1, 1: 1, 0, 1, 0 : 2
5 : 4, 2: 0, 1, 1, 1 : 3
6 : 5, 3: 1, 0, 0, 1 : 2 *
EXNORはちょっとおもしろい。
Step 7, Solution 1
0 : -1, -2: 0, 0, 1, 1 : 2
1 : -1, -2: 0, 1, 0, 1 : 2
2 : 0, 0: 1, 1, 0, 0 : 2
3 : 1, 0: 1, 1, 1, 0 : 3
4 : 1, 1: 1, 0, 1, 0 : 2
5 : 4, 2: 0, 1, 1, 1 : 3
6 : 5, 3: 1, 0, 0, 1 : 2 *
416デフォルトの名無しさん
2020/05/01(金) 05:42:45.32ID:VWVnAecH お題: 関数とパイプを実装せよ
以下のような文字列をパースし、パイプに繋げながら関数を実行せよ
標準入力と標準出力の代わりにバッファを使って実装すること
in < "hello"
out > hello
in < "hello | world"
out > helloworld
in < "world | hello"
out > worldhello
in < "hello | upper"
out > HELLO
in < "hello | world | upper"
out > HELLOWORLD
以下のような文字列をパースし、パイプに繋げながら関数を実行せよ
標準入力と標準出力の代わりにバッファを使って実装すること
in < "hello"
out > hello
in < "hello | world"
out > helloworld
in < "world | hello"
out > worldhello
in < "hello | upper"
out > HELLO
in < "hello | world | upper"
out > HELLOWORLD
417デフォルトの名無しさん
2020/05/01(金) 06:02:49.53ID:+MJaN8j/ >>416
hello | upperはhelloupperだろ
hello | upperはhelloupperだろ
418289
2020/05/01(金) 07:03:56.16ID:bMo1YMx1419デフォルトの名無しさん
2020/05/01(金) 07:11:29.45ID:VWVnAecH >>417
upperはバッファを大文字にする関数
upperはバッファを大文字にする関数
420デフォルトの名無しさん
2020/05/01(金) 07:20:48.70ID:kd4VrQns いや、存在する関数を全部定義しないと実装なんてできんやん
突っ込まれて思わなかったの?
突っ込まれて思わなかったの?
421デフォルトの名無しさん
2020/05/01(金) 07:55:56.05ID:VWVnAecH hello, world, upperだけ実装すればいいのでは
422デフォルトの名無しさん
2020/05/01(金) 08:08:25.74ID:VWVnAecH みんな真面目だなw
423デフォルトの名無しさん
2020/05/01(金) 08:25:09.26ID:VWVnAecH >>416 書き直し
お題: 関数hello, world, upperを実装し、それらをパイプで繋げて実行できるようにせよ
標準入力からコマンドライン文字列が一行ずつ入力されるので、それをパースして上記の関数を組み合わせて実行する
関数の出力と入力には標準入出力を使う代わりに、バッファを使い、コマンドライン全体の実行が終わったら構築したバッファを標準出力へ出力すること
例えば入力されるコマンドラインは
in < hello
in < hello | world
in < hello | world | upper
in < world | hello
in < world | hello | upper
のようになる
hello関数はバッファに文字列「hello」を追加し、world関数はバッファに文字列「wolrd」を追加し、upperはバッファ内の文字列を大文字にする関数である
よって最終的なコマンドラインの出力は
in < hello
out > hello
in < hello | world
out > helloworld
in < hello | world | upper
out > HELLOWORLD
in < world | upper | hello
out > WORLDhello
のようになる
お題: 関数hello, world, upperを実装し、それらをパイプで繋げて実行できるようにせよ
標準入力からコマンドライン文字列が一行ずつ入力されるので、それをパースして上記の関数を組み合わせて実行する
関数の出力と入力には標準入出力を使う代わりに、バッファを使い、コマンドライン全体の実行が終わったら構築したバッファを標準出力へ出力すること
例えば入力されるコマンドラインは
in < hello
in < hello | world
in < hello | world | upper
in < world | hello
in < world | hello | upper
のようになる
hello関数はバッファに文字列「hello」を追加し、world関数はバッファに文字列「wolrd」を追加し、upperはバッファ内の文字列を大文字にする関数である
よって最終的なコマンドラインの出力は
in < hello
out > hello
in < hello | world
out > helloworld
in < hello | world | upper
out > HELLOWORLD
in < world | upper | hello
out > WORLDhello
のようになる
424デフォルトの名無しさん
2020/05/01(金) 08:29:55.15ID:R0k5e7Mk hello world それぞれを改行無しの printf などで出力し
upper は大きくするだけか
upper は大きくするだけか
425デフォルトの名無しさん
2020/05/01(金) 08:34:39.92ID:VWVnAecH >>424
バッファを使わずに標準入出力だけで実装できるならそれでもいいです
バッファを使わずに標準入出力だけで実装できるならそれでもいいです
426デフォルトの名無しさん
2020/05/01(金) 11:04:14.34ID:MCEzZFz/ Ruby には、まさに文字列(バッファ)に、IO インタフェースを実装したクラス、StringIO がある!
427デフォルトの名無しさん
2020/05/01(金) 11:29:05.85ID:TOWtsDG5 >>423 Ruby
$><<$_.split(' | ').reduce(''){|s,e|[s.upcase,s+e][e.ord%-3]}while gets
-*- input -*-
hello
hello | world
hello | world | upper
world | hello
world | hello | upper
-*- output -*-
hello
helloworld
HELLOWORLD
worldhello
WORLDHELLO
$><<$_.split(' | ').reduce(''){|s,e|[s.upcase,s+e][e.ord%-3]}while gets
-*- input -*-
hello
hello | world
hello | world | upper
world | hello
world | hello | upper
-*- output -*-
hello
helloworld
HELLOWORLD
worldhello
WORLDHELLO
428デフォルトの名無しさん
2020/05/02(土) 23:08:15.43ID:MMgV24Hu429デフォルトの名無しさん
2020/05/03(日) 01:19:30.67ID:SFv1ny6W >>423 Perl5, 要求仕様通り素直に三つの関数を定義し、文字列をparseした単語の関数名を呼び出す形で実装
sub hello { $o .= 'hello' }
sub world { $o .= 'world' }
sub upper { $o = uc $o }
for (<DATA>) {
$o = '';
&$_ for /(\w+)/g;
print "$o\n";
}
__DATA__
hello
hello | world
hello | world | upper
world | hello
world | hello | upper
world | upper | hello
実行結果
~ $ perl 17_423_hello_world_upperl.pl
hello
helloworld
HELLOWORLD
worldhello
WORLDHELLO
WORLDhello
sub hello { $o .= 'hello' }
sub world { $o .= 'world' }
sub upper { $o = uc $o }
for (<DATA>) {
$o = '';
&$_ for /(\w+)/g;
print "$o\n";
}
__DATA__
hello
hello | world
hello | world | upper
world | hello
world | hello | upper
world | upper | hello
実行結果
~ $ perl 17_423_hello_world_upperl.pl
hello
helloworld
HELLOWORLD
worldhello
WORLDHELLO
WORLDhello
430289
2020/05/03(日) 07:15:48.78ID:E6IlR6fn431デフォルトの名無しさん
2020/05/03(日) 09:17:11.44ID:n5Gy3ytY >>427
world | upper | hello
world | upper | hello
432デフォルトの名無しさん
2020/05/03(日) 09:27:35.74ID:/8opEJBh >>431
ちゃんと"WORLDhello"って出力される
ちゃんと"WORLDhello"って出力される
433デフォルトの名無しさん
2020/05/04(月) 00:23:42.89ID:k2FsLwVs >>423
Kotlin
https://paiza.io/projects/Opyd7gwTb5jwgD2LANwPeA
文字列を判定して対応する処理をするだけでも良かったが、Map に文字列と対応する処理をセットしてそれを呼び出して実行させるようにした。
また hello, world, upper 以外が入力されるとエラーが出るようになっている。
Kotlin
https://paiza.io/projects/Opyd7gwTb5jwgD2LANwPeA
文字列を判定して対応する処理をするだけでも良かったが、Map に文字列と対応する処理をセットしてそれを呼び出して実行させるようにした。
また hello, world, upper 以外が入力されるとエラーが出るようになっている。
434デフォルトの名無しさん
2020/05/04(月) 00:44:53.84ID:Jy1F1UMD また変なTwitterの奴か
435289
2020/05/04(月) 07:13:05.12ID:p+pGQ7l4436デフォルトの名無しさん
2020/05/04(月) 07:38:47.50ID:kseU4FEU >>435
端子の出現順を固定しないから無駄に組合せが増えているのではないだろうか。
端子の出現順を固定しないから無駄に組合せが増えているのではないだろうか。
437デフォルトの名無しさん
2020/05/04(月) 13:46:12.35ID:FrWOvyZy お題
H行W列のマス目が与えられる。左上の座標を(0, 0)、右下の座標を(H, W)とする。
座標(0.5, 0)を始点にしてボールを右下45度の方向に発射する。
ボールが始点に戻ってくるまでに壁に衝突する回数を求めよ。
(マス目の範囲外は壁とみなす。ボールの大きさや摩擦などは無視してよい)
[入力]
H W
('.'が地面、'#'が壁)
[例]
1 1
.
=> 4 (軌跡は◇の形)
4 5
..#..
#..#.
.#..#
..#..
=> 18
5 10
..........
#########.
..........
.#########
..........
=> 66
H行W列のマス目が与えられる。左上の座標を(0, 0)、右下の座標を(H, W)とする。
座標(0.5, 0)を始点にしてボールを右下45度の方向に発射する。
ボールが始点に戻ってくるまでに壁に衝突する回数を求めよ。
(マス目の範囲外は壁とみなす。ボールの大きさや摩擦などは無視してよい)
[入力]
H W
('.'が地面、'#'が壁)
[例]
1 1
.
=> 4 (軌跡は◇の形)
4 5
..#..
#..#.
.#..#
..#..
=> 18
5 10
..........
#########.
..........
.#########
..........
=> 66
438デフォルトの名無しさん
2020/05/04(月) 15:35:11.55ID:oc+BowE6439デフォルトの名無しさん
2020/05/04(月) 15:38:07.95ID:oc+BowE6 ああ、違うな
壁って長方形の辺上にだけあるのかと思って解いてた
壁って長方形の辺上にだけあるのかと思って解いてた
440デフォルトの名無しさん
2020/05/04(月) 16:28:39.55ID:cRRhYgqa バーカ
441デフォルトの名無しさん
2020/05/04(月) 17:18:49.19ID:7s1fJbf+ >>437 Perl5、素直に壁で跳ね返る回数をカウント
for (<DATA>) {
($H, $W, @a) = /(\S+)/g;
@s = map{[map{$_ eq '#'} split '']} @a;
my %t;
for $h (0..$H-1) { $t{$h+0.5}{0} = $t{$h+0.5}{$W} = 1;
for $w (0..$W-1) { $t{0}{$w+0.5} = $t{$H}{$w+0.5} = 1;
next unless $s[$h][$w];
$t{$h}{$w+0.5} = $t{$h+0.5}{$w} = $t{$h+0.5}{$w+1} = $t{$h+1}{$w+0.5} = 1;
}
}
($x, $y, $dx, $dy, $n) = (0.5, 0, 0.5, 0.5, 0);
do {
$x += $dx; $y += $dy;
if ($t{$y}{$x}) {
$dx = -$dx if $y =~ /\.5/; $dy = -$dy if $x =~ /\.5/;
$n++;
}
} while $x != 0.5 or $y != 0;
print "$n\n"
}
__DATA__
1 1 .
4 5 ..#.. #..#. .#..# ..#..
5 10 .......... #########. .......... .######### ..........
実行結果
~ $ perl 17_437_bounce.pl
4
18
66
for (<DATA>) {
($H, $W, @a) = /(\S+)/g;
@s = map{[map{$_ eq '#'} split '']} @a;
my %t;
for $h (0..$H-1) { $t{$h+0.5}{0} = $t{$h+0.5}{$W} = 1;
for $w (0..$W-1) { $t{0}{$w+0.5} = $t{$H}{$w+0.5} = 1;
next unless $s[$h][$w];
$t{$h}{$w+0.5} = $t{$h+0.5}{$w} = $t{$h+0.5}{$w+1} = $t{$h+1}{$w+0.5} = 1;
}
}
($x, $y, $dx, $dy, $n) = (0.5, 0, 0.5, 0.5, 0);
do {
$x += $dx; $y += $dy;
if ($t{$y}{$x}) {
$dx = -$dx if $y =~ /\.5/; $dy = -$dy if $x =~ /\.5/;
$n++;
}
} while $x != 0.5 or $y != 0;
print "$n\n"
}
__DATA__
1 1 .
4 5 ..#.. #..#. .#..# ..#..
5 10 .......... #########. .......... .######### ..........
実行結果
~ $ perl 17_437_bounce.pl
4
18
66
442デフォルトの名無しさん
2020/05/04(月) 18:29:48.35ID:FrWOvyZy お題
2つの文字列について、文字列を構成する文字が同じで、最初と最後の文字が合っていれば、
その2つの文字列は等価であるとみなす。
文字列がN個与えられる。
上記ルールに従って重複を除去したとき、文字列はいくつ残るか?
(例)
6
programming
odai
prorgamnimg
oadi
pgorgamming
idao
=> 4
2つの文字列について、文字列を構成する文字が同じで、最初と最後の文字が合っていれば、
その2つの文字列は等価であるとみなす。
文字列がN個与えられる。
上記ルールに従って重複を除去したとき、文字列はいくつ残るか?
(例)
6
programming
odai
prorgamnimg
oadi
pgorgamming
idao
=> 4
443デフォルトの名無しさん
2020/05/04(月) 19:25:38.15ID:ku0WQYaW >>442 Perl5、"6"も文字列に含めれば、4
for (<DATA>) {
@a = /(\w)/g;
%h = map{$_ => 1} @a;
$s = $a[0].join('', sort keys %h).$a[-1];
print "$_ -> $s\n";
$g{$s}++;
}
print keys(%g)."\n";
__DATA__
6
programming
odai
prorgamnimg
oadi
pgorgamming
idao
実行結果
~ $ perl 17_442_similstr.pl
666 <- 6
pagimnoprg <- programming
oadioi <- odai
pagimnoprg <- prorgamnimg
oadioi <- oadi
pagimnoprg <- pgorgamming
iadioo <- idao
4
for (<DATA>) {
@a = /(\w)/g;
%h = map{$_ => 1} @a;
$s = $a[0].join('', sort keys %h).$a[-1];
print "$_ -> $s\n";
$g{$s}++;
}
print keys(%g)."\n";
__DATA__
6
programming
odai
prorgamnimg
oadi
pgorgamming
idao
実行結果
~ $ perl 17_442_similstr.pl
666 <- 6
pagimnoprg <- programming
oadioi <- odai
pagimnoprg <- prorgamnimg
oadioi <- oadi
pagimnoprg <- pgorgamming
iadioo <- idao
4
444デフォルトの名無しさん
2020/05/04(月) 19:32:53.52ID:Jy1F1UMD 暇人か
445デフォルトの名無しさん
2020/05/04(月) 19:38:37.16ID:aNaLc8en >>442
(defun cambridge-string= (a b)
(and (char= (elt a 0) (elt b 0))
(char= (elt a (1- (length a))) (elt b (1- (length b))))
(string= (sort (copy-seq a) #'char<) (sort (copy-seq b) #'char<))))
(defvar *set* nil)
(dotimes (n (read))
(pushnew (read-line) *set* :test #'cambridge-string=))
(princ (length *set*))
common lispのsortは破壊的だったのか
(defun cambridge-string= (a b)
(and (char= (elt a 0) (elt b 0))
(char= (elt a (1- (length a))) (elt b (1- (length b))))
(string= (sort (copy-seq a) #'char<) (sort (copy-seq b) #'char<))))
(defvar *set* nil)
(dotimes (n (read))
(pushnew (read-line) *set* :test #'cambridge-string=))
(princ (length *set*))
common lispのsortは破壊的だったのか
446デフォルトの名無しさん
2020/05/04(月) 23:39:20.54ID:g5q+36pu447デフォルトの名無しさん
2020/05/04(月) 23:43:12.22ID:g5q+36pu448デフォルトの名無しさん
2020/05/04(月) 23:55:30.91ID:GlEFtj51 >>442 Ruby
p %[6 programming odai prorgamnimg oadi pgorgamming idao].
uniq{|s| b, *m, e = s.chars; [b, e, m.uniq.sort]}.size
# => 4
p %[6 programming odai prorgamnimg oadi pgorgamming idao].
uniq{|s| b, *m, e = s.chars; [b, e, m.uniq.sort]}.size
# => 4
449289
2020/05/05(火) 07:17:23.92ID:JzUmiA6e450デフォルトの名無しさん
2020/05/05(火) 09:05:10.91ID:ZpeQ6MPR451デフォルトの名無しさん
2020/05/05(火) 09:59:56.94ID:nQMNje/J 4入力一致の回路
選別
digraph g1 {
subgraph cluster_1 {
label = "Solution_1"
aa_1_0, aa_1_0 -> aa_1_4 ; aa_1_1, aa_1_1 -> aa_1_5 ;
aa_1_3, aa_1_2 -> aa_1_6 ; aa_1_4, aa_1_2 -> aa_1_7 ;
aa_1_5, aa_1_3 -> aa_1_8 ; aa_1_5, aa_1_4 -> aa_1_9 ;
aa_1_8, aa_1_7 -> aa_1_10 ; aa_1_9, aa_1_6 -> aa_1_11 ;
aa_1_10, aa_1_10 -> aa_1_12 ; aa_1_12, aa_1_11 -> aa_1_13 ;
aa_1_13, aa_1_13 -> aa_1_14 ;
}
}
選別
digraph g1 {
subgraph cluster_1 {
label = "Solution_1"
aa_1_0, aa_1_0 -> aa_1_4 ; aa_1_1, aa_1_1 -> aa_1_5 ;
aa_1_3, aa_1_2 -> aa_1_6 ; aa_1_4, aa_1_2 -> aa_1_7 ;
aa_1_5, aa_1_3 -> aa_1_8 ; aa_1_5, aa_1_4 -> aa_1_9 ;
aa_1_8, aa_1_7 -> aa_1_10 ; aa_1_9, aa_1_6 -> aa_1_11 ;
aa_1_10, aa_1_10 -> aa_1_12 ; aa_1_12, aa_1_11 -> aa_1_13 ;
aa_1_13, aa_1_13 -> aa_1_14 ;
}
}
452デフォルトの名無しさん
2020/05/05(火) 12:20:16.73ID:hsugdvwn453デフォルトの名無しさん
2020/05/05(火) 15:23:47.74ID:JDagEH9a454デフォルトの名無しさん
2020/05/05(火) 16:00:33.99ID:DwVtkNv1455デフォルトの名無しさん
2020/05/05(火) 16:03:15.79ID:YfHt+PT9 sortしてuniqするだけなら3になるはずだと思って眺めたら
その前に加えて、先頭と最後の文字の比較もしてるやん
auto equalsBeginBack = [=](string a, string b){
return *a.begin() == *b.begin() && *&a.back() == *&b.back();
その前に加えて、先頭と最後の文字の比較もしてるやん
auto equalsBeginBack = [=](string a, string b){
return *a.begin() == *b.begin() && *&a.back() == *&b.back();
456デフォルトの名無しさん
2020/05/06(水) 10:23:41.41ID:crwQV4oz457デフォルトの名無しさん
2020/05/06(水) 11:19:55.66ID:2pJLNopY >>270 Dart
import 'dart:io';
void main() {
final var str = stdin.readLineSync();
const var reg = RegExp(r'\d+');
final List<int> args = reg.allMatches(str).map((m)=>int.parse(m.group(0))).toList();
final column = args.removeLast();
final result = [];
for(var i = 0; i <= args.length ~/ column; i += column) {
result.add(args.sublist(i, i + column));
}
print(result);
}
// input
[1, 2, 3, 4], 2
// output
[[1, 2], [3, 4]]
import 'dart:io';
void main() {
final var str = stdin.readLineSync();
const var reg = RegExp(r'\d+');
final List<int> args = reg.allMatches(str).map((m)=>int.parse(m.group(0))).toList();
final column = args.removeLast();
final result = [];
for(var i = 0; i <= args.length ~/ column; i += column) {
result.add(args.sublist(i, i + column));
}
print(result);
}
// input
[1, 2, 3, 4], 2
// output
[[1, 2], [3, 4]]
458デフォルトの名無しさん
2020/05/06(水) 11:28:40.04ID:44vKh6W3 #!/usr/bin/env -S sbcl --script
(format t "~d~%"
(length (delete-duplicates
(loop repeat (read) collect (read-line))
:test (lambda (a b)
(and (string= (sort a #'char<) (sort b #'char<))
(char= (char a 0) (char b 0))
(char= (char a (1- (length a))) (char b (1- (length b)))))))))
>>445
Common Lisp HyperSpecではSide Effects: None.となっているけれど。
(format t "~d~%"
(length (delete-duplicates
(loop repeat (read) collect (read-line))
:test (lambda (a b)
(and (string= (sort a #'char<) (sort b #'char<))
(char= (char a 0) (char b 0))
(char= (char a (1- (length a))) (char b (1- (length b)))))))))
>>445
Common Lisp HyperSpecではSide Effects: None.となっているけれど。
459デフォルトの名無しさん
2020/05/06(水) 18:22:42.18ID:izcxg96Z >>442
Kotlin
https://paiza.io/projects/i27KzyH5DRbZTc6mfxL6AA
複数の同一文字を1文字扱いでやる場合はコメントを外して SortedSet に文字を入れる方を有効にする。
Kotlin
https://paiza.io/projects/i27KzyH5DRbZTc6mfxL6AA
複数の同一文字を1文字扱いでやる場合はコメントを外して SortedSet に文字を入れる方を有効にする。
460デフォルトの名無しさん
2020/05/07(木) 05:41:45.37ID:elBmdblJ >>442 Io
File standardInput readLines map(do(
sort .. slice(0,1) .. slice(size)
))unique size println
File standardInput readLines map(do(
sort .. slice(0,1) .. slice(size)
))unique size println
461デフォルトの名無しさん
2020/05/07(木) 08:19:16.73ID:6mNBxlfC >>458
こんなこともできるんだな
こんなこともできるんだな
462デフォルトの名無しさん
2020/05/08(金) 01:18:21.71ID:i1AtDmyk 色んな言語による実装が見られて楽しい。
ロゼッタストーンのように自分が出来ない言語の実装も
お題ごとに見られて面白い
ロゼッタストーンのように自分が出来ない言語の実装も
お題ごとに見られて面白い
463デフォルトの名無しさん
2020/05/08(金) 01:21:58.57ID:+VsvN9e2 回答する人に力量のある人がいて感心する
464デフォルトの名無しさん
2020/05/08(金) 10:32:30.11ID:4QFssqyQ >>451
心が癒される回路である。
心が癒される回路である。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【おこめ券】鈴木農相 米価維持の意図「一切ない」★2 [ぐれ★]
- 【おこめ券】鈴木農相 米価維持の意図「一切ない」 [ぐれ★]
- 【埼玉】「無免許で高速道路で事故」トラックの追突事故で10代男性死亡 無免許過失運転致死の疑いでトルコ国籍の男(22)逮捕 戸田市 [ぐれ★]
- 広島・廿日市、おこめ券配布せず 全市民に3000円現金給付へ [どどん★]
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★6 [七波羅探題★]
- 【警視庁】走行中の電車で女性に露出した下半身押しつけたか 無職の男(46)逮捕「チャンスがあればいつでもやる」 [nita★]
- 維新議員、キャバクラマネー返金へ→「今回は返金する」「ポケットマネーでやるには限界がある」 [834922174]
- 【実況】博衣こよりのえちえちチーズケーキを仕込み(雑談あり)🧪
- 【ろんりの教室】高市早苗、既に詰み。レーダー問題で中国と開戦しない場合支持者が弱腰だと離れ、開戦したら戦争は秒で負ける。QED [517791167]
- 朝日新聞記者「中国軍のレーダー照射はこめかみに銃を突きつけられたのと同じ。僕なら反撃して撃墜してる」高市 [931948549]
- 野党が“おこめ券”追及 高市早苗「鈴木農水大臣がお米券大好きなんよ」😹 [817148728]
- 日本人の主食、小麦(パスタ、パン、うどん)になる 米食ってる奴は非国民 わしゃうろんがええよ [402859164]
