プログラミングのお題スレ Part22 (863レス)
上下前次1-新
抽出解除 レス栞
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
9(58): 9 2023/08/07(月)01:46 ID:PMO8D1QO(1/2) AAS
>>3 Perl5
for (<DATA>) {
my %h = map{$_ => 1} grep{/[a-z]/i} split '';
push @a, $_ if 26 == keys %h;
}
@s = sort{length($a) <=> length($b)} @a;
print $s[0];
省13
10(1): 2023/08/07(月)01:57 ID:PMO8D1QO(2/2) AAS
>>9 ゴメン、2行目に間違いあり…orz
my %h = map{$_ => 1} grep{/[a-z]/i} split '';
↓正しくは
my %h = map{$_ => 1} map{lc} grep{/[a-z]/i} split '';
実行結果は今回のテストデータだとたまたま同じ結果になる。
26: 9 2023/08/11(金)02:38 ID:4P/NDj/+(1/2) AAS
スレが伸びているので何かと思えば、オレほか一部の回答者がsortを使ったのが
そんなに気に入らなかったか、気に障ったか、
ざまぁみろw としか言いようがないが
後出しでケチつけてるのは出題者じゃないようだが
そしたらsortも、そしてminもあえて使わないバージョン、
書き方はいろいろあると思うけど:
>>3 Perl5
省18
29: 9 2023/08/11(金)08:37 ID:4P/NDj/+(2/2) AAS
O(nlog(n))がダメかどうかは、データの規模および実行時間による
43(2): 9 2023/08/16(水)13:32 ID:vjpqg3x7(1/2) AAS
AA省
44: 9 2023/08/16(水)13:42 ID:vjpqg3x7(2/2) AAS
>>43 typo orz
-h または --highres
↓
-h または --highreso
45: 9 2023/08/16(水)19:12 ID:y9YJABkH(1) AAS
AA省
89: 9 2023/09/22(金)16:53 ID:8M97O6g7(1) AAS
>>85 Perl5
rename "abc$_.mp4", sprintf 'abc%03d.mp4',$_ for 1..20;
※abc1.mp4 abc2.mp4 .. abc20.mp4 があるとしています。
また abc001.mp4 abc002.mp4 ... abc020.mp4 は既存かのチェックは省いています。
121(1): 9 2023/10/08(日)20:24 ID:zYJ3wh+h(1) AAS
>>120
「もっとも効率がいいエレベーターの停止順序」とは?
1.停止回数がもっとも少ない
2.移動した階数の和が最も小さい
3.ほか
など、どのような指標?
188(1): 9 2024/01/16(火)02:37 ID:SfyAs2IF(1/2) AAS
>>187 Perl5
use Time::Piece;
use Time::Seconds;
for (qw{00:00:00 23:59:59}) {
$t = Time::Piece->strptime($_, '%T') + 1;
print "入力:$_\n出力:", $t->strftime('%T'), "\n";
}
省7
189: 9 2024/01/16(火)02:38 ID:SfyAs2IF(2/2) AAS
>>188
use Time::Seconds;
これ要らなかった…orz
216: 9 2024/02/04(日)16:39 ID:jTY6zdRX(1/2) AAS
>>208 Perl5
use feature qw{:5.16 signatures};
no warnings qw(experimental::signatures);
@s = qw[a1=a2 b1=b2 b3=b2 c1=c2 e1=e2 a3=a4 c3=c4 e1=e3 a2=a4 c3=c1 b3=a4 c2=d1 a4=a5 d2=c1 b4=b3 d3=c3];
for (map{[sort /(\w+)=(\w+)/]} @s) {
($l, $r) = @$_;
$g{$r} //= $g{$l} //= $g{$r} // $l;
省12
217: 9 2024/02/04(日)18:22 ID:jTY6zdRX(2/2) AAS
>>208 宛てじゃなかった
>>206 の回答だったわ… orz
241(1): 9 2024/02/16(金)02:56 ID:7jtCAGu+(1/2) AAS
>>234 Perl5
for $n (0,17,100,123459321) {
my %a;
for (0..$n) {
$i = $n - $_;
$a{$i} = $i if 0 <= $i and $i =~ /^((\d)(?1)\2|\d?)$/;
$j = $n + $_;
省13
242: 9 2024/02/16(金)03:13 ID:7jtCAGu+(2/2) AAS
>>241
last if keys %a;
}
@a = keys %a;
は
last if @a = keys %a;
}
省1
243(1): 9 2024/02/16(金)14:47 ID:TIAwaOOw(1) AAS
>>234 Perl5、小さい方の検索は0で止まるので負の値を避ける必要はなかった、書き直し。
$r = qr/^((\d)(?1)\2|\d?)$/;
for $n (0,17,100,123459321) {
my %a;
for (0..$n) {
$a{$n - $_} = 1 if ($n - $_) =~ $r;
$a{$n + $_} = 1 if ($n + $_) =~ $r;
省4
246(1): 9 2024/02/17(土)02:10 ID:K8P5qDCx(1) AAS
AA省
263: 9 2024/02/20(火)17:18 ID:X5uoFLgg(1) AAS
「どんなテストしたの?」
って質問だよ
362: 9 2024/06/11(火)14:41 ID:NjINqn/m(1) AAS
>>348 Perl5
($x = '04:05:06') =~ s/:/*/g;
print eval $x;
363(3): 9 2024/06/13(木)14:34 ID:XgNTPGgf(1/3) AAS
>>349
> 「バイトが1だったら次の4バイトを読み込んで整数として出力し、」
正直、意味がわからんかった
例で見ると
1 1 0 0 0 → 1
1 128 0 0 0 → 128
ということだが
省1
368: 9 2024/06/13(木)17:03 ID:XgNTPGgf(2/3) AAS
>>365
ああそういうことか「4バイトを読み込んで整数」と書いてあるのはそういう意味だったのか
ならわかるかも。
オレは4バイト一個一個が整数だと捉えて、それを「4バイトを読み込んで整数」とは何のこっちゃと?になってたわ
369: 9 2024/06/13(木)17:07 ID:XgNTPGgf(3/3) AAS
すまんね68系で育ったもんですぐ連想できなんだ
483(1): 9 01/20(月)01:11 ID:zWVP8H/r(1) AAS
>>474 Perl5
$s = '(100)(10)(1)[10000](5)(500)[1000][5000][1000][1000](10)(100)(50)(100)[1000]';
$h{$_} .= $_ for $s =~ /\(\d+\)|\[\d+\]/g;
use List::Util 'sum';
$v{$h{$_}} = sum($h{$_} =~ /\d+/g) for keys %h;
print "$_\n" for sort{$v{$b} <=> $v{$a}} keys %v;
実行結果
省10
484: 9 01/21(火)02:09 ID:Kvjf8jsk(1) AAS
>>483 Perl5
$_ = 'abc def ghi';
print join(' ' x 4, split) . "\n";
491: 9 01/24(金)01:44 ID:p08ruAfw(1) AAS
>>485 Perl5
for $n (1..3) {
@cp = @s = qw(A B C);
while(--$n) { @cp = map{ $p = $_; map{ "$p$_" } @s } @cp }
print "@cp\n";
}
※見易くするためインデントは全角スペースに置換してあります
省5
492(1): 9 01/24(金)17:38 ID:cg1ZmS3G(1) AAS
>>464 Perl5
for (<DATA>) {
chomp;
print "$_ → ", (/^(A((AB)?|(?1))B)+$/g ? 'true' : 'false'), "\n";
}
__DATA__
A
省21
494: 9 01/25(土)02:52 ID:wVQIyzpy(1) AAS
>>492
/g の gは不要で / でおkだった…orz
501(1): 9 01/27(月)17:15 ID:cwZgX9Gy(1/3) AAS
Perl5
for (qw{T CG ATA CGGA ATGAT GTTGCA CCCCGGG ACTGCGAG ATCAGAATA TGCCATGACA}) {
%h = (); $h{$_}++ for split '';
print "$_ → ", (grep{1 < $h{$_}} keys %h), "\n";
}
※見易くするためインデントを全角スペースに置換してあります
実行結果
省11
502: 9 01/27(月)21:20 ID:cwZgX9Gy(2/3) AAS
>>501 Coilotに入力して処理内容を問うてみたらちゃんと返してきてワラタ
外部リンク:copilot.microsoft.com
503: 9 01/27(月)21:22 ID:cwZgX9Gy(3/3) AAS
CopilotのURLをコピペしても他の人に内容を見せることはできなかったワ…orz
537(3): 9 02/07(金)21:20 ID:dMuAEB5V(1/4) AAS
>510 Perl5
外部リンク:ideone.com
539: 9 02/07(金)23:00 ID:dMuAEB5V(2/4) AAS
>>537
しくった、これ一番短い範囲ではなく間違って一番長い範囲を検出してる。
サンプルデータではたまたま同じ解になるようで、間違いを見落としてしまった。
それから、一番長い(短いにすべきだったが)範囲の検索にわざわざ候補listをsortして[0]番目を
取得しているが無駄だし規模が大きくなると効率よくない
時間あったら直しますわ〜
540(2): 9 02/07(金)23:02 ID:dMuAEB5V(3/4) AAS
>>538
あーでも527の方式がいまんとこ一番早いんだな、検証thx
541: 9 02/07(金)23:04 ID:dMuAEB5V(4/4) AAS
>>540 527 じゃなくて 537ね。スマソ
544(2): 9 02/08(土)00:22 ID:vma3KbbM(1/2) AAS
>>510 Perl5、>>537 の修正版
外部リンク:ideone.com
修正点
・>>537では間違って一番長い範囲を検出していたが、一番短い範囲に修正した。(サンプルデータではそれらの解はたまたま一致)
・パターンが3文字であることに依存する定数「2(=3 -1 )」をハードコードしている箇所があったので、パターン文字数次第で処理するように修正
・検出した候補文字列リストのうち一番短い物の検索のためにわざわざ候補リスト全体をsortするのをやめて
reduceによって長さが一番短い文字列を検索するように修正
省5
545: 9 02/08(土)00:26 ID:vma3KbbM(2/2) AAS
>>544 List::Utils → List::Util ね。スマソ
547: 9 02/08(土)17:50 ID:HpUe4TZQ(1) AAS
>>510 Perl5、>>544 をもう一回だけ改良
外部リンク:ideone.com
改良点:
・検出された範囲の候補を一通りリストに蓄えて、あとでその中から最短のものを探す方式を止めて、
範囲を検索するループ内のifでその時点までの最短な範囲の判定と記録を行うようにした。
・CPANモジュールList::MoreUtilsのminmaxを使わない。
・コアモジュールList::Utilはminだけ使う。reduceは使わない。
省1
563: 9 02/11(火)14:53 ID:mMj2PIa8(1) AAS
>>561 Perl5
$h{$_} = $_ for 4, 5, 1, 7, 1, 2, 8, 9, 2, 7;
@s = sort keys %h;
print "$s[1]\n";
実行結果
~ $ perl 22_561_second.pl
2
省4
573: 9 02/11(火)23:36 ID:yxel6cu3(1) AAS
先に言えよって、感じw
581: 9 02/12(水)00:03 ID:yw0CaA/O(1/4) AAS
そういう条件は回答を見て思いついた後から言わず先に書くべきでは?
そうでなければ、与えられた短い文とテストデータから、
処理対象データの範囲や要求仕様を読み手が色々解釈しても仕方ないだろ。
後からいろいろ言って批判なんてでもってのほかだと思うが。
582: 9 02/12(水)00:05 ID:yw0CaA/O(2/4) AAS
出来たもの見て実はこういう条件がありましたってケチつけるのはクソクライアントと一緒だな
587: 9 02/12(水)00:28 ID:yw0CaA/O(3/4) AAS
「データが二個未満の場合にはnilを返す。」とか書いとくべき。
でもそういう細かい条件をちまちま指定した窮屈な課題は、つまんなくて回答を造る意欲が減るんだよな。
シンプルで純な課題に対してどういうエレガントでエッセンシャルな回答があるか考えるのが楽しいのであって、
細かいいろんな条件を守る周辺コードで固めるような作業はつまんないから趣味の世界ではやりたくないな
589: 9 02/12(水)00:33 ID:yw0CaA/O(4/4) AAS
ここはある意味、回答のコードでもって語るスレだからな
597: 9 02/13(木)17:35 ID:UAfabByi(1/3) AAS
>>594 Perl5、見易くするためインデントは全角スペースに置換してあります
for (<DATA>) {
($s, $a, $b) = split;
$c = $a + $b;
$c = $1 . ($1 + $2) . $2 if $c =~ /(\d)(\d)/;
$s =~ s/$a$b/$a$c$b/g;
print "$s\n";
省12
599(1): 9 02/13(木)20:24 ID:UAfabByi(2/3) AAS
数学屋さんかいなw
i,jの「3 4」とか「6 7」は桁の位置をしていしているのではなく数値列の中にある数字を指定するんジャマイカ
とオレは解釈したが
602: 9 02/13(木)20:52 ID:UAfabByi(3/3) AAS
なんでこの人はコーデイングするのがこんなに早いんだろう…
616(2): 9 02/15(土)10:36 ID:1WENuqRv(1/2) AAS
>>608 Perl5、肯定先読みと置換の小文字変換
s/([A-Z])(?=\1)/\1\l\1/g, print for <DATA>;
__DATA__
abcDDefGG
abcDDDefGGG
実行結果
C:\Home>perl 22_608_ins_l.pl
省2
617: 9 02/15(土)10:39 ID:1WENuqRv(2/2) AAS
AA省
633: 9 02/16(日)06:28 ID:GnMUCCm7(1/2) AAS
qa0m30Tb の回答はどれよ?
639: 9 02/16(日)15:45 ID:GnMUCCm7(2/2) AAS
回答のコードでもって語ってほしいなぁ
661: 9 02/28(金)03:12 ID:MEvV9q87(1) AAS
負の場合に表現可能なビット数を配慮しないとPython の int.bit_count()と同じ結果にならないんジャマイカじゃまいか
たぶんPythonの整数がbigintのせいだとおもう
絶対値とってpopcountとかやらないと意外とあれこれ書いてプチ長めのコードになりそうなおかん
677: 9 03/16(日)00:12 ID:8GU62dKf(1) AAS
>>670 Perl5
use bigint;
print $_ - reverse($_), "\n" for 12345, 4922235242952026704037113243122008064;
実行結果
$ perl 22_670_reverse_minus_biginit.pl
-41976
314233029528909399960910650696685770
682(1): 9 03/18(火)16:05 ID:GYPHuJM6(1/5) AAS
>>680 Perl5、ナイーブな処理方式だと時間がかかり過ぎで最後まで解けないおそれがあるが、なかなかほかに回答者が現れないし、
出現傾向を見るだけでも…と思って、16進数の桁にa-fの現れる値をskipするナイーブな処理方法で。
$m = sprintf '%x', 9 x 15; # 10進で15桁まで
print $m . ' '. hex($m)."\n";
$m =~ s/[a-f]/9/g;
print "1 .. 0x$m\n";
print "".localtime."\n";
省9
683(2): 9 03/18(火)16:07 ID:GYPHuJM6(2/5) AAS
>>682
実行結果 (改行数を減らすため適度につなげてます)
$ perl 22_680_hex_substr_1.pl
38d7ea4c67fff 999999999999999
1 .. 0x3897994967999
Tue Mar 18 09:15:31 2025
1, 0x1 2, 0x2 3, 0x3 4, 0x4 5, 0x5 6, 0x6 7, 0x7 8, 0x8 9, 0x9
省17
686(2): 9 03/18(火)21:41 ID:GYPHuJM6(3/5) AAS
>>683
>やはり想定通り気の利いた高速解放が要りますテヘペロ。
そのヒントになるかいな…?
・16進数を10進数に変換すると桁数は同じまたは高々1桁増えるのみ(だともう、証明略)
・桁数が同じ場合、16進数と10進数が同じということはあり得ない、自明
・一桁増える場合は先頭または末尾に一桁増える。残りが16進数と同じ部分文字列であるかが評価対象となる
687: 9 03/18(火)21:42 ID:GYPHuJM6(4/5) AAS
>>685
あそうなんだ。じゃオレ様が一番乗りということでヨロ
ノシ
688: 9 03/18(火)21:52 ID:GYPHuJM6(5/5) AAS
>>686
>・一桁増える場合は先頭または末尾に一桁増える。残りが16進数と同じ部分文字列であるかが評価対象となる
二桁増える場合があるのでこれは誤りでした
691(1): 9 03/19(水)16:33 ID:kDrq13vm(1) AAS
>>686
> ・桁数が同じ場合、16進数と10進数が同じということはあり得ない、自明
大間違い。16進数と10進数で桁数が同じ値のうち、一桁のものは、16進も10審も同じだった…orz
結局、高速解放はあるんだろうか?
あるいはコラッツ予想みたいに「無いかもしれない」類の、考えるだけ無駄な問題なのだろうか?
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.048s