プログラミングのお題スレです。
【出題と回答例】
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/
宿題は宿題スレがあるのでそちらへ。
※前スレ
プログラミングのお題スレ Part15
http://mevius.5ch.net/test/read.cgi/tech/1564310397/
プログラミングのお題スレ Part16
■ このスレッドは過去ログ倉庫に格納されています
2019/11/17(日) 09:00:22.10ID:xqEdXdr6
298デフォルトの名無しさん
2019/12/13(金) 23:49:02.36ID:r2S5lo/C 数学でワープできる分手計算のほうが早い
299デフォルトの名無しさん
2019/12/13(金) 23:49:38.96ID:QuzLYYNu kwsk
300デフォルトの名無しさん
2019/12/13(金) 23:50:22.63ID:r2S5lo/C >283
301デフォルトの名無しさん
2019/12/13(金) 23:52:09.33ID:QuzLYYNu (A)は解決済み
(B)の話
(B)の話
302デフォルトの名無しさん
2019/12/13(金) 23:53:42.34ID:QuzLYYNu 数学で絞れるのは>>296くらいかと
303デフォルトの名無しさん
2019/12/13(金) 23:56:32.85ID:QuzLYYNu 下限の n! を計算するのは速い
そこから順番に1個ずつnを増やしていって
0を数えていかないとならない
見つからなければ上限までずっと
そこから順番に1個ずつnを増やしていって
0を数えていかないとならない
見つからなければ上限までずっと
304デフォルトの名無しさん
2019/12/13(金) 23:59:51.46ID:QuzLYYNu ちなみに私、東大の数学科卒なんで
305デフォルトの名無しさん
2019/12/14(土) 00:07:59.08ID:ruM/1CH5 ワープ
(* 4 1234567) 4938268
(/ 4938268 5.0) 987653.6
(/ 987653 5.0) 197530.6
(/ 197530 5.0) 39506.0
(/ 39506 5.0) 7901.2
(/ 7901 5.0) 1580.2
(/ 1580 5.0) 316.0
(/ 316 5.0) 63.2
(/ 63 5.0) 12.6
(/ 12 5.0) 2.4
(+ 987653 197530 39506 7901 1580 316 63 12 2) 1234563
(* 4 1234567) 4938268
(/ 4938268 5.0) 987653.6
(/ 987653 5.0) 197530.6
(/ 197530 5.0) 39506.0
(/ 39506 5.0) 7901.2
(/ 7901 5.0) 1580.2
(/ 1580 5.0) 316.0
(/ 316 5.0) 63.2
(/ 63 5.0) 12.6
(/ 12 5.0) 2.4
(+ 987653 197530 39506 7901 1580 316 63 12 2) 1234563
306デフォルトの名無しさん
2019/12/14(土) 00:14:15.42ID:03SKvnKb307デフォルトの名無しさん
2019/12/14(土) 00:15:48.22ID:ruM/1CH5 Bの話か
308デフォルトの名無しさん
2019/12/14(土) 02:58:36.56ID:03SKvnKb 階乗の0である桁が1234567個になる最小値は1542987です。
お、出た…4時間か
お、出た…4時間か
309デフォルトの名無しさん
2019/12/14(土) 03:55:22.51ID:DhSlagHw お題: 目覚まし時計の現在時刻とアラーム時刻が入力されるので、待機時間を出力しなさい
例:
現在時刻 = 10:00
アラーム時刻 = 16:00
待機時間 = 06:00
現在時刻 = 22:00
アラーム時刻 = 04:00
待機時間 = 06:00
例:
現在時刻 = 10:00
アラーム時刻 = 16:00
待機時間 = 06:00
現在時刻 = 22:00
アラーム時刻 = 04:00
待機時間 = 06:00
310デフォルトの名無しさん
2019/12/14(土) 09:12:53.23ID:ruM/1CH5 >>309
これだな
https://paiza.io/projects/GgkMgqOqyzwwgbmu-Fn-Vg
~/bin/sleep.pl 10:00
2909 00:48:29
のように使ってる
これだな
https://paiza.io/projects/GgkMgqOqyzwwgbmu-Fn-Vg
~/bin/sleep.pl 10:00
2909 00:48:29
のように使ってる
311デフォルトの名無しさん
2019/12/14(土) 09:59:37.97ID:Lp9CT80F >>304
進振り何点だった? 連投アスペ君
進振り何点だった? 連投アスペ君
312デフォルトの名無しさん
2019/12/14(土) 22:12:52.90ID:8CJijD11 >>309
この手の処理はPowerShellが得意だな。
function WaitingTime($now, $alarm)
{
$wait = [DateTime]$alarm - [DateTime]$now
if ($wait -lt 0) {$wait += [TimeSpan]"12:00" + [TimeSpan]"12:00"}
"現在時刻 = $now"
"アラーム時刻 = $alarm"
"待機時刻 = $wait"
""
}
WaitingTime 10:00 16:00
WaitingTime 22:00 4:00
WaitingTime 12:34:56 1:23:45
--- 実行結果 ---
現在時刻 = 10:00
アラーム時刻 = 16:00
待機時刻 = 06:00:00
現在時刻 = 22:00
アラーム時刻 = 4:00
待機時刻 = 06:00:00
現在時刻 = 12:34:56
アラーム時刻 = 1:23:45
待機時刻 = 12:48:49
この手の処理はPowerShellが得意だな。
function WaitingTime($now, $alarm)
{
$wait = [DateTime]$alarm - [DateTime]$now
if ($wait -lt 0) {$wait += [TimeSpan]"12:00" + [TimeSpan]"12:00"}
"現在時刻 = $now"
"アラーム時刻 = $alarm"
"待機時刻 = $wait"
""
}
WaitingTime 10:00 16:00
WaitingTime 22:00 4:00
WaitingTime 12:34:56 1:23:45
--- 実行結果 ---
現在時刻 = 10:00
アラーム時刻 = 16:00
待機時刻 = 06:00:00
現在時刻 = 22:00
アラーム時刻 = 4:00
待機時刻 = 06:00:00
現在時刻 = 12:34:56
アラーム時刻 = 1:23:45
待機時刻 = 12:48:49
313デフォルトの名無しさん
2019/12/15(日) 00:16:05.00ID:K3IRPfAN314デフォルトの名無しさん
2019/12/15(日) 06:09:40.92ID:K3IRPfAN お題: あなたは研究所で助手をしています
ある日、博士からこんな手紙が届きました
助手よ。この数値の名前を教えて欲しい
16776960
あなたは博士に返事を書こうと思います
その返事の内容をお答えください
ある日、博士からこんな手紙が届きました
助手よ。この数値の名前を教えて欲しい
16776960
あなたは博士に返事を書こうと思います
その返事の内容をお答えください
315デフォルトの名無しさん
2019/12/15(日) 07:44:00.84ID:VJoyKt1C >>314 直感
Yellow
Yellow
316デフォルトの名無しさん
2019/12/15(日) 10:09:42.34ID:/SOvb5b/ 黄色だな
317デフォルトの名無しさん
2019/12/15(日) 11:56:51.84ID:wptEtnNg お題
与えられた自然数の0を全て右端に寄せる
例
2019 -> 2190
102030 -> 123000
123 -> 123
与えられた自然数の0を全て右端に寄せる
例
2019 -> 2190
102030 -> 123000
123 -> 123
318デフォルトの名無しさん
2019/12/15(日) 12:02:23.68ID:fpSJINfx >>309
Ruby で、
require 'active_support/time'
def calculate_time_span( now, alarm )
current = Time.now
now_time = Time.parse( now, current ) #=> 2019-12-15 22:00:00 +0900
alarm_time = Time.parse( alarm, current ) #=> 2019-12-15 04:00:00 +0900
diff_time = alarm_time - now_time
# アラームが翌日の場合
diff_time = alarm_time.tomorrow - now_time if diff_time < 0
Time.at( diff_time ).utc.strftime( '%H:%M' )
end
inputs = %w(10:00 16:00 22:00 04:00) # (現在時刻, アラーム時刻)の組
inputs.each_slice( 2 ) do |now, alarm| # 2個ずつ処理する
puts calculate_time_span( now, alarm )
end
Ruby で、
require 'active_support/time'
def calculate_time_span( now, alarm )
current = Time.now
now_time = Time.parse( now, current ) #=> 2019-12-15 22:00:00 +0900
alarm_time = Time.parse( alarm, current ) #=> 2019-12-15 04:00:00 +0900
diff_time = alarm_time - now_time
# アラームが翌日の場合
diff_time = alarm_time.tomorrow - now_time if diff_time < 0
Time.at( diff_time ).utc.strftime( '%H:%M' )
end
inputs = %w(10:00 16:00 22:00 04:00) # (現在時刻, アラーム時刻)の組
inputs.each_slice( 2 ) do |now, alarm| # 2個ずつ処理する
puts calculate_time_span( now, alarm )
end
319デフォルトの名無しさん
2019/12/15(日) 13:16:18.52ID:VJoyKt1C320デフォルトの名無しさん
2019/12/15(日) 15:13:57.70ID:KhVK4v3Y321デフォルトの名無しさん
2019/12/15(日) 15:21:49.83ID:yZPHpztp322デフォルトの名無しさん
2019/12/15(日) 15:38:04.40ID:KhVK4v3Y323デフォルトの名無しさん
2019/12/15(日) 16:45:12.24ID:K3IRPfAN >>315-316
正解
正解
324デフォルトの名無しさん
2019/12/15(日) 20:15:30.36ID:IFqyyeL5 >>317
これもPowerShellで簡単。
function f($n)
{
$m = -join([char[]]"$n" |? {$_ -ne "0"})
($m += "0" * ("$n".length - $m.length))
}
f 2019; f 102030; f 123
これもPowerShellで簡単。
function f($n)
{
$m = -join([char[]]"$n" |? {$_ -ne "0"})
($m += "0" * ("$n".length - $m.length))
}
f 2019; f 102030; f 123
325デフォルトの名無しさん
2019/12/15(日) 22:45:37.77ID:myBFLrpG お題:ハノイの塔の最少手数は一種類しかないのか?
(Part 13, 055)
結果:n枚の円盤すべてを移動させるには最低 2^n −1 回の手数がかかる。
(Part 13, 055)
結果:n枚の円盤すべてを移動させるには最低 2^n −1 回の手数がかかる。
326デフォルトの名無しさん
2019/12/15(日) 22:58:29.31ID:myBFLrpG 4ピンのハノイの塔(河内塔)
n枚の円盤は最初ピン0にある。n枚すべてをピン3に移動させる。
条件:
小円盤の上に大円盤を載せられない。
ピン1とピン2には最大1枚しか置けない。
n枚の円盤は最初ピン0にある。n枚すべてをピン3に移動させる。
条件:
小円盤の上に大円盤を載せられない。
ピン1とピン2には最大1枚しか置けない。
327デフォルトの名無しさん
2019/12/15(日) 23:12:15.95ID:myBFLrpG ・n=2 のとき
12, -, -, -
2, 1, -, -
-, 1, -, 2
-, -, -, 12 (3手)
・n=3 のとき
123, -, -, -
23, 1, -, -
3, 1, 2, -
-, 1, 2, 3
-, 1, -, 23
-, -, -, 123 (5手)
・n=4 のとき
1234, -, -, -
234, 1, -, -
34, 1, 2, -
4, 1, 2, 3
4, 1, -, 23
-, 1, 4, 23
2, 1, 4, 3
12, -, 4, 3
12, 3, 4, -
12, 3, -, 4
12, -, -, 34
2, 1, -, 34
-, 1, -, 234
-, -, -, 1234 (13手)
12, -, -, -
2, 1, -, -
-, 1, -, 2
-, -, -, 12 (3手)
・n=3 のとき
123, -, -, -
23, 1, -, -
3, 1, 2, -
-, 1, 2, 3
-, 1, -, 23
-, -, -, 123 (5手)
・n=4 のとき
1234, -, -, -
234, 1, -, -
34, 1, 2, -
4, 1, 2, 3
4, 1, -, 23
-, 1, 4, 23
2, 1, 4, 3
12, -, 4, 3
12, 3, 4, -
12, 3, -, 4
12, -, -, 34
2, 1, -, 34
-, 1, -, 234
-, -, -, 1234 (13手)
328デフォルトの名無しさん
2019/12/15(日) 23:25:59.52ID:myBFLrpG ・n=5 のとき
12345, -, -, -
2345, 1, -, -
345, 1, 2, -
45, 1, 2, 3
45, 1, -, 23
45, -, -, 123
5, 4, -, 123
-, 4, 5, 123
4, -, 5, 123
4, 1, 5, 23
24, 1, 5, 3
124, -, 5, 3
124, 3, 5, -
124, 3, -, 5
24, 3, 1, 5
4, 3, 1, 25
4, 3, -, 125
-, 3, 4, 125
3, -, 4, 125
3, 1, 4, 25
23, 1, 4, 5
23, 1, -, 45
3, 1, 2, 45
-, 1, 2, 345
-, 1, -, 2345
-, -, -, 12345 (25手)
12345, -, -, -
2345, 1, -, -
345, 1, 2, -
45, 1, 2, 3
45, 1, -, 23
45, -, -, 123
5, 4, -, 123
-, 4, 5, 123
4, -, 5, 123
4, 1, 5, 23
24, 1, 5, 3
124, -, 5, 3
124, 3, 5, -
124, 3, -, 5
24, 3, 1, 5
4, 3, 1, 25
4, 3, -, 125
-, 3, 4, 125
3, -, 4, 125
3, 1, 4, 25
23, 1, 4, 5
23, 1, -, 45
3, 1, 2, 45
-, 1, 2, 345
-, 1, -, 2345
-, -, -, 12345 (25手)
329デフォルトの名無しさん
2019/12/16(月) 08:07:19.12ID:YuYKZXFs お題:
ここに単語を登録したリストがある
リストには以下の種類の言葉が存在する
単語:(例)くさり
単語解説:(例)環状の部品を繋げて線状にしたもの
リストには上記ペアを1単位として、ずらずら並んでいる
(数十個くらい)
リストの中の似たような単語を探し、
以下のサンプルのようにボケ、ツッコミを繰り返すプログラムを作れ
似たような単語が見つからない場合には
最後に「こうじ:お前とはもうやってられませんわ」とprintし、
プログラムを終了せよ
動作サンプル:
こうじ:「くさび」を見ると興奮するよね
てつお:ああ、環状の部品を繋げて線状にしたものね
こうじ:それは「くさり」
てつお:ああ、マルスダレガイ科に属する二枚貝ね
こうじ:それは「あさり」
てつお:ああ、慰安婦の嘘を書いた新聞ね
こうじ:それは「あさひ」
こうじ:お前とはもうやってられませんわ
ここに単語を登録したリストがある
リストには以下の種類の言葉が存在する
単語:(例)くさり
単語解説:(例)環状の部品を繋げて線状にしたもの
リストには上記ペアを1単位として、ずらずら並んでいる
(数十個くらい)
リストの中の似たような単語を探し、
以下のサンプルのようにボケ、ツッコミを繰り返すプログラムを作れ
似たような単語が見つからない場合には
最後に「こうじ:お前とはもうやってられませんわ」とprintし、
プログラムを終了せよ
動作サンプル:
こうじ:「くさび」を見ると興奮するよね
てつお:ああ、環状の部品を繋げて線状にしたものね
こうじ:それは「くさり」
てつお:ああ、マルスダレガイ科に属する二枚貝ね
こうじ:それは「あさり」
てつお:ああ、慰安婦の嘘を書いた新聞ね
こうじ:それは「あさひ」
こうじ:お前とはもうやってられませんわ
330デフォルトの名無しさん
2019/12/16(月) 09:38:23.88ID:UpTR80vx >>326
・n≧6のとき
ピン1とピン2には各1個しか置けないから 1〜(n-1) を置くことはできない。
∴ n を ピン0 から ピン3 に直送することはできない。
∴ ピン0 → ピン1 → ピン3 と送ろう。
まず 12345 をピン2、ピン3に退避する。(n=6の場合)
123456, -, -, -
6, -, m, 12345-m (1≦m≦5)
6, -, -, 12345 は m=1 と見なす。
-, 6, m, 12345-m
次にピン3を空けるため、ピン0とピン2に移すことになる。
しかしピン0には3枚しか移動できず、ピン3に n-5枚残ってしまう。
∴ n≧6 では不可能。
・n≧6のとき
ピン1とピン2には各1個しか置けないから 1〜(n-1) を置くことはできない。
∴ n を ピン0 から ピン3 に直送することはできない。
∴ ピン0 → ピン1 → ピン3 と送ろう。
まず 12345 をピン2、ピン3に退避する。(n=6の場合)
123456, -, -, -
6, -, m, 12345-m (1≦m≦5)
6, -, -, 12345 は m=1 と見なす。
-, 6, m, 12345-m
次にピン3を空けるため、ピン0とピン2に移すことになる。
しかしピン0には3枚しか移動できず、ピン3に n-5枚残ってしまう。
∴ n≧6 では不可能。
331デフォルトの名無しさん
2019/12/16(月) 10:03:17.28ID:UpTR80vx 条件を変えたらどうなるか?
条件(1,1)
ピン1、ピン2には最大で1枚しか置けない。 >>326
条件(1,2)
ピン1には最大で1枚、ピン2には最大で2枚しか置けない。
条件(2,2)
ピン1、ピン2には最大で2枚しか置けない。
条件(1,1)
ピン1、ピン2には最大で1枚しか置けない。 >>326
条件(1,2)
ピン1には最大で1枚、ピン2には最大で2枚しか置けない。
条件(2,2)
ピン1、ピン2には最大で2枚しか置けない。
332デフォルトの名無しさん
2019/12/16(月) 12:12:45.33ID:ZZ8St2Js333デフォルトの名無しさん
2019/12/16(月) 14:51:32.32ID:b9yK9thh >>314
common lisp
(format t "~R" 16776960)
sixteen million, seven hundred and seventy-six thousand, nine hundred and sixty
common lisp
(format t "~R" 16776960)
sixteen million, seven hundred and seventy-six thousand, nine hundred and sixty
334デフォルトの名無しさん
2019/12/16(月) 15:02:43.75ID:b9yK9thh >>317
perl5
cat digits
2019
102030
123
cat digits | perl -lane '$zero = 0; while (s/0//) {++$zero}; print $_ . "0" x $zero;'
2190
123000
123
perl5
cat digits
2019
102030
123
cat digits | perl -lane '$zero = 0; while (s/0//) {++$zero}; print $_ . "0" x $zero;'
2190
123000
123
335デフォルトの名無しさん
2019/12/16(月) 17:56:02.69ID:rcGH9Ke6 >>326
これ昔やったことがありますが、すっかり忘れてしまったのは残念ですね…
これ昔やったことがありますが、すっかり忘れてしまったのは残念ですね…
337デフォルトの名無しさん
2019/12/16(月) 22:11:10.55ID:Ppfui4Eb >>317 PowerShell
function f($n) {($n -replace "0", "") + ($n -replace "[^0]", "")}
function f($n) {($n -replace "0", "") + ($n -replace "[^0]", "")}
338デフォルトの名無しさん
2019/12/17(火) 01:24:02.19ID:XiWpNBJ4339デフォルトの名無しさん
2019/12/17(火) 04:04:38.21ID:XiWpNBJ4340デフォルトの名無しさん
2019/12/17(火) 13:17:36.43ID:EDJKyz+u >>317 julia
function f(n)
r = ""
for c = reverse(string(n))
if c == '0'
r = r * c
else
r = c * r
end
end
parse(Int, r)
end
function f(n)
r = ""
for c = reverse(string(n))
if c == '0'
r = r * c
else
r = c * r
end
end
parse(Int, r)
end
341デフォルトの名無しさん
2019/12/17(火) 17:33:51.45ID:/DSBUbt2 お題
任意の文字列からaが連続する最も長い長さを出力してください
入力:acgtaattgaaagggtctt
期待値:3
任意の文字列からaが連続する最も長い長さを出力してください
入力:acgtaattgaaagggtctt
期待値:3
342デフォルトの名無しさん
2019/12/17(火) 18:10:05.60ID:Etag1t/i343デフォルトの名無しさん
2019/12/17(火) 18:50:00.42ID:Etag1t/i344デフォルトの名無しさん
2019/12/17(火) 19:34:15.94ID:JvBVW/sd345デフォルトの名無しさん
2019/12/17(火) 20:02:20.13ID:bKU/e1zO >>341 Ruby
p 'acgtaattgaaagggtctt'.gsub(/[^a]+/,' ').split.uniq.sort_by{|s| s.size}.last.size
p 'acgtaattgaaagggtctt'.gsub(/[^a]+/,' ').split.uniq.sort_by{|s| s.size}.last.size
346デフォルトの名無しさん
2019/12/17(火) 21:06:34.08ID:eGUcswGM お題
1〜1,000 の整数の内、3 か5 の倍数だけを選んで、その合計を求めよ
1〜1,000 の整数の内、3 か5 の倍数だけを選んで、その合計を求めよ
347デフォルトの名無しさん
2019/12/17(火) 21:42:29.19ID:p+XnOFki >>346
Rで2通りの求め方
d <- c(3, 5, -3 * 5)
q <- 1000 %/% d
cat(sum(d * q * (q + 1) / 2), "\n")
cat(sum(which(1:1000 %% 3 == 0 | 1:1000 %% 5 == 0)), "\n")
--- 実行結果 ---
234168
234168
Rで2通りの求め方
d <- c(3, 5, -3 * 5)
q <- 1000 %/% d
cat(sum(d * q * (q + 1) / 2), "\n")
cat(sum(which(1:1000 %% 3 == 0 | 1:1000 %% 5 == 0)), "\n")
--- 実行結果 ---
234168
234168
348デフォルトの名無しさん
2019/12/17(火) 21:42:34.96ID:Q1C16S4i349デフォルトの名無しさん
2019/12/17(火) 21:45:36.79ID:Q1C16S4i お題:ファイル名の一部に空白文字が使える OS(出題者想定は Windows7) の元で、正常に argc, argv を切り出せるスタートアップ支援ルーチンを作ってください
"" で囲まれている文字列は、それが一つのファイル名またはディレクトリ名として扱うこととし、"" で囲まれていない空白は引数の区切りとします
int main() {
rearrange(...);
...
と main の頭に置いて、xargc, xargv を代わりに使う、見たいな感じでお願いします
例によって私が痛切に欲しいと思っているものです…
"" で囲まれている文字列は、それが一つのファイル名またはディレクトリ名として扱うこととし、"" で囲まれていない空白は引数の区切りとします
int main() {
rearrange(...);
...
と main の頭に置いて、xargc, xargv を代わりに使う、見たいな感じでお願いします
例によって私が痛切に欲しいと思っているものです…
351デフォルトの名無しさん
2019/12/17(火) 23:55:17.00ID:jG+XSsUd >>341は簡単すぎるので、
任意の文字列から連続してる文字が最も長い文字とその文字数を求めよ
最も長い文字が複数ある場合は全て出力すること
入力:acgtaattgaaagggtctt
期待値: ("a", 3), ("g",3)
任意の文字列から連続してる文字が最も長い文字とその文字数を求めよ
最も長い文字が複数ある場合は全て出力すること
入力:acgtaattgaaagggtctt
期待値: ("a", 3), ("g",3)
352デフォルトの名無しさん
2019/12/18(水) 00:00:22.88ID:mWocJHci 期待値
の意味って学校で習わなかった?
の意味って学校で習わなかった?
353デフォルトの名無しさん
2019/12/18(水) 00:01:42.93ID:i+6d3gEf >>350
依頼禁止
依頼禁止
354デフォルトの名無しさん
2019/12/18(水) 00:09:07.64ID:i+6d3gEf355デフォルトの名無しさん
2019/12/18(水) 00:12:20.91ID:i+6d3gEf int main(){ return 234168; }
で良い気がしてきた
で良い気がしてきた
356デフォルトの名無しさん
2019/12/18(水) 00:13:22.10ID:LTfQ+mrC 戦が始まります
357デフォルトの名無しさん
2019/12/18(水) 00:28:03.60ID:i+6d3gEf どうせコンパイルしたら>>355になる
358デフォルトの名無しさん
2019/12/18(水) 01:55:09.27ID:JeMlTDQr359デフォルトの名無しさん
2019/12/18(水) 06:09:15.93ID:6RKB+CQ3 >>351 Ruby
p 'acgtaattgaaagggtctt'.scan(/((.)\2*)/).group_by{|s, _| s.size}.max&.last&.map{|s, c| [c, s.size]}
# => [["a", 3], ["g", 3]]
p 'acgtaattgaaagggtctt'.scan(/((.)\2*)/).group_by{|s, _| s.size}.max&.last&.map{|s, c| [c, s.size]}
# => [["a", 3], ["g", 3]]
360デフォルトの名無しさん
2019/12/18(水) 10:45:51.93ID:AmwvkO78 acgtが出てくんだからながさ1億の文字列なんじゃね
362デフォルトの名無しさん
2019/12/18(水) 12:47:12.26ID:Xcao9p4E acgtが出てくんだからDNA配列だろな。
a=adenine, c=cytosine, g=guanine, t=thymine
ながさ30億の塩基対なんぢゃね?(ヒトの場合)
a=adenine, c=cytosine, g=guanine, t=thymine
ながさ30億の塩基対なんぢゃね?(ヒトの場合)
363デフォルトの名無しさん
2019/12/18(水) 13:00:45.28ID:Xcao9p4E >>331
・n=7 のとき
条件(1,2) または 条件(2,2) とする。
1234567, -, -, -
(>328)
67, -, -, 12345
7, 6, -, 12345
-, 6, 7, 12345
6, -, 7, 12345
(>327)
12346, -, 7, 5
12346, 5, 7, -
12346, 5, -, 7
12346, -, 5, 7
(>327)
6, -, 5, 12347
6, 5, -, 12347
-, 5, 6, 12347
5, -, 6, 12347
(>327)
12345, -, 6, 7
12345, -, -, 67
(>328)
-, -, -, 1234567
にて可能。
・n=7 のとき
条件(1,2) または 条件(2,2) とする。
1234567, -, -, -
(>328)
67, -, -, 12345
7, 6, -, 12345
-, 6, 7, 12345
6, -, 7, 12345
(>327)
12346, -, 7, 5
12346, 5, 7, -
12346, 5, -, 7
12346, -, 5, 7
(>327)
6, -, 5, 12347
6, 5, -, 12347
-, 5, 6, 12347
5, -, 6, 12347
(>327)
12345, -, 6, 7
12345, -, -, 67
(>328)
-, -, -, 1234567
にて可能。
364デフォルトの名無しさん
2019/12/18(水) 13:04:26.11ID:iEIErwam (1,2)で8
(2,2)だと12
までは出来たぞ
(2,2)だと12
までは出来たぞ
365デフォルトの名無しさん
2019/12/18(水) 13:06:11.00ID:iEIErwam (1,3)で11
紙と鉛筆で考えただけなんで
もっと出来るかも
紙と鉛筆で考えただけなんで
もっと出来るかも
366デフォルトの名無しさん
2019/12/18(水) 13:29:12.80ID:iEIErwam (n,1)=3n+2
(2,2)以上だと
(m, n)=4(n+m-1)
まではいける
(2,2)以上だと
(m, n)=4(n+m-1)
まではいける
367デフォルトの名無しさん
2019/12/18(水) 14:02:18.59ID:1FTJXM5f368デフォルトの名無しさん
2019/12/18(水) 14:58:11.70ID:Xcao9p4E >>331
・n=8のとき
条件(1,2) または 条件(2,2) とする。
12345678, -, -, - (>328)
678, -, -, 12345
78, -, 6, 12345 (>328)
1234578, -, 6, -
1234578, -, -, 6 (>328)
78, -, -, 123456
8, 7, -, 123456
-, 7, 8, 123456
7, -, 8, 123456 (>328)
123457, -, 8, 6
123457, 6, 8, -
123457, 6, -, 8
123457, -, 6, 8 (>328)
7, -, 6, 123458
7, 6, -, 123458
-, 6, 7, 123458
6, -, 7, 123458 (>328)
123456, -, 7, 8
123456, -, -, 78 (>328)
6, -, -, 1234578
-, -, 6, 1234578 (>328)
12345, -, 6, 78
12345, -, -, 678 (>328)
-, -, -, 12345678
にて可能。
・n=9 は 条件(1,2) では無理か・・・・
・n=8のとき
条件(1,2) または 条件(2,2) とする。
12345678, -, -, - (>328)
678, -, -, 12345
78, -, 6, 12345 (>328)
1234578, -, 6, -
1234578, -, -, 6 (>328)
78, -, -, 123456
8, 7, -, 123456
-, 7, 8, 123456
7, -, 8, 123456 (>328)
123457, -, 8, 6
123457, 6, 8, -
123457, 6, -, 8
123457, -, 6, 8 (>328)
7, -, 6, 123458
7, 6, -, 123458
-, 6, 7, 123458
6, -, 7, 123458 (>328)
123456, -, 7, 8
123456, -, -, 78 (>328)
6, -, -, 1234578
-, -, 6, 1234578 (>328)
12345, -, 6, 78
12345, -, -, 678 (>328)
-, -, -, 12345678
にて可能。
・n=9 は 条件(1,2) では無理か・・・・
369デフォルトの名無しさん
2019/12/18(水) 16:04:48.01ID:iEIErwam (0,0)=1
(n,m)=(n+2)(m+2)-4
ですかね
(n,m)=(n+2)(m+2)-4
ですかね
370デフォルトの名無しさん
2019/12/18(水) 21:05:50.74ID:WdZQqUwr >>359
Rでrle関数を使って楽々
MaxRepChar <- function(s) {
if (!nchar(s)) return(invisible())
r <- rle(unlist(strsplit(s, "")))
b <- r$lengths == max(r$lengths)
cat(sprintf('("%s", %d)', r$values[b], r$lengths[b]), sep = ", "); cat("\n")
}
MaxRepChar("acgtaattgaaagggtctt")
MaxRepChar("http://mevius.5ch.net/test/read.cgi/tech/1573948822/")
-- 実行結果 --
("a", 3), ("g", 3)
("t", 2), ("/", 2), ("8", 2), ("2", 2)
Rでrle関数を使って楽々
MaxRepChar <- function(s) {
if (!nchar(s)) return(invisible())
r <- rle(unlist(strsplit(s, "")))
b <- r$lengths == max(r$lengths)
cat(sprintf('("%s", %d)', r$values[b], r$lengths[b]), sep = ", "); cat("\n")
}
MaxRepChar("acgtaattgaaagggtctt")
MaxRepChar("http://mevius.5ch.net/test/read.cgi/tech/1573948822/")
-- 実行結果 --
("a", 3), ("g", 3)
("t", 2), ("/", 2), ("8", 2), ("2", 2)
371デフォルトの名無しさん
2019/12/18(水) 21:06:21.05ID:H5ShkPcr f(m, n) : 動かせる最大枚数
m≧n≧1の時
x=f(m-1,n)
A:1,2,3,...,x
B:x+1,...,x+n
C:x+n+1
D:x+n+2
ABCD, -, -, -
CD, -, -, AB
C, D, -, AB
AC, D, -, B
AC, -, -, BD
C, -, - ABD
-, C, -, ABD
A, C, -, BD
A, -, -, BCD
-, -, - ABCD
よって
f(m, n)≧f(m-1,n)+n+2
f(1,0)=2
f(m,n)=f(n,m)
と数学的帰納法により
f(m,n)≧(m+2)(n+2)-4
m≧n≧1の時
x=f(m-1,n)
A:1,2,3,...,x
B:x+1,...,x+n
C:x+n+1
D:x+n+2
ABCD, -, -, -
CD, -, -, AB
C, D, -, AB
AC, D, -, B
AC, -, -, BD
C, -, - ABD
-, C, -, ABD
A, C, -, BD
A, -, -, BCD
-, -, - ABCD
よって
f(m, n)≧f(m-1,n)+n+2
f(1,0)=2
f(m,n)=f(n,m)
と数学的帰納法により
f(m,n)≧(m+2)(n+2)-4
>>371
理論はどうでもいいから動くコードを出して欲しいです、このスレ的には
理論はどうでもいいから動くコードを出して欲しいです、このスレ的には
373デフォルトの名無しさん
2019/12/18(水) 23:01:39.59ID:i+6d3gEf ここまで出来ればあとは簡単
他の人に任せた
他の人に任せた
374デフォルトの名無しさん
2019/12/19(木) 00:58:04.71ID:1AoIgbUn >>317 文言 wenyan-lang
http://wenyan-lang.lingdong.works/ide.html
吾有一術。名之曰「零右寄」。欲行是術。必先得一數。曰「数」。乃行是術曰。
吾有三數。曰零。曰零。曰一。名之曰「甲」曰「乙」曰「丙」。
恆為是。若「数」等於零者乃止也。除「数」以十。所餘幾何。昔之「甲」者。今其是矣。
若「甲」等於零者。乘「乙」以十。昔之「乙」者。今其是矣。若非。乘「甲」以「丙」。
加其以「乙」。昔之「乙」者。今其是矣。也。除「数」以十。昔之「数」者。今其是矣。
除其以一。所餘幾何。減「数」以其。昔之「数」者。今其是矣。
乘「丙」以十。昔之「丙」者。今其是矣。云云。乃得「乙」。是謂「零右寄」之術也。
吾有一列。名之曰「丁」。充「丁」以二千零一十九。以一十萬二千零三十。以一百二十三。
凡「丁」中之「戊」。施「零右寄」於「戊」。名之曰「己」吾有三數。曰「戊」。曰「「、」」。曰「己」。書之。云云。
OUTPUT ---------------------
二千零一十九、二千一百九十
一十萬二千零三十、一十二萬三千
一百二十三、一百二十三
なんかGIGAZINEで紹介されていたので
http://wenyan-lang.lingdong.works/ide.html
吾有一術。名之曰「零右寄」。欲行是術。必先得一數。曰「数」。乃行是術曰。
吾有三數。曰零。曰零。曰一。名之曰「甲」曰「乙」曰「丙」。
恆為是。若「数」等於零者乃止也。除「数」以十。所餘幾何。昔之「甲」者。今其是矣。
若「甲」等於零者。乘「乙」以十。昔之「乙」者。今其是矣。若非。乘「甲」以「丙」。
加其以「乙」。昔之「乙」者。今其是矣。也。除「数」以十。昔之「数」者。今其是矣。
除其以一。所餘幾何。減「数」以其。昔之「数」者。今其是矣。
乘「丙」以十。昔之「丙」者。今其是矣。云云。乃得「乙」。是謂「零右寄」之術也。
吾有一列。名之曰「丁」。充「丁」以二千零一十九。以一十萬二千零三十。以一百二十三。
凡「丁」中之「戊」。施「零右寄」於「戊」。名之曰「己」吾有三數。曰「戊」。曰「「、」」。曰「己」。書之。云云。
OUTPUT ---------------------
二千零一十九、二千一百九十
一十萬二千零三十、一十二萬三千
一百二十三、一百二十三
なんかGIGAZINEで紹介されていたので
375デフォルトの名無しさん
2019/12/19(木) 03:38:08.86ID:i+MhtJYW >>363
・n=7 のとき
条件(1,2) または 条件(2,2)
{1234}=A と略記する。
A567, -, -, - (>327)
567, -, -, A
67, 5, -, A
7, 5, 6, A
57, -, 6, A (>327)
A57, -, 6, -
A57, -, -, 6 (>327)
57, -, -, A6
7, 5, -, A6
-, 5, 7, A6
5, -, 7, A6 (>327)
A5, -, 7, 6
A5, 6, 7, -
A5, 6, -, 7
A5, -, -, 67 (>327)
5, -, -, A67
-, -, 5, A67 (>327)
A, -, 5, 67
A, -, -, 567 (>327)
-, -, -, A567
にて可能。
・n=7 のとき
条件(1,2) または 条件(2,2)
{1234}=A と略記する。
A567, -, -, - (>327)
567, -, -, A
67, 5, -, A
7, 5, 6, A
57, -, 6, A (>327)
A57, -, 6, -
A57, -, -, 6 (>327)
57, -, -, A6
7, 5, -, A6
-, 5, 7, A6
5, -, 7, A6 (>327)
A5, -, 7, 6
A5, 6, 7, -
A5, 6, -, 7
A5, -, -, 67 (>327)
5, -, -, A67
-, -, 5, A67 (>327)
A, -, 5, 67
A, -, -, 567 (>327)
-, -, -, A567
にて可能。
376デフォルトの名無しさん
2019/12/19(木) 03:43:24.67ID:i+MhtJYW >>368
・n=8のとき
条件(1,2) または 条件(2,2)
{12345} = A と略記する。
A678, -, -, - (>328)
678, -, -, A
78, 6, -, A
8, 6, 7, A
68, -, 7, A (>328)
A68, -, 7, -
A68, -, -, 7 (>328)
68, -, -, A7
8, 6, -, A7
-, 6, 8, A7
6, -, 8, A7 (>328)
A6, -, 8, 7
A6, 7, 8, -
A6, 7, -, 8
A6, -, -, 78 (>328)
6, -, -, A78
-, -, 6, A78 (>328)
A, -, 6, 78
A, -, -, 678 (>328)
-, -, -, A678
にて可能。
・n=8のとき
条件(1,2) または 条件(2,2)
{12345} = A と略記する。
A678, -, -, - (>328)
678, -, -, A
78, 6, -, A
8, 6, 7, A
68, -, 7, A (>328)
A68, -, 7, -
A68, -, -, 7 (>328)
68, -, -, A7
8, 6, -, A7
-, 6, 8, A7
6, -, 8, A7 (>328)
A6, -, 8, 7
A6, 7, 8, -
A6, 7, -, 8
A6, -, -, 78 (>328)
6, -, -, A78
-, -, 6, A78 (>328)
A, -, 6, 78
A, -, -, 678 (>328)
-, -, -, A678
にて可能。
377デフォルトの名無しさん
2019/12/19(木) 04:34:36.23ID:i+MhtJYW ・n=12 のとき
条件(2,2)
{12345678} = A, {9,10} = B, 11=C, 12=D と略記する。
ABCD, -, -, - (>376)
BCD, -, -, A
CD, -, B, A
D, C, B, A
BD, C, -, A (>376)
ABD, C, -, -
ABD, -, -, C (>376)
BD, -, -, AC
D, -, B, AC
-, D, B, AC
B, D, -, AC (>376)
AB, D, -, C
AB, D, C, -
AB, -, C, D
AB, -, -, CD (>376)
B, -, -, ACD
O, 9, -, ACD (>376)
AO, 9, -, CD
AO, -, -, 9CD (>376)
O, -, -, A9CD
-, O, -, A9CD (>376)
A, O, -, 9CD
A, O, 9, CD
A, -, 9, OCD
A, -,-, BCD (>376)
-, -, -, ABCD
にて可能。
条件(2,2)
{12345678} = A, {9,10} = B, 11=C, 12=D と略記する。
ABCD, -, -, - (>376)
BCD, -, -, A
CD, -, B, A
D, C, B, A
BD, C, -, A (>376)
ABD, C, -, -
ABD, -, -, C (>376)
BD, -, -, AC
D, -, B, AC
-, D, B, AC
B, D, -, AC (>376)
AB, D, -, C
AB, D, C, -
AB, -, C, D
AB, -, -, CD (>376)
B, -, -, ACD
O, 9, -, ACD (>376)
AO, 9, -, CD
AO, -, -, 9CD (>376)
O, -, -, A9CD
-, O, -, A9CD (>376)
A, O, -, 9CD
A, O, 9, CD
A, -, 9, OCD
A, -,-, BCD (>376)
-, -, -, ABCD
にて可能。
378デフォルトの名無しさん
2019/12/19(木) 07:01:53.01ID:NLbJ7Izu379346
2019/12/19(木) 11:40:09.74ID:dMnFAlGo >>346
Ruby で、234,168
# 蓄積変数の初期値は、0
puts ( 1..1_000 ).inject( 0 ) { |sum, num|
num % 3 == 0 || num % 5 == 0 ? sum + num : sum
}
Ruby で、234,168
# 蓄積変数の初期値は、0
puts ( 1..1_000 ).inject( 0 ) { |sum, num|
num % 3 == 0 || num % 5 == 0 ? sum + num : sum
}
380デフォルトの名無しさん
2019/12/19(木) 13:03:26.44ID:LRZ6v8WB381デフォルトの名無しさん
2019/12/19(木) 14:49:39.96ID:i+MhtJYW >>380
う〜む、等号の証明でござる。
う〜む、等号の証明でござる。
382デフォルトの名無しさん
2019/12/19(木) 16:03:07.29ID:POC72xQm どれが?
383デフォルトの名無しさん
2019/12/19(木) 16:34:48.53ID:dMnFAlGo お題
MY FAVORITE SONGS を、Snake, Camel, Pascal にして!
my_favorite_songs, myFavoriteSongs, MyFavoriteSongs
MY FAVORITE SONGS を、Snake, Camel, Pascal にして!
my_favorite_songs, myFavoriteSongs, MyFavoriteSongs
384デフォルトの名無しさん
2019/12/19(木) 17:08:15.12ID:0uPukb6z >>346
Kotlin script
ただ馬鹿正直に抜き出して足すだけ。
println((1..1000).filter { it % 3 == 0 || it % 5 == 0 }.sum())
Kotlin script
ただ馬鹿正直に抜き出して足すだけ。
println((1..1000).filter { it % 3 == 0 || it % 5 == 0 }.sum())
385デフォルトの名無しさん
2019/12/19(木) 17:42:54.73ID:0uPukb6z386デフォルトの名無しさん
2019/12/19(木) 19:39:18.71ID:xlnTqgd4 >>383 Ruby
str = 'MY FAVORITE SONGS'
puts str.tr('A-Z ', 'a-z_') # => my_favorite_songs
puts str.gsub(/ (\w)/){$1.downcase}.swapcase # => myFavoriteSongs
puts str.split.map(&:capitalize).join # => MyFavoriteSongs
str = 'MY FAVORITE SONGS'
puts str.tr('A-Z ', 'a-z_') # => my_favorite_songs
puts str.gsub(/ (\w)/){$1.downcase}.swapcase # => myFavoriteSongs
puts str.split.map(&:capitalize).join # => MyFavoriteSongs
387デフォルトの名無しさん
2019/12/19(木) 20:42:11.68ID:M6N2QgoX >>351 >>362 Common Lisp
https://ideone.com/hTxKo6
30億バイトでの実行結果:
% uname -p
Intel(R) Core(TM) i7-4765T CPU @ 2.00GHz
% /usr/bin/time -p sbcl --script odai-pt16-351-362-lisp-3-hash-table.lisp </tmp/random-acgt-3-billion.txt
((#\T . 17))
real 178.75
user 177.55
sys 1.17
%
*standard-input* ではなく (open "/dev/stdin" ...) を使っているのは *standard-input* が遅いから
ざっと六倍もの時間がかかった
https://ideone.com/hTxKo6
30億バイトでの実行結果:
% uname -p
Intel(R) Core(TM) i7-4765T CPU @ 2.00GHz
% /usr/bin/time -p sbcl --script odai-pt16-351-362-lisp-3-hash-table.lisp </tmp/random-acgt-3-billion.txt
((#\T . 17))
real 178.75
user 177.55
sys 1.17
%
*standard-input* ではなく (open "/dev/stdin" ...) を使っているのは *standard-input* が遅いから
ざっと六倍もの時間がかかった
388デフォルトの名無しさん
2019/12/19(木) 21:46:59.61ID:XnN+NvoA389デフォルトの名無しさん
2019/12/19(木) 22:59:23.08ID:L7o4TfDh390383
2019/12/20(金) 14:24:42.29ID:A+TGdcd9 >>383
Ruby で、
ary = "MY FAVORITE SONGS".split.map( &:downcase ) # すべて小文字へ
puts ary.join( "_" ) #=> my_favorite_songs
puts ary.map( &:capitalize ).join #=> MyFavoriteSongs
puts ary.map.with_index { |word, idx|
if idx == 0
word # 最初だけ、そのまま
else
word.capitalize
end
}.join #=> myFavoriteSongs
Ruby で、
ary = "MY FAVORITE SONGS".split.map( &:downcase ) # すべて小文字へ
puts ary.join( "_" ) #=> my_favorite_songs
puts ary.map( &:capitalize ).join #=> MyFavoriteSongs
puts ary.map.with_index { |word, idx|
if idx == 0
word # 最初だけ、そのまま
else
word.capitalize
end
}.join #=> myFavoriteSongs
391デフォルトの名無しさん
2019/12/20(金) 17:55:37.64ID:KHh/7LOP392デフォルトの名無しさん
2019/12/20(金) 19:38:12.53ID:KibkA5Ab お題(>>346の改変版)
1から100万までの整数のうち、2か3か5か7か11か13か17か19の倍数の合計を
求める処理を3000回繰り返してから、結果を表示せよ。ただし、ideoneの
実行制限時間(5秒)以内に完了すること。
1から100万までの整数のうち、2か3か5か7か11か13か17か19の倍数の合計を
求める処理を3000回繰り返してから、結果を表示せよ。ただし、ideoneの
実行制限時間(5秒)以内に完了すること。
393デフォルトの名無しさん
2019/12/20(金) 20:40:12.54ID:l1czkVGZ394デフォルトの名無しさん
2019/12/20(金) 21:09:48.70ID:ZH5ZbPnE 今アップしようと思ったら
>>393とそっくりだった
>>393とそっくりだった
395デフォルトの名無しさん
2019/12/20(金) 21:22:01.32ID:ZH5ZbPnE 素数の数をカウントする代わりに
マイナスを付けて素数を掛け算してるのが違うくらい
マイナスを付けて素数を掛け算してるのが違うくらい
396デフォルトの名無しさん
2019/12/20(金) 21:28:45.69ID:ZH5ZbPnE お題
3000回じゃなくてもっとマシな出し方なかったのかね?
最適化で1回の結果を使い回されて何回やっても時間同じになっちゃってたよ
3000回数分合計して、最後に3000で割ってたんだけど
最適化が頭良すぎた
3000回じゃなくてもっとマシな出し方なかったのかね?
最適化で1回の結果を使い回されて何回やっても時間同じになっちゃってたよ
3000回数分合計して、最後に3000で割ってたんだけど
最適化が頭良すぎた
397デフォルトの名無しさん
2019/12/20(金) 21:49:16.14ID:qHTdS2+z やったー僕が考えた効率良いプログラムだと5秒以内で3000回も計算できたぞ!
そうだこれをお題にしてやろう!
そうだこれをお題にしてやろう!
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【おこめ券】鈴木農相 米価維持の意図「一切ない」 [ぐれ★]
- 「日本はドイツと違い反省せず」…中国外相、独外相に対日批判 台湾問題で理解求める [少考さん★]
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★6 [七波羅探題★]
- 【苺ましまろ】立民衆院議員、人気漫画の水着少女画像を「醜悪」タイ人少女の性搾取事件と関連付け…党内で反発 [少考さん★]
- 「残業キャンセル界隈」若者が増加?「職務放棄」との批判も…“定時退社の権利”どこまで通用するか [七波羅探題★]
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 ★5 [蚤の市★]
- 【悲報】「高市だけは許さん!」追い詰められた習近平、実体は経済が「ソ連化」の影響でボロボロ、日本は中国の政治ショーに付き合うな [733893279]
- 93年ジャップ「外米なんて不味くて嫌だ、高くても日本米食わせろ!」今ジャップ「日本米なんて高くて嫌だ、安い外米食わせろ!」 [616817505]
- デートあるのにガス止まってお湯でない
- お前ら「ブラックフライデーで工具買ったぞ!」 何に使うの?
- 【高市悲報】中国軍「公海で空母の発着訓練するって事前通告したのになんで自衛隊機は急接近してきたんだ…?」中国軍困惑 [931948549]
- 日本人のおでん離れ。作る回数減った30.1%🍢 [256556981]
