プログラミングのお題スレです。
【出題と回答例】
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
344デフォルトの名無しさん
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回も計算できたぞ!
そうだこれをお題にしてやろう!
そうだこれをお題にしてやろう!
398デフォルトの名無しさん
2019/12/20(金) 22:16:29.10ID:ZH5ZbPnE C/C++だと
ほんのちょっと数学の知識を使えば
コード上の工夫をまったくしなくても0.01秒
コード上の工夫でまだまだ速くなる
スクリプト系言語でも100倍はかからない気がする
なぜ5秒?
なぜ1000000?
なぜ3000回?
謎だ
ほんのちょっと数学の知識を使えば
コード上の工夫をまったくしなくても0.01秒
コード上の工夫でまだまだ速くなる
スクリプト系言語でも100倍はかからない気がする
なぜ5秒?
なぜ1000000?
なぜ3000回?
謎だ
399デフォルトの名無しさん
2019/12/20(金) 22:30:48.36ID:fz/tpFJr 些末な最適化など
数学的知識に基づくオーダーの低減に比べたらむなしい
数学的知識に基づくオーダーの低減に比べたらむなしい
400デフォルトの名無しさん
2019/12/20(金) 22:30:49.77ID:ZH5ZbPnE 数学的知識を使わないで
単純に足していくアルゴリズムを
コードの工夫で5秒切るって問題?
単純に足していくアルゴリズムを
コードの工夫で5秒切るって問題?
401デフォルトの名無しさん
2019/12/20(金) 22:38:11.88ID:PCNOOvYP402デフォルトの名無しさん
2019/12/20(金) 22:38:43.75ID:ZH5ZbPnE403デフォルトの名無しさん
2019/12/20(金) 22:39:52.16ID:ZH5ZbPnE ダブった
404デフォルトの名無しさん
2019/12/20(金) 22:50:38.46ID:qHTdS2+z 数学も計算機学もどっちも大事
405デフォルトの名無しさん
2019/12/20(金) 23:00:03.89ID:KibkA5Ab >>393
正解。ちなみにRで短く書いたプログラム: https://ideone.com/T9oDqa
結局、奇数個の積の倍数の個数の和から偶数個のそれを引くというやり方は同じだな。
>>397
そう。上のプログラムが5秒以内に余裕を持って終わるように繰り返し回数を設定したw
効率というより短いのが好きで書いた。
>>398
>>393をRにそのまま移植すると5秒以内に終わらず、1000回に減らしても
(https://ideone.com/K94wA8)4.56秒かかって、上のプログラムの2.43秒より
遅いよ。Rでは自前のループを書くよりも、関数や演算子を使って短く書いた方が
速くなることが多い。
正解。ちなみにRで短く書いたプログラム: https://ideone.com/T9oDqa
結局、奇数個の積の倍数の個数の和から偶数個のそれを引くというやり方は同じだな。
>>397
そう。上のプログラムが5秒以内に余裕を持って終わるように繰り返し回数を設定したw
効率というより短いのが好きで書いた。
>>398
>>393をRにそのまま移植すると5秒以内に終わらず、1000回に減らしても
(https://ideone.com/K94wA8)4.56秒かかって、上のプログラムの2.43秒より
遅いよ。Rでは自前のループを書くよりも、関数や演算子を使って短く書いた方が
速くなることが多い。
406デフォルトの名無しさん
2019/12/20(金) 23:06:22.58ID:ZH5ZbPnE407デフォルトの名無しさん
2019/12/20(金) 23:10:59.45ID:KibkA5Ab 1000までではなく与えられた自然数までということ以外は>>346と同じ問題が
オライリーの「Modern C++チャレンジ」に載っているが、示されている解答は
if (i % 3 == 0 || i % 5 == 0) sum += i; という単純に足していく方式だな。
本の副題は「C++17プログラミング力を鍛える100問」だが、何が鍛えられられるのか
よく分からない。
オライリーの「Modern C++チャレンジ」に載っているが、示されている解答は
if (i % 3 == 0 || i % 5 == 0) sum += i; という単純に足していく方式だな。
本の副題は「C++17プログラミング力を鍛える100問」だが、何が鍛えられられるのか
よく分からない。
408デフォルトの名無しさん
2019/12/20(金) 23:11:25.23ID:ZH5ZbPnE C/C++で1秒かかる問題は
C/C++限定になっちゃう感じだね
C/C++限定になっちゃう感じだね
409デフォルトの名無しさん
2019/12/20(金) 23:14:31.11ID:ZH5ZbPnE410デフォルトの名無しさん
2019/12/21(土) 05:43:11.08ID:vVh8rrgH 連投アスペ君うざいよ
学歴詐称までしてたみたいだけど
学歴詐称までしてたみたいだけど
411デフォルトの名無しさん
2019/12/21(土) 17:30:00.35ID:BSqycIZI お題
ビットコインの採掘問題です
000 〜 300 までの3桁の整数の文字列を、MD5 で暗号化した時に、
冒頭部分から、5 が最も多く続く、整数は何?
答え、239 : 555d6〜
ビットコインの採掘問題です
000 〜 300 までの3桁の整数の文字列を、MD5 で暗号化した時に、
冒頭部分から、5 が最も多く続く、整数は何?
答え、239 : 555d6〜
412デフォルトの名無しさん
2019/12/21(土) 21:23:49.40ID:WOeaPgYE413デフォルトの名無しさん
2019/12/21(土) 22:58:23.57ID:hbXQRpYW >>411 PowerShell
$MD5 = new-object "System.Security.Cryptography.MD5CryptoServiceProvider"
$a = 0..300
$hash = $a |% {-join ($MD5.ComputeHash([char[]]("{0:000}" -f $_)) |% {"{0:x2}" -f $_})}
$n = $hash |% {[RegEx]::Match($_, "^5+").length}
$max = ($n | measure -max).Maximum
$a |? {$n[$_] -eq $max} |% {"$_ : " + $hash[$_]}
-- 実行結果 --
239 : 555d6702c950ecb729a966504af0a635
$MD5 = new-object "System.Security.Cryptography.MD5CryptoServiceProvider"
$a = 0..300
$hash = $a |% {-join ($MD5.ComputeHash([char[]]("{0:000}" -f $_)) |% {"{0:x2}" -f $_})}
$n = $hash |% {[RegEx]::Match($_, "^5+").length}
$max = ($n | measure -max).Maximum
$a |? {$n[$_] -eq $max} |% {"$_ : " + $hash[$_]}
-- 実行結果 --
239 : 555d6702c950ecb729a966504af0a635
414デフォルトの名無しさん
2019/12/22(日) 03:50:07.73ID:lBW/6Z3k415デフォルトの名無しさん
2019/12/22(日) 14:00:57.91ID:sfBU8dhx >>411 Ruby
require 'digest'
p ("000".."300").map{|i|[Digest::MD5.hexdigest(i).index(/[^5]/),i]}.max[1]
require 'digest'
p ("000".."300").map{|i|[Digest::MD5.hexdigest(i).index(/[^5]/),i]}.max[1]
416411
2019/12/22(日) 19:20:37.12ID:u+b66RrE >>411 Ruby
require 'digest'
# :count は、先頭から続く、5の数
Result = Struct.new( :num, :md5, :count )
res = ( "000".."300" ).each_with_object( Result.new( nil, nil, -1 ) ) do |num, res|
md5 = Digest::MD5.hexdigest( num ) # ハッシュ化
md5.each_char.with_index do |char, idx| # 1文字ずつ処理する
if char != "5"
if idx > res.count # 大きい時だけ更新する
res.num = num
res.md5 = md5
res.count = idx
end
break
end
end
end
puts "#{ res.num } : #{ res.md5 }"
#=> 239 : 555d6702c950ecb729a966504af0a635
require 'digest'
# :count は、先頭から続く、5の数
Result = Struct.new( :num, :md5, :count )
res = ( "000".."300" ).each_with_object( Result.new( nil, nil, -1 ) ) do |num, res|
md5 = Digest::MD5.hexdigest( num ) # ハッシュ化
md5.each_char.with_index do |char, idx| # 1文字ずつ処理する
if char != "5"
if idx > res.count # 大きい時だけ更新する
res.num = num
res.md5 = md5
res.count = idx
end
break
end
end
end
puts "#{ res.num } : #{ res.md5 }"
#=> 239 : 555d6702c950ecb729a966504af0a635
417デフォルトの名無しさん
2019/12/23(月) 15:49:57.54ID:8tSOZ4fL418デフォルトの名無しさん
2019/12/24(火) 02:05:20.47ID:3/kDRwCG >>377
>>389
・n=13 のとき
条件(2,2)
{12345678} = A, {9,10} = B, 11=C, 12=D, 13=E と略記する。
ABCDE, -, -, -
手順1
CDE, -, -, AB
手順2
CD, E, -, AB
ACD, E, -, B
手順3
ACD, -, -, BE
CD, -, -, ABE
手順2
C, D, -, ABE
AC, D, -, BE
手順3
AC, -, -, BDE
C, -, -, ABDE
-, C, -, ABDE
A, C, -, BDE
手順3
A, -, -, BCDE
-, -, -, ABCDE
にて可能。
>>389
・n=13 のとき
条件(2,2)
{12345678} = A, {9,10} = B, 11=C, 12=D, 13=E と略記する。
ABCDE, -, -, -
手順1
CDE, -, -, AB
手順2
CD, E, -, AB
ACD, E, -, B
手順3
ACD, -, -, BE
CD, -, -, ABE
手順2
C, D, -, ABE
AC, D, -, BE
手順3
AC, -, -, BDE
C, -, -, ABDE
-, C, -, ABDE
A, C, -, BDE
手順3
A, -, -, BCDE
-, -, -, ABCDE
にて可能。
419デフォルトの名無しさん
2019/12/24(火) 02:16:33.78ID:3/kDRwCG #A = f(2,1) = 8, #B = 2
* 手順1
ABX, -, -, -
BX, -, -, A
OX, 9, -, A
AOX, 9, -, -
AOX, -, -, 9
OX, -, -, A9
X, O, -, A9
AX, O, -, 9
AX, O, 9, -
AX, -, 9, O
AX, -, -, B
X, -, -, AB
*手順2
CDY, -, -, *
DY, C, -, *
Y, C, D, *
Y, -, CD, *
-, Y, CD, *
-, CY, D, *
D, CY, -, *
CD, Y, -, *
* 手順3
*, Y, -, BZ
*, 9Y, -, OZ
*, 9Y, O, Z
*, Y, B, Z
*, -, B, YZ
*, 9, O, YZ
*, 9, -, OYZ
*, -, -, BYZ
* 手順1
ABX, -, -, -
BX, -, -, A
OX, 9, -, A
AOX, 9, -, -
AOX, -, -, 9
OX, -, -, A9
X, O, -, A9
AX, O, -, 9
AX, O, 9, -
AX, -, 9, O
AX, -, -, B
X, -, -, AB
*手順2
CDY, -, -, *
DY, C, -, *
Y, C, D, *
Y, -, CD, *
-, Y, CD, *
-, CY, D, *
D, CY, -, *
CD, Y, -, *
* 手順3
*, Y, -, BZ
*, 9Y, -, OZ
*, 9Y, O, Z
*, Y, B, Z
*, -, B, YZ
*, 9, O, YZ
*, 9, -, OYZ
*, -, -, BYZ
420デフォルトの名無しさん
2019/12/24(火) 06:16:15.22ID:cUFUrp77 おめでとう
次は(2,2,2)
次は(2,2,2)
421デフォルトの名無しさん
2019/12/24(火) 06:33:05.83ID:cUFUrp77 n=13を考えるとき
真ん中2本が空いてる時にはn=12までは動かせる
っていう仮定を使うと
考え方が楽になりますよ
これが出来たら
あとは(2,1)のn=8から1枚ずつ増やしていく帰納法が使えます
真ん中2本が空いてる時にはn=12までは動かせる
っていう仮定を使うと
考え方が楽になりますよ
これが出来たら
あとは(2,1)のn=8から1枚ずつ増やしていく帰納法が使えます
422デフォルトの名無しさん
2019/12/24(火) 07:26:03.90ID:cUFUrp77 a≧b≧c≧d≧e≧1
f(a,b,c,d,e)=f(a-1,b,c,d,e)+2n+1
n = max { a, f(b-1,c,d,e) }
+ max { b, f(c-1,d,e) }
+ max { c, f(d-1,e) }
+ e
f(a,b,c,d,e)=f(a-1,b,c,d,e)+2n+1
n = max { a, f(b-1,c,d,e) }
+ max { b, f(c-1,d,e) }
+ max { c, f(d-1,e) }
+ e
423デフォルトの名無しさん
2019/12/24(火) 07:43:48.05ID:cUFUrp77 (a,b,c,d,e) の動かしかた
A : 小さい f(a-1,b,c,d,e) 枚
X : 最大の1枚
(n) : A,X以外の任意のn枚
n : >>422で定義
A(2n)X / - / -
(n)X / - / A(n)
(n) / X / A(n)
A(n) / X / (n)
A(n) / - / (n)X
- / - / A(2n)X
A : 小さい f(a-1,b,c,d,e) 枚
X : 最大の1枚
(n) : A,X以外の任意のn枚
n : >>422で定義
A(2n)X / - / -
(n)X / - / A(n)
(n) / X / A(n)
A(n) / X / (n)
A(n) / - / (n)X
- / - / A(2n)X
424デフォルトの名無しさん
2019/12/24(火) 07:48:24.24ID:cUFUrp77 ミスった
n = min { a, f(b-1,c,d,e) }
+ min { b, f(c-1,d,e) }
+ min { c, f(d-1,e) }
+ e
n = min { a, f(b-1,c,d,e) }
+ min { b, f(c-1,d,e) }
+ min { c, f(d-1,e) }
+ e
425デフォルトの名無しさん
2019/12/24(火) 19:47:21.14ID:cUFUrp77 動かせる枚数だけですがコードにしました
https://ideone.com/X01d46
https://ideone.com/X01d46
426デフォルトの名無しさん
2019/12/25(水) 16:51:57.78ID:eBvDhPt7 [お題] 2020と素数
"2020"の省略形は"20"
異なる素数を20個使って、総合計で2020を作る。
1) 何種類できるか(組合せで)。 --> ?
以下 数列は昇順でソート済みでの比較
2) 数列の比較で(辞書順)最小な数列を出力。
--> [3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,73,1381]
3) 数列の比較で(辞書順)最大な数列を出力。
--> ?
例) 総合計 26 で要素数 3の場合
種類は[2,5,19],[2,7,17],[2,11,13]の3種類、
最小は[2,5,19], 最大は[2,11,13]
"2020"の省略形は"20"
異なる素数を20個使って、総合計で2020を作る。
1) 何種類できるか(組合せで)。 --> ?
以下 数列は昇順でソート済みでの比較
2) 数列の比較で(辞書順)最小な数列を出力。
--> [3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,73,1381]
3) 数列の比較で(辞書順)最大な数列を出力。
--> ?
例) 総合計 26 で要素数 3の場合
種類は[2,5,19],[2,7,17],[2,11,13]の3種類、
最小は[2,5,19], 最大は[2,11,13]
427デフォルトの名無しさん
2019/12/25(水) 19:05:13.68ID:LrSoTBV6 2) 3) は瞬時だけど
1) は難しい
出題者は出来たんだよね?
1) は難しい
出題者は出来たんだよね?
428426
2019/12/25(水) 19:20:25.05ID:eBvDhPt7429デフォルトの名無しさん
2019/12/25(水) 22:46:56.00ID:LrSoTBV6430デフォルトの名無しさん
2019/12/25(水) 22:48:16.07ID:LrSoTBV6 合ってる?
431デフォルトの名無しさん
2019/12/25(水) 22:57:35.89ID:LrSoTBV6 辞書順最後は
{ 53, 59, 61, 67, 71, 73, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151 }
{ 53, 59, 61, 67, 71, 73, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151 }
432426
2019/12/25(水) 23:33:28.28ID:eBvDhPt7 >>429, 431 当方とおなじです。
>>426
https://ideone.com/SuOGod
数が程々なので、まとめて手抜きの"文字列DP"をやってます。
(pypyで1秒以内で回っているのだから、真面目にやる必要ないでしょう)
>>426
https://ideone.com/SuOGod
数が程々なので、まとめて手抜きの"文字列DP"をやってます。
(pypyで1秒以内で回っているのだから、真面目にやる必要ないでしょう)
433デフォルトの名無しさん
2019/12/26(木) 01:18:40.30ID:rIhsLdYp434デフォルトの名無しさん
2019/12/26(木) 01:28:39.37ID:rIhsLdYp C++だから速いはず
だけど大差無いって事は
アルゴリズムで負けてる?
だけど大差無いって事は
アルゴリズムで負けてる?
435デフォルトの名無しさん
2019/12/26(木) 04:04:05.93ID:Wc5llTmi436デフォルトの名無しさん
2019/12/26(木) 07:13:27.63ID:rIhsLdYp437デフォルトの名無しさん
2019/12/26(木) 07:22:33.88ID:rIhsLdYp438デフォルトの名無しさん
2019/12/26(木) 07:28:47.21ID:rIhsLdYp439蟻人間 ◆T6xkBnTXz7B0
2019/12/26(木) 15:19:10.12ID:Npbug+/w お題: 半角英数からなるユーザーIDとパスワードで認証できるアカウントのシステムを以下の要件で作る。
1.新規登録を選んでユーザーIDとパスワードとメールアドレスを入力するとアカウント登録ができる。
2. 複数アカウント対応。ユーザーIDの重複はダメ。
3. アカウント一覧を選ぶとアカウントの一覧とログイン状態が見える。
4. ログインを選んでユーザーIDとパスワードの入力が一致すればログインできる。
5. ログアウトを選べばログアウトできる。
6. パスワードを忘れたとき、アカウントの回復を選んでメルアド入力すると、メールが来てパスワードがリセットされる。
1.新規登録を選んでユーザーIDとパスワードとメールアドレスを入力するとアカウント登録ができる。
2. 複数アカウント対応。ユーザーIDの重複はダメ。
3. アカウント一覧を選ぶとアカウントの一覧とログイン状態が見える。
4. ログインを選んでユーザーIDとパスワードの入力が一致すればログインできる。
5. ログアウトを選べばログアウトできる。
6. パスワードを忘れたとき、アカウントの回復を選んでメルアド入力すると、メールが来てパスワードがリセットされる。
440デフォルトの名無しさん
2019/12/26(木) 19:06:46.63ID:ArA1I+l7441デフォルトの名無しさん
2019/12/26(木) 19:20:20.20ID:nVG7mTn1442デフォルトの名無しさん
2019/12/26(木) 21:44:10.91ID:nVG7mTn1 https://ideone.com/XFJToQ
vectorを使いまわしするようにしたら速くなった
vectorを使いまわしするようにしたら速くなった
443デフォルトの名無しさん
2019/12/27(金) 00:16:14.43ID:N7T+QvJX https://ideone.com/tm5nPe
まだ省くことができた
まだ省くことができた
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 米大統領報道官「日本と強固な同盟維持、中国とも協力」 [少考さん★]
- ミス・ユニバース フィンランド代表の「つり目」写真が波紋… 本人釈明も批判やまず 協会謝罪「徹底的に検証」へ [冬月記者★]
- 【おこめ券】鈴木憲和農相 小泉前農相の備蓄米放出を“反省”「備蓄の円滑な運営を図ってまいります」 [Hitzeschleier★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- ゆたぼん 二重手術を報告「めちゃくちゃ気に入っています」 [muffin★]
- 【27歳会社員】「自慰行為に使うために」コインランドリーの乾燥機から24歳女性の下着など計11点(時価8万2080円相当)盗んだ疑い [nita★]
