[過去ログ] プログラミングのお題スレ Part17 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
61(3): 2020/03/28(土)18:24 ID:ssy5u0i6(2/2) AAS
お題:レス番リストを安価に変換せよ
例:
[1] -> "1"
[1,2,3] -> "1-3"
[1,3] -> "1,3"
[1,3,4,5] -> "1,3-5"
62: 2020/03/28(土)19:38 ID:RLgHfGbj(1) AAS
前者は2ch browserで使えるけど後者はそうじゃないね
63: 2020/03/28(土)23:41 ID:X4tW2giy(1) AAS
まーたやらな言い訳かー
やる気ねーなw
64: 2020/03/29(日)10:50 ID:ACisvDeP(1) AAS
>>61 js
let レス番リスト=[1,3,4,5];
let 先頭レス番=レス番リスト[0];
let 安価="";
for(let イ=0;イ<レス番リスト.length-1;イ++){
if(レス番リスト[イ]+1!=レス番リスト[イ+1]){
安価+=レス番リスト[イ]==先頭レス番?先頭レス番+",":先頭レス番+"-"+レス番リスト[イ]+",";
先頭レス番=レス番リスト[イ+1];
}
}
省3
65(1): 2020/03/29(日)14:05 ID:kU1QBoxf(1) AAS
>>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;
省9
66: 2020/03/29(日)18:03 ID:5iH4CTSz(1/2) AAS
なにやってるのか全くわからんw
67: 2020/03/29(日)18:46 ID:CipzEZQ7(1) AAS
@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の先頭と末尾に','があれば除去
省13
68: 2020/03/29(日)19:07 ID:5iH4CTSz(2/2) AAS
なるほど、そうやって並んだ部分でグループ化するのか
69(1): 2020/03/30(月)22:44 ID:xSpiMCgD(1) AAS
>>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";
省8
70: 2020/03/30(月)22:45 ID:q7KIsR+X(1) AAS
>>69 テスト時のcodeが残ってた…orz
× @b = map{$h{$_}//' '} 1..20;
○ @b = map{$h{$_}//' '} 1..1000;
71: 2020/03/31(火)23:56 ID:9DwI/QO9(1) AAS
>>59
めったに使えない evalが入てて楽しい
72(16): 2020/04/03(金)19:14 ID:tv+k2Xei(1/2) AAS
お題
文字列の先頭から続く、0 は、8進数と解釈されるため、バグります!
なので、それらを除去して、10進数と解釈できる文字列にして下さい。
以下は、すべて文字列です
090 → 90
0080 → 80
123 → 123
0 → 0
000 → 0
省1
73: 2020/04/03(金)19:53 ID:MoLJYTUl(1) AAS
>>72 マルチポスト&スレチ
2chスレ:tech
74: 72 2020/04/03(金)20:02 ID:tv+k2Xei(2/2) AAS
向こうのスレから移動したので、このスレで続けて下さい!
75: 2020/04/03(金)20:06 ID:etO49JcP(1) AAS
粘着者湧いてるじゃん
76: 2020/04/03(金)20:13 ID:D8CnMwXH(1/2) AAS
>>72
js
result=input==""?"":Number(input)
77: 2020/04/03(金)20:17 ID:Ea8es11U(1) AAS
>>72
perl5
外部リンク:pastebin.com
78: 2020/04/03(金)20:17 ID:D8CnMwXH(2/2) AAS
すまん、よく読んでなかったわ
79(1): 2020/04/04(土)00:40 ID:oi+wB/l2(1) AAS
>>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
省2
80(1): 2020/04/04(土)00:43 ID:7bsK3hPl(1) AAS
>>79 いや、([\d])は(\d)で十分だた…
for $a (qw{090 0080 123 0 000}) {
($b = $a) =~ s/^0*(\d)/$1/;
print "$a → $b\n"
}
上下前次1-新書関写板覧索設栞歴
あと 922 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.025s