プログラミングのお題スレです。
【出題と回答例】
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:0rEhys362020/03/28(土) 19:38:54.96ID:RLgHfGbj
前者は2ch browserで使えるけど後者はそうじゃないね
63デフォルトの名無しさん
2020/03/28(土) 23:41:39.06ID:X4tW2giy まーたやらな言い訳かー
やる気ねーなw
やる気ねーなw
64デフォルトの名無しさん
2020/03/29(日) 10:50:09.52ID:ACisvDeP >>61 js
let レス番リスト=[1,3,4,5];
let 先頭レス番=レス番リスト[0];
let 安価="";
for(let イ=0;イ<レス番リスト.length-1;イ++){
if(レス番リスト[イ]+1!=レス番リスト[イ+1]){
安価+=レス番リスト[イ]==先頭レス番?先頭レス番+",":先頭レス番+"-"+レス番リスト[イ]+",";
先頭レス番=レス番リスト[イ+1];
}
}
安価+=レス番リスト[レス番リスト.length-1]==先頭レス番?先頭レス番:先頭レス番+"-"+レス番リスト[レス番リスト.length-1];
console.log(安価);
=>1,3-5
let レス番リスト=[1,3,4,5];
let 先頭レス番=レス番リスト[0];
let 安価="";
for(let イ=0;イ<レス番リスト.length-1;イ++){
if(レス番リスト[イ]+1!=レス番リスト[イ+1]){
安価+=レス番リスト[イ]==先頭レス番?先頭レス番+",":先頭レス番+"-"+レス番リスト[イ]+",";
先頭レス番=レス番リスト[イ+1];
}
}
安価+=レス番リスト[レス番リスト.length-1]==先頭レス番?先頭レス番:先頭レス番+"-"+レス番リスト[レス番リスト.length-1];
console.log(安価);
=>1,3-5
2020/03/29(日) 14:05:00.00ID:kU1QBoxf
>>61 Perl5 (もう少しスマートな書き方はあるかもしれないが…)
for (qw{[1] [2,3] [1,2,3] [1,3] [1,3,4,5]}) {
@a = /(\d+)/g;
%h = map{$_ => $_} @a;
@b = map{$h{$_}//','} 1..1000;
$"=','; $b = "@b";
$b =~ s/^,*(.+?),*$/$1/;
@c = split /,,+/, $b;
@d = map{[eval]} @c;
@e = map{@$_ > 2 ? "$$_[0]-$$_[-1]" : "@$_"} @d;
print "@e\n";
}
実行結果
~ $ perl 17_61_resanc.pl
1
2,3
1-3
1,3
1,3-5
for (qw{[1] [2,3] [1,2,3] [1,3] [1,3,4,5]}) {
@a = /(\d+)/g;
%h = map{$_ => $_} @a;
@b = map{$h{$_}//','} 1..1000;
$"=','; $b = "@b";
$b =~ s/^,*(.+?),*$/$1/;
@c = split /,,+/, $b;
@d = map{[eval]} @c;
@e = map{@$_ > 2 ? "$$_[0]-$$_[-1]" : "@$_"} @d;
print "@e\n";
}
実行結果
~ $ perl 17_61_resanc.pl
1
2,3
1-3
1,3
1,3-5
66デフォルトの名無しさん
2020/03/29(日) 18:03:50.57ID:5iH4CTSz なにやってるのか全くわからんw
2020/03/29(日) 18:46:57.43ID:CipzEZQ7
@a = /(\d+)/g; … 文字列から数値だけを抽出しリスト変数@aに格納、たとえば文字列が"[1,3,4,5]" の場合@aは(1, 3, 4, 5)
%h = map{$_ => $_} @a; … 変数@aのリスト例えば(1, 3, 4, 5)を入力として値対値ハッシュ {1=>1, 3=>3, 4=>4, 5=>5}を作り変数%hとする
@b = map{$h{$_}//','} 1..1000; … 1〜1000までの数値に対しハッシュ%hを参照し値があればその値、無ければ','文字のリストを生成して変数@bに格納、上記{1=>1, 3=>3, 4=>4, 5=>5}の場合はこんな感じ
# 1 2 3 4 5 6 7 8 9 … 1000
@b: 1 , 3 4 5 , , , , … ,
$"=','; $b = "@b"; … 上記リスト@bを元に要素を区切り文字','で繋いだ文字列を作り変数$bに設定
上記@b: 1 , 3 4 5 , , , … ,
の場合 $b = "1,,,3,4,5,,,,,,,…,,"
2や6以降は無いので,となっている
$b =~ s/^,*(.+?),*$/$1/; … 文字列$bの先頭と末尾に','があれば除去
例 $b = "1,,,3,4,5,,,,,,,…,," ⇒ "1,,,3,4,5"
@c = split /,,+/, $b; … $bを正規表現/,,+/を区切りとして分割したリストを@cに格納
例 $b = "1,,,3,4,5" ⇒ @c = ("1", "3,4,5")
@d = map{[eval]} @c; … リスト@cの文字列をそれぞれevalして数値リストのreferenceの配列を@dに設定
例 @c = ("1", "3,4,5") ⇒ @d = ([1], [3, 4, 5])
@e = map{@$_ > 2 ? "$$_[0]-$$_[-1]" : "@$_"} @d;
@dの夫々の数値リストに対し、要素が1だったらその数値自体を文字列に、2個だったら数値を','で連結した文字列に、
3個以上だったら"最初の数値-最後の数値"という文字列に変換
例 @d = ([1], [3, 4, 5]) ⇒ @e = ("1", "3-5")
print "@e\n";
@e の文字列リストを','で繋いで印字(上の方で区切り文字$"は=','に設定済)
例 @e = ("1", "3-5") ⇒ 1,3-5
@dと@eを作るところがもう少しエレガントにできればよかったけれど
%h = map{$_ => $_} @a; … 変数@aのリスト例えば(1, 3, 4, 5)を入力として値対値ハッシュ {1=>1, 3=>3, 4=>4, 5=>5}を作り変数%hとする
@b = map{$h{$_}//','} 1..1000; … 1〜1000までの数値に対しハッシュ%hを参照し値があればその値、無ければ','文字のリストを生成して変数@bに格納、上記{1=>1, 3=>3, 4=>4, 5=>5}の場合はこんな感じ
# 1 2 3 4 5 6 7 8 9 … 1000
@b: 1 , 3 4 5 , , , , … ,
$"=','; $b = "@b"; … 上記リスト@bを元に要素を区切り文字','で繋いだ文字列を作り変数$bに設定
上記@b: 1 , 3 4 5 , , , … ,
の場合 $b = "1,,,3,4,5,,,,,,,…,,"
2や6以降は無いので,となっている
$b =~ s/^,*(.+?),*$/$1/; … 文字列$bの先頭と末尾に','があれば除去
例 $b = "1,,,3,4,5,,,,,,,…,," ⇒ "1,,,3,4,5"
@c = split /,,+/, $b; … $bを正規表現/,,+/を区切りとして分割したリストを@cに格納
例 $b = "1,,,3,4,5" ⇒ @c = ("1", "3,4,5")
@d = map{[eval]} @c; … リスト@cの文字列をそれぞれevalして数値リストのreferenceの配列を@dに設定
例 @c = ("1", "3,4,5") ⇒ @d = ([1], [3, 4, 5])
@e = map{@$_ > 2 ? "$$_[0]-$$_[-1]" : "@$_"} @d;
@dの夫々の数値リストに対し、要素が1だったらその数値自体を文字列に、2個だったら数値を','で連結した文字列に、
3個以上だったら"最初の数値-最後の数値"という文字列に変換
例 @d = ([1], [3, 4, 5]) ⇒ @e = ("1", "3-5")
print "@e\n";
@e の文字列リストを','で繋いで印字(上の方で区切り文字$"は=','に設定済)
例 @e = ("1", "3-5") ⇒ 1,3-5
@dと@eを作るところがもう少しエレガントにできればよかったけれど
68デフォルトの名無しさん
2020/03/29(日) 19:07:03.53ID:5iH4CTSz なるほど、そうやって並んだ部分でグループ化するのか
2020/03/30(月) 22:44:25.79ID:xSpiMCgD
>>65 Perl5 少しスマートに書けた(文字列マッチンク処理゙主体になっちまったけれど…)
$"=',';
for (qw{[1] [2,3] [1,2,3] [1,3] [1,3,4,5]}) {
@a = /(\d+)/g;
%h = map{$_ => $_} @a;
@b = map{$h{$_}//' '} 1..20;
$b = "@b";
@c = $b =~ /(\d(?:,\d)*)/g;
s/(,\d+)+,/-/ for @c;
print "@c\n";
}
実行
~ $ perl 17_61_resanc_0330.pl
1
2,3
1-3
1,3
1,3-5
$"=',';
for (qw{[1] [2,3] [1,2,3] [1,3] [1,3,4,5]}) {
@a = /(\d+)/g;
%h = map{$_ => $_} @a;
@b = map{$h{$_}//' '} 1..20;
$b = "@b";
@c = $b =~ /(\d(?:,\d)*)/g;
s/(,\d+)+,/-/ for @c;
print "@c\n";
}
実行
~ $ perl 17_61_resanc_0330.pl
1
2,3
1-3
1,3
1,3-5
2020/03/30(月) 22:45:46.57ID:q7KIsR+X
2020/03/31(火) 23:56:04.38ID:9DwI/QO9
>>59
めったに使えない evalが入てて楽しい
めったに使えない evalが入てて楽しい
72デフォルトの名無しさん
2020/04/03(金) 19:14:26.56ID:tv+k2Xei お題
文字列の先頭から続く、0 は、8進数と解釈されるため、バグります!
なので、それらを除去して、10進数と解釈できる文字列にして下さい。
以下は、すべて文字列です
090 → 90
0080 → 80
123 → 123
0 → 0
000 → 0
"" → ""
文字列の先頭から続く、0 は、8進数と解釈されるため、バグります!
なので、それらを除去して、10進数と解釈できる文字列にして下さい。
以下は、すべて文字列です
090 → 90
0080 → 80
123 → 123
0 → 0
000 → 0
"" → ""
2020/04/03(金) 19:53:54.22ID:MoLJYTUl
7472
2020/04/03(金) 20:02:16.50ID:tv+k2Xei 向こうのスレから移動したので、このスレで続けて下さい!
75デフォルトの名無しさん
2020/04/03(金) 20:06:07.16ID:etO49JcP 粘着者湧いてるじゃん
76デフォルトの名無しさん
2020/04/03(金) 20:13:05.27ID:D8CnMwXH2020/04/03(金) 20:17:14.47ID:Ea8es11U
78デフォルトの名無しさん
2020/04/03(金) 20:17:36.06ID:D8CnMwXH すまん、よく読んでなかったわ
2020/04/04(土) 00:40:59.23ID:oi+wB/l2
>>72 Perl5
for $a (qw{090 0080 123 0 000}) {
($b = $a) =~ s/^0*([\d])/$1/;
print "$a → $b\n"
}
実行結果
~ $ perl 17_72_0dec.pl
090 → 90
0080 → 80
123 → 123
0 → 0
000 → 0
for $a (qw{090 0080 123 0 000}) {
($b = $a) =~ s/^0*([\d])/$1/;
print "$a → $b\n"
}
実行結果
~ $ perl 17_72_0dec.pl
090 → 90
0080 → 80
123 → 123
0 → 0
000 → 0
2020/04/04(土) 00:43:04.52ID:7bsK3hPl
>>79 いや、([\d])は(\d)で十分だた…
for $a (qw{090 0080 123 0 000}) {
($b = $a) =~ s/^0*(\d)/$1/;
print "$a → $b\n"
}
for $a (qw{090 0080 123 0 000}) {
($b = $a) =~ s/^0*(\d)/$1/;
print "$a → $b\n"
}
2020/04/04(土) 01:02:31.09ID:PfYZfNM0
2020/04/04(土) 01:49:49.76ID:jL2VaRwC
>>81
そっか、今度から置換代入にはr使ってみる。
も少し書き換えたら、こうなった
for (qw{090 0080 123 0 000}) {
/^0*(\d+)/;
print "$_ → $1\n"
}
~ $ perl 17_72_0dec.pl
090 → 90
0080 → 80
123 → 123
0 → 0
000 → 0
そっか、今度から置換代入にはr使ってみる。
も少し書き換えたら、こうなった
for (qw{090 0080 123 0 000}) {
/^0*(\d+)/;
print "$_ → $1\n"
}
~ $ perl 17_72_0dec.pl
090 → 90
0080 → 80
123 → 123
0 → 0
000 → 0
8372
2020/04/04(土) 12:46:11.12ID:1ehA2Rbs >>72
Ruby で
def delete_successive_zero( str )
return "" if str == ""
str.to_i.to_s # 10進数
end
ary = %w(090 0080 123 0 000)
ary.push ""
p ary.map { |str| delete_successive_zero( str ) }
出力
[ "90", "80", "123", "0", "0", "" ]
Ruby で
def delete_successive_zero( str )
return "" if str == ""
str.to_i.to_s # 10進数
end
ary = %w(090 0080 123 0 000)
ary.push ""
p ary.map { |str| delete_successive_zero( str ) }
出力
[ "90", "80", "123", "0", "0", "" ]
2020/04/04(土) 13:37:45.44ID:tmNSQTrZ
>>52 Dart
void main() {
final List<String> anchors = ["1", "1-3", "1,3", "1,3-5"];
anchors.forEach((anchor) => print("$anchor => ${toNums(anchor)}"));
}
List<int> toNums(str) {
final List<int> result = [];
str.split(",").forEach((param){
if(param.contains("-")) {
result.addAll(hoge(param));
} else {
result.add(int.parse(param));
}
});
return result;
}
List<int> hoge(str) {
final List<int> result = [];
final range = str.split("-");
for(var i = int.parse(range[0]);i <= int.parse(range[1]); i++) result.add(i);
return result;
}
// =>
1 => [1]
1-3 => [1, 2, 3]
1,3 => [1, 3]
1,3-5 => [1, 3, 4, 5]
void main() {
final List<String> anchors = ["1", "1-3", "1,3", "1,3-5"];
anchors.forEach((anchor) => print("$anchor => ${toNums(anchor)}"));
}
List<int> toNums(str) {
final List<int> result = [];
str.split(",").forEach((param){
if(param.contains("-")) {
result.addAll(hoge(param));
} else {
result.add(int.parse(param));
}
});
return result;
}
List<int> hoge(str) {
final List<int> result = [];
final range = str.split("-");
for(var i = int.parse(range[0]);i <= int.parse(range[1]); i++) result.add(i);
return result;
}
// =>
1 => [1]
1-3 => [1, 2, 3]
1,3 => [1, 3]
1,3-5 => [1, 3, 4, 5]
2020/04/04(土) 13:48:29.31ID:qnbQjwAi
>>72 Python
def strip(s):
s = s.lstrip('0')
if not len(s):
return '0'
return s
def strip(s):
s = s.lstrip('0')
if not len(s):
return '0'
return s
86デフォルトの名無しさん
2020/04/04(土) 14:34:09.15ID:VszBH+2q87デフォルトの名無しさん
2020/04/04(土) 23:52:04.74ID:sokSr0we >>85
""が0になりませんか
""が0になりませんか
2020/04/05(日) 01:07:14.83ID:14D27qM5
89デフォルトの名無しさん
2020/04/05(日) 05:36:36.03ID:sZO7YFrq >>72
Perl5
ある意味手抜きなプログラムである。
https://paiza.io/projects/rlLxhWyuXx9FG7oVB7Kutw
オマケ機能としてマイナスの時に -00009 みたいなやつも -9 になるようにした。
更に、整数の数でない場合(文字列の場合)はダブルクォーテーションで括って出すようにした。
Perl5
ある意味手抜きなプログラムである。
https://paiza.io/projects/rlLxhWyuXx9FG7oVB7Kutw
オマケ機能としてマイナスの時に -00009 みたいなやつも -9 になるようにした。
更に、整数の数でない場合(文字列の場合)はダブルクォーテーションで括って出すようにした。
90デフォルトの名無しさん
2020/04/05(日) 05:42:34.94ID:sZO7YFrq >>72
Kotlin
https://paiza.io/projects/5CLwMbqJUtLbrE6nD5oZOA
>>89よりも更にもっと手抜きである。びっくりするほど何もやってない。仕様は同じ。
Kotlin
https://paiza.io/projects/5CLwMbqJUtLbrE6nD5oZOA
>>89よりも更にもっと手抜きである。びっくりするほど何もやってない。仕様は同じ。
2020/04/05(日) 06:46:49.40ID:14D27qM5
あ〜マイナス値は考慮してなかったな〜
2020/04/05(日) 06:56:54.72ID:RExqiO2w
教えて君の質問に馬鹿正直に答えてやるなよ
2020/04/05(日) 07:43:19.11ID:14D27qM5
94デフォルトの名無しさん
2020/04/05(日) 12:55:09.83ID:SfC0ZJYK 粘着君の意に反して回答わっさわっさ来ててワロタ
2020/04/05(日) 12:56:43.55ID:yw9/uuhJ
粘着君ってなんやねん
スレチだって言われてんだろ
スレチだって言われてんだろ
96デフォルトの名無しさん
2020/04/05(日) 13:01:09.81ID:SfC0ZJYK えw それ言ってるのが粘着君じゃないの?w
どの辺がスレチなのか知らんけど君の意見なんか誰も同調しないかのように回答わさわさなのを見てどんな気持ち???w
どの辺がスレチなのか知らんけど君の意見なんか誰も同調しないかのように回答わさわさなのを見てどんな気持ち???w
2020/04/05(日) 13:06:14.44ID:yw9/uuhJ
あほくさ
2020/04/05(日) 13:06:52.23ID:liJZihU7
>>72 GNU Smalltalk
| fn |
fn := [:str | str isEmpty ifTrue: [str] ifFalse: [str asNumber]].
(#('090' '0080' '123' '0' '000' '') collect: fn) display.
=> (90 80 123 0 0 '' )
https://ideone.com/x8y6JM
| fn |
fn := [:str | str isEmpty ifTrue: [str] ifFalse: [str asNumber]].
(#('090' '0080' '123' '0' '000' '') collect: fn) display.
=> (90 80 123 0 0 '' )
https://ideone.com/x8y6JM
99デフォルトの名無しさん
2020/04/05(日) 13:07:50.11ID:SfC0ZJYK わざわざ他スレから出張してまで粘着するも自分の思い通りにならず涙目敗北草不可避w
100デフォルトの名無しさん
2020/04/05(日) 13:08:52.29ID:5b4pXRMu ID:SfC0ZJYKは有名な荒しだよ
スルーしな
スルーしな
101デフォルトの名無しさん
2020/04/05(日) 13:10:52.18ID:SfC0ZJYK そのように言っている自分自身の策略書き込みがスルーされているという悲劇ww
102デフォルトの名無しさん
2020/04/05(日) 13:13:48.87ID:QyCQlkmw 共有NG入ってて草
>>72が自力で解けない時点で脳みそに障害あるだろコイツ
>>72が自力で解けない時点で脳みそに障害あるだろコイツ
103デフォルトの名無しさん
2020/04/05(日) 13:15:17.06ID:SfC0ZJYK ブツブツと負け惜しみを垂れ流しているその姿はまさに哀愁満点 w
104デフォルトの名無しさん
2020/04/07(火) 16:39:18.53ID:WiIyPE7p105デフォルトの名無しさん
2020/04/07(火) 19:00:27.59ID:i9ABTPYd であればもうこれで十分って感じがしてきた^^;
>>72 GNU Smalltalk
#(090 0080 123 0 000 '') display.
=> (90 80 123 0 0 '' )
https://ideone.com/e0kdys
>>72 GNU Smalltalk
#(090 0080 123 0 000 '') display.
=> (90 80 123 0 0 '' )
https://ideone.com/e0kdys
106デフォルトの名無しさん
2020/04/08(水) 07:58:45.75ID:5CDGaVzP お題: レスの被アンカー数をレスごとにカウントし、降順に整列して出力せよ
入力は1レス1行で入力され、1行のフォーマットは「レス番:レス内容」でコロンで区切ってある
レスの入力がすべて終わった段階でレスごとに被アンカー数を計算し、「レス番:カウント数」のフォーマットで出力せよ
入力と出力例: https://ideone.com/XOytlP
入力は1レス1行で入力され、1行のフォーマットは「レス番:レス内容」でコロンで区切ってある
レスの入力がすべて終わった段階でレスごとに被アンカー数を計算し、「レス番:カウント数」のフォーマットで出力せよ
入力と出力例: https://ideone.com/XOytlP
107デフォルトの名無しさん
2020/04/08(水) 16:25:56.70ID:gvYQZ6Pp こんな感じで作ったな
select_word_and_anchor.pl
https://ideone.com/bpypjv
cat ~/.w3m/keymap
# vim: set nowrap
keymap a EXEC_SHELL "w3m -cols 200 $( echo $W3M_URL| sed 's/[-l][0-9]\+//' ) | /home/web/extract_body_of_2ch.sh | /home/bin/select_word_and_anchor.pl|less"
select_word_and_anchor.pl
https://ideone.com/bpypjv
cat ~/.w3m/keymap
# vim: set nowrap
keymap a EXEC_SHELL "w3m -cols 200 $( echo $W3M_URL| sed 's/[-l][0-9]\+//' ) | /home/web/extract_body_of_2ch.sh | /home/bin/select_word_and_anchor.pl|less"
108デフォルトの名無しさん
2020/04/08(水) 16:30:02.96ID:gvYQZ6Pp 動作はこんな感じ 例にあるような常用2chアンカー機能する
https://i.imgur.com/Bw5tlnl.png
https://i.imgur.com/Bw5tlnl.png
109デフォルトの名無しさん
2020/04/08(水) 23:06:09.94ID:jh8IMM/7 >>106 Perl5
for (<>) {
($r, @a) = /([-\d]+)/g;
push @s, $r;
for (@a) {
@b = /(\d+)/g;
$h{$_}++ for $b[0]..$b[-1]
}
}
printf "%d: %d\n", $_, $h{$_}//0 for @s;
実行結果
https://ideone.com/UVvDtv
for (<>) {
($r, @a) = /([-\d]+)/g;
push @s, $r;
for (@a) {
@b = /(\d+)/g;
$h{$_}++ for $b[0]..$b[-1]
}
}
printf "%d: %d\n", $_, $h{$_}//0 for @s;
実行結果
https://ideone.com/UVvDtv
110デフォルトの名無しさん
2020/04/09(木) 00:05:07.49ID:VEjEdiDF >>106 Perl5、ゴメン「降順に整列」が抜けてた…orz、やり直し
for (<>) {
($r, @a) = /([-\d]+)/g;
push @s, $r;
for (@a) {
@b = /(\d+)/g;
$h{$_}++ for $b[0]..$b[-1]
}
}
@t = sort{$h{$b} <=> $h{$a}} @s;
printf "$_: %d\n", $h{$_}//0 for @t;
実行結果
https://ideone.com/r4tBGc
for (<>) {
($r, @a) = /([-\d]+)/g;
push @s, $r;
for (@a) {
@b = /(\d+)/g;
$h{$_}++ for $b[0]..$b[-1]
}
}
@t = sort{$h{$b} <=> $h{$a}} @s;
printf "$_: %d\n", $h{$_}//0 for @t;
実行結果
https://ideone.com/r4tBGc
111デフォルトの名無しさん
2020/04/09(木) 10:38:42.89ID:Sx5ouxFp >>106
話題そらそうと粘着君が必死だねwww負け組だっさwww
話題そらそうと粘着君が必死だねwww負け組だっさwww
112デフォルトの名無しさん
2020/04/09(木) 12:42:58.73ID:5swiwcjH ?
113デフォルトの名無しさん
2020/04/09(木) 15:48:38.65ID:pqMoXxyo 荒らしは必ず、2回書き込む。
「そうだよね」とか、同意するレスを付けて、人数が多いように見せる
くだすれPython(超初心者用) その47【Ruby禁止】
Ruby禁止とか、色々なスレのタイトルを勝手に変える
工学部というコテハンだろ。
ソースコードを書かないし、プログラマーじゃないから相手をしないように!
「そうだよね」とか、同意するレスを付けて、人数が多いように見せる
くだすれPython(超初心者用) その47【Ruby禁止】
Ruby禁止とか、色々なスレのタイトルを勝手に変える
工学部というコテハンだろ。
ソースコードを書かないし、プログラマーじゃないから相手をしないように!
114デフォルトの名無しさん
2020/04/09(木) 16:48:05.84ID:G208HopB115デフォルトの名無しさん
2020/04/09(木) 16:59:35.57ID:EoH4bsm+ >>113
悔しいんでしょwwそうゆう風にいつまでも負け惜しみ言ってなよwww
悔しいんでしょwwそうゆう風にいつまでも負け惜しみ言ってなよwww
116デフォルトの名無しさん
2020/04/10(金) 15:52:58.48ID:FxL3k9Tv >>110
コード短いね
コード短いね
117デフォルトの名無しさん
2020/04/10(金) 15:53:17.46ID:FxL3k9Tv ageてしまった
118デフォルトの名無しさん
2020/04/10(金) 17:33:36.23ID:gIxx/WN6 気にすんな
119デフォルトの名無しさん
2020/04/10(金) 17:34:13.60ID:GWaBtrPd age禁止ってまだやってんの?
120デフォルトの名無しさん
2020/04/10(金) 17:42:36.38ID:7f4O8kzL 非常事態を宣言します
121デフォルトの名無しさん
2020/04/10(金) 20:50:54.41ID:gIxx/WN6 このスレは放っておくとすぐ過疎っちゃうんだからむしろもっともっと激しくテッテ的にage続けるべきだ。
122デフォルトの名無しさん
2020/04/11(土) 00:56:36.59ID:qHx8Q1G9123デフォルトの名無しさん
2020/04/11(土) 01:07:31.53ID:Rbw4pROQ124デフォルトの名無しさん
2020/04/11(土) 01:11:10.19ID:fnqXUaLM (><)
125デフォルトの名無しさん
2020/04/12(日) 00:40:37.82ID:j0O/fDVx126デフォルトの名無しさん
2020/04/13(月) 23:30:53.99ID:+Sqc38Tr127デフォルトの名無しさん
2020/04/14(火) 00:06:26.40ID:hs9mI5+o128デフォルトの名無しさん
2020/04/14(火) 01:39:02.43ID:hs9mI5+o129デフォルトの名無しさん
2020/04/14(火) 01:44:11.08ID:cZOfM+S5 if(m[n]==null) m[n]=1
の部分と三項演算子の部分の後分は機能が被ってませんか?
の部分と三項演算子の部分の後分は機能が被ってませんか?
130デフォルトの名無しさん
2020/04/14(火) 12:04:01.20ID:ZuF0W/s6 >>61 Perl5、正規表現を使った文字列処理ではなく、数値のリストに対する処理として書いてみた
sub f {
my @s;
while (my $e = shift) { push @s, $e }
@_ ? (@s ? (\@s, f(@_)) : f(@_)) : \@s;
}
sub g { @_ > 2 ? "$_[0]-$_[-1]" : @_ }
for ([1], [2,3], [1,2,3], [1,3], [1,3,4,5], [7,9]) {
@a = ();
@a[@$_] = @$_;
@b = f @a;
@c = map{g @$_} @b;
$"=',';
print "[@$_] -> '@c'\n";
}
実行結果
~ $ perl 17_61_resanc_0414fp.pl
[1] -> '1'
[2,3] -> '2,3'
[1,2,3] -> '1-3'
[1,3] -> '1,3'
[1,3,4,5] -> '1,3-5'
[7,9] -> '7,9'
sub f {
my @s;
while (my $e = shift) { push @s, $e }
@_ ? (@s ? (\@s, f(@_)) : f(@_)) : \@s;
}
sub g { @_ > 2 ? "$_[0]-$_[-1]" : @_ }
for ([1], [2,3], [1,2,3], [1,3], [1,3,4,5], [7,9]) {
@a = ();
@a[@$_] = @$_;
@b = f @a;
@c = map{g @$_} @b;
$"=',';
print "[@$_] -> '@c'\n";
}
実行結果
~ $ perl 17_61_resanc_0414fp.pl
[1] -> '1'
[2,3] -> '2,3'
[1,2,3] -> '1-3'
[1,3] -> '1,3'
[1,3,4,5] -> '1,3-5'
[7,9] -> '7,9'
131蟻人間 ◆T6xkBnTXz7B0
2020/04/14(火) 12:53:55.02ID:QRiFiZHs お題: 整数の閉区間がいくつか与えられる。
それらの和集合を求め、それをいくつかの閉区間で出力せよ。
出力の閉区間の個数はなるべく少なくすること。
(例)
[1, 5], [2, 6], [-1, 10] ==> [-1, 10].
[2, 3], [3, 4], [7, 10] ==> [2, 4], [7, 10].
それらの和集合を求め、それをいくつかの閉区間で出力せよ。
出力の閉区間の個数はなるべく少なくすること。
(例)
[1, 5], [2, 6], [-1, 10] ==> [-1, 10].
[2, 3], [3, 4], [7, 10] ==> [2, 4], [7, 10].
132デフォルトの名無しさん
2020/04/14(火) 14:56:59.99ID:vknfd45S >>129
三項演算子ではない(Kotlinには三項演算子はない)。?: はエルビス演算子で、左側の式が null だったら右側の値を使うというやつ。nullでなければそのまま左側の値を使う。
で、その部分は先頭のレス番号のキーがまだ作られてなかったら0で初期化する部分だ。
m[n] = m[n] ?: 0
とも書けるが、これは何か無駄な感じがする。nullでなければ同じ値の代入になるので。だからifで必要な時だけの代入(初期化)にした。
三項演算子ではない(Kotlinには三項演算子はない)。?: はエルビス演算子で、左側の式が null だったら右側の値を使うというやつ。nullでなければそのまま左側の値を使う。
で、その部分は先頭のレス番号のキーがまだ作られてなかったら0で初期化する部分だ。
m[n] = m[n] ?: 0
とも書けるが、これは何か無駄な感じがする。nullでなければ同じ値の代入になるので。だからifで必要な時だけの代入(初期化)にした。
133デフォルトの名無しさん
2020/04/14(火) 15:14:57.47ID:U0kTSrBw >>131 Perl5
sub f {
my @s;
while (defined (my $e = shift)) { push @s, $e }
@_ ? (@s ? (\@s, f(@_)) : f(@_)) : \@s;
}
sub g { map{"[$$_[0],$$_[-1]]"} @_ }
for ([[1, 5], [2, 6], [-1, 10]],
[[2, 3], [3, 4], [7, 10]]) {
%h = map{$_ => $_} map{$$_[0]..$$_[1]} @$_;
@k = sort{$a <=> $b} keys %h;
@l = f map{$h{$_}} $k[0]..$k[-1];
$"=',';
@j = g @$_;
@k = g @l;
print "@j ==> @k\n";
}
実行結果
~ $ perl 17_131_intrange.pl
[1,5],[2,6],[-1,10] ==> [-1,10]
[2,3],[3,4],[7,10] ==> [2,4],[7,10]
sub f {
my @s;
while (defined (my $e = shift)) { push @s, $e }
@_ ? (@s ? (\@s, f(@_)) : f(@_)) : \@s;
}
sub g { map{"[$$_[0],$$_[-1]]"} @_ }
for ([[1, 5], [2, 6], [-1, 10]],
[[2, 3], [3, 4], [7, 10]]) {
%h = map{$_ => $_} map{$$_[0]..$$_[1]} @$_;
@k = sort{$a <=> $b} keys %h;
@l = f map{$h{$_}} $k[0]..$k[-1];
$"=',';
@j = g @$_;
@k = g @l;
print "@j ==> @k\n";
}
実行結果
~ $ perl 17_131_intrange.pl
[1,5],[2,6],[-1,10] ==> [-1,10]
[2,3],[3,4],[7,10] ==> [2,4],[7,10]
134デフォルトの名無しさん
2020/04/14(火) 15:35:48.84ID:cZOfM+S5 >>132
なるほど。ありがとうございます。
なるほど。ありがとうございます。
135デフォルトの名無しさん
2020/04/14(火) 17:17:14.65ID:h96nPay3 数式を標準入力から与えられる。
計算結果を出力しなさい。
条件
・数式の長さが1000を超える場合や、不正な数式についてはErrorと出力すること
・整数を出力しなさい
・小数点が出る場合は切り捨てた値を出力すること
・eval禁止
・数式に利用できる文字 0123456789+-*/()
・数式に半角スペースは含まれない
計算結果を出力しなさい。
条件
・数式の長さが1000を超える場合や、不正な数式についてはErrorと出力すること
・整数を出力しなさい
・小数点が出る場合は切り捨てた値を出力すること
・eval禁止
・数式に利用できる文字 0123456789+-*/()
・数式に半角スペースは含まれない
136デフォルトの名無しさん
2020/04/14(火) 17:45:13.26ID:SdOMVfQl >>135 数式のサンプルよろ
137デフォルトの名無しさん
2020/04/14(火) 17:50:15.21ID:OuRgqSbO 100/2(3+4)
はいくつですか?
はいくつですか?
138デフォルトの名無しさん
2020/04/14(火) 17:56:57.90ID:7oi1O/kb139蟻人間 ◆T6xkBnTXz7B0
2020/04/14(火) 19:35:28.42ID:Ozse1OSh お題: CD/DVDドライブのトレイを開きなさい。
140デフォルトの名無しさん
2020/04/14(火) 19:48:22.16ID:rsqvGSlE141デフォルトの名無しさん
2020/04/14(火) 19:50:23.06ID:rsqvGSlE typo
p eval$_ rescue$><<:Error while gets
p eval$_ rescue$><<:Error while gets
142デフォルトの名無しさん
2020/04/14(火) 20:13:52.06ID:AV9/Nsy0144デフォルトの名無しさん
2020/04/14(火) 22:24:45.74ID:8w/NVh3l >>139 Python
import ctypes
ctypes.windll.WINMM.mciSendStringW(u"set cdaudio door open", None, 0, None)
import ctypes
ctypes.windll.WINMM.mciSendStringW(u"set cdaudio door open", None, 0, None)
145デフォルトの名無しさん
2020/04/15(水) 01:04:36.72ID:RHvlA1sV 三項演算子ないとかゴミだな
146デフォルトの名無しさん
2020/04/15(水) 12:23:24.76ID:229B67vy >>131 js
let input = [[2, 3], [3, 4], [7, 10]];
let result = input.reduce((merged, range) => {
let under = range.map(n =>
merged.filter(mrange => mrange[0] <= n && n <= mrange[1])[0]||[]);
let extended = [under[0][0] || range[0], under[1][1] || range[1]];
let bored = merged.filter(mrange => !(extended[0] <= mrange[0] && mrange[1] <= extended[1]));
return [...bored, extended];
}, []);
console.log(result);
let input = [[2, 3], [3, 4], [7, 10]];
let result = input.reduce((merged, range) => {
let under = range.map(n =>
merged.filter(mrange => mrange[0] <= n && n <= mrange[1])[0]||[]);
let extended = [under[0][0] || range[0], under[1][1] || range[1]];
let bored = merged.filter(mrange => !(extended[0] <= mrange[0] && mrange[1] <= extended[1]));
return [...bored, extended];
}, []);
console.log(result);
147デフォルトの名無しさん
2020/04/15(水) 12:57:38.58ID:qoEmvMwd148デフォルトの名無しさん
2020/04/15(水) 15:02:35.67ID:3oL83xUj >>145 Perl5、再帰降下parser generator使わせてもらいました
sub evalop {
my (@list) = @{$_[0]};
my $val = shift(@list)->();
while (@list) {
my ($op, $arg2) = splice @list, 0, 2;
$op->($val,$arg2->());
} $val }
use Parse::RecDescent;
$parse = new Parse::RecDescent(<<'EOG');
formula: expr /\s*\Z/ {$item[1]->()} | <error>
expr: <leftop:muldiv add_op muldiv> {sub {::evalop $item[1]}}
add_op: '+' {sub {$_[0] += $_[1]}} | '-' {sub{ $_[0] -= $_[1]}}
muldiv: <leftop:factor mult_op factor> {sub {::evalop $item[1]}}
mult_op: '*' {sub {$_[0] *= $_[1]}} | '/' {sub {$_[0] /= $_[1]}}
factor: number | '(' expr ')' {$item[2]}
number: /\d+/ {sub {$item[1]}}
EOG
for (<DATA>) {
chomp;
$ret = defined ($iret = $parse->formula($_)) ? sprintf('%d', $iret) : 'Error';
printf "$_ = %s\n", $ret;
}
__DATA__
1+2*((3-4*5)/6+7)*8-9
100/2(3+4)
100/2*(3+4)
*10
1/3*3
sub evalop {
my (@list) = @{$_[0]};
my $val = shift(@list)->();
while (@list) {
my ($op, $arg2) = splice @list, 0, 2;
$op->($val,$arg2->());
} $val }
use Parse::RecDescent;
$parse = new Parse::RecDescent(<<'EOG');
formula: expr /\s*\Z/ {$item[1]->()} | <error>
expr: <leftop:muldiv add_op muldiv> {sub {::evalop $item[1]}}
add_op: '+' {sub {$_[0] += $_[1]}} | '-' {sub{ $_[0] -= $_[1]}}
muldiv: <leftop:factor mult_op factor> {sub {::evalop $item[1]}}
mult_op: '*' {sub {$_[0] *= $_[1]}} | '/' {sub {$_[0] /= $_[1]}}
factor: number | '(' expr ')' {$item[2]}
number: /\d+/ {sub {$item[1]}}
EOG
for (<DATA>) {
chomp;
$ret = defined ($iret = $parse->formula($_)) ? sprintf('%d', $iret) : 'Error';
printf "$_ = %s\n", $ret;
}
__DATA__
1+2*((3-4*5)/6+7)*8-9
100/2(3+4)
100/2*(3+4)
*10
1/3*3
149デフォルトの名無しさん
2020/04/15(水) 15:04:17.94ID:IXOt/09v150蟻人間 ◆T6xkBnTXz7B0
2020/04/15(水) 21:28:09.80ID:mz+a7+dL お題: 二次元空間にナゾの物体Pが2個ある。2個のPは初期状態に(-3, -2), (3, 1)[単位:m]にあるものと仮定する。
2個のPは離れすぎると距離r[m]に比例する引力加速度2*r[m/s^2]を生じ、近づきすぎると距離r[m]に反比例する反発
加速度k/r[m/s^2]が発生する。rが収束するとき(一秒あたりの距離の変化が0.01[m]以下)の距離をRと表す。
kとRの関係を調べたい。kを1.0から1.5まで0.1刻みで動かし、それぞれで数値積分によって2つのPの収束位置を近似計算し、Rを求め、(k, R)の組を出力せよ。
2個のPは離れすぎると距離r[m]に比例する引力加速度2*r[m/s^2]を生じ、近づきすぎると距離r[m]に反比例する反発
加速度k/r[m/s^2]が発生する。rが収束するとき(一秒あたりの距離の変化が0.01[m]以下)の距離をRと表す。
kとRの関係を調べたい。kを1.0から1.5まで0.1刻みで動かし、それぞれで数値積分によって2つのPの収束位置を近似計算し、Rを求め、(k, R)の組を出力せよ。
151デフォルトの名無しさん
2020/04/15(水) 21:56:01.64ID://wWJwAN はい、次の方どうぞ
152蟻人間 ◆T6xkBnTXz7B0
2020/04/15(水) 22:30:18.26ID:mz+a7+dL お題: 次のようなプログラムを作れ。プログラムを起動したとき、ファイル「times.txt」に現在の日時を秒単位で記録した後、
前回の起動日時との差を求め、時間差の秒数を表示せよ。
ただし、うるう秒を考慮すること。
前回の起動日時との差を求め、時間差の秒数を表示せよ。
ただし、うるう秒を考慮すること。
153デフォルトの名無しさん
2020/04/15(水) 23:31:28.64ID:/1JmN5U2154デフォルトの名無しさん
2020/04/16(木) 00:11:24.84ID:qhHxDSDQ155デフォルトの名無しさん
2020/04/16(木) 00:30:51.63ID:qxGCpnz3 乙。
156デフォルトの名無しさん
2020/04/16(木) 01:19:43.21ID:6omvFBXS >>153
アスペルガー症候群は黙ってた方がいい
アスペルガー症候群は黙ってた方がいい
157デフォルトの名無しさん
2020/04/16(木) 01:25:27.80ID:Yc0fbgtG 初速度や離れすぎ、近づきすぎの条件が書いてないのは事実で回答しようも無いんだし
そういうのはやめたらどうかと思うんだが
そういうのはやめたらどうかと思うんだが
158デフォルトの名無しさん
2020/04/16(木) 01:27:18.30ID:iTxUXfYH そういう柔軟性のなさがアスペルガー症候群くさいんだよなぁ…
まあ本当は出題の意図は分かってて敢えてイチャモン付けてるんだろうけど
まあ本当は出題の意図は分かってて敢えてイチャモン付けてるんだろうけど
159デフォルトの名無しさん
2020/04/16(木) 01:28:44.29ID:Yc0fbgtG160デフォルトの名無しさん
2020/04/16(木) 01:37:52.71ID:iTxUXfYH 俺なら初期位置も計算の打ち止め条件も完全に無視してポテンシャルの極小値を求めるプログラムを書いて提示するかな
出題者が期待してるのはそういうものだろうし些細な出題の問題点をいちいち指摘してボツにさせる気なんか起きないな
出題者が期待してるのはそういうものだろうし些細な出題の問題点をいちいち指摘してボツにさせる気なんか起きないな
161デフォルトの名無しさん
2020/04/16(木) 01:40:49.88ID:s4YIDkZq >>160
そのプログラムを投稿すればいいだけの話
そのプログラムを投稿すればいいだけの話
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【前橋市】小川晶前市長とラブホテルで打ち合わせをした54歳男性職員を停職処分 今月末で依願退職するという [シャチ★]
- 【サッカー】元日本代表DF冨安がオランダ1部アヤックスと大筋合意か 現地メディア報じる [久太郎★]
- 【熊本】園児に強制性交か 保育所勤務の男を逮捕「性的な欲望が我慢できなかった」警察は余罪を調べる [七波羅探題★]
- 日銀「歴史的」利上げ迫る 35年ぶりの年間上げ幅、0.5%の壁を突破 [蚤の市★]
- 【未成年NISA】つみたて枠、18歳未満は600万円上限 12歳で引き出し可能 [蚤の市★]
- 【埼玉】「無免許で高速道路で事故」トラックの追突事故で10代男性死亡 無免許過失運転致死の疑いでトルコ国籍の男(22)逮捕 戸田市 [ぐれ★]
- 中国の日本向けレアアースの輸出止まる、高市のせいで日本終了のお知らせ [931948549]
- 高市早苗「竹島は日本領土」 [834922174]
- 暖房やめて湯たぼんにしようと思ってる
- 【悲報】最近の若者、「新巻」を読めない [126042664]
- サムスン「うちのメモリ買い占めるの?」Hynix「まあ他社もあるし」Micron「たいした値上げにはならないだろ」ChatGPTが世界のメモリを枯渇 [347751896]
- 🏡
