プログラミングのお題スレ Part22 (880レス)
上下前次1-新
1(4): 2023/08/03(木)13:52 ID:/xW45k0z(1) AAS
プログラミングのお題スレです。
【出題と回答例】
1 名前:デフォルトの名無しさん
お題:お題本文
2 名前:デフォルトの名無しさん
>>1 使用言語
回答本文
結果がある場合はそれも
【ソースコードが長くなったら】 (オンラインでコードを実行できる)
外部リンク:ideone.com
省11
2: 2023/08/03(木)14:04 ID:Lr04Zjag(1) AAS
>>1
O2
3(9): 2023/08/06(日)12:21 ID:/9zIb/V0(1) AAS
お題
1行につき一つの文章が入力されます
アルファベット26文字がすべて含まれている文章をフィルタリングしてください
大文字小文字は区別しません
そのうちもっとも短い文章を出力してください
入力
The quick brown fox jumps over a lazy dog.
The jay, pig, fox, zebra and my wolves quack!
Pack my box with seven dozen liquor jugs.
The horse, pig, fox, zebra and my wolves quack!
省6
4(1): 2023/08/06(日)17:47 ID:RhhSFLLO(1/2) AAS
>>3
Kotlin
外部リンク:paiza.io
5(1): 2023/08/06(日)18:08 ID:RhhSFLLO(2/2) AAS
>>3
C
外部リンク:paiza.io
6(2): 2023/08/06(日)19:07 ID:Md+pNxjw(1) AAS
AA省
7: 2023/08/06(日)20:04 ID:pJXl8PQk(1) AAS
>>3
R
外部リンク:ideone.com
8(3): 2023/08/07(月)01:25 ID:dolrRGoi(1/2) AAS
>>6
それなんて言語?
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];
__DATA__
The quick brown fox jumps over a lazy dog.
The jay, pig, fox, zebra and my wolves quack!
省10
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 '';
実行結果は今回のテストデータだとたまたま同じ結果になる。
11(1): 2023/08/07(月)09:39 ID:3KYy8N/l(1) AAS
>>8
Rustでは?
12: 2023/08/07(月)19:28 ID:dolrRGoi(2/2) AAS
>>11
言われてみればRustに見えるな。
Rustは趣味で学習始めたばかりでよく分からなかった。
13(2): 2023/08/07(月)20:51 ID:ZWV0+Q1Z(1) AAS
>>3
Haskell
外部リンク:ideone.com
14(1): 2023/08/08(火)16:30 ID:mHXT/QMM(1) AAS
>>10 2行目はもっと簡潔に書ける
my %h = map{$_ => 1} map{lc} grep{/[a-z]/i} split '';
↓
my %h = map{lc $_ => 1} /([A-Za-z])/g;
結局、これでよい筈
for (<DATA>) {
my %h = map{lc $_ => 1} /([A-Za-z])/g;
push @a, $_ if 26 == keys %h;
}
@s = sort{length $a <=> length $b} @a;
省3
15(2): 2023/08/08(火)19:36 ID:ODiXw46s(1) AAS
AA省
16(2): 2023/08/09(水)12:27 ID:ZMLVZrF/(1) AAS
無駄に比較回数が増えるsortを使っている>>13と>>14は不正解
単純にminが正解
17(38): 2023/08/10(木)13:37 ID:YYBOmFjO(1) AAS
>>3
Perl
外部リンク:paiza.io
18: 蟻人間 ◆T6xkBnTXz7B0 2023/08/10(木)19:00 ID:kqXaMgBC(1) AAS
お題: ちょっとした画像処理。
赤い丸がいくつか描画された不透明な画像ファイル「input.png」を読み込んで、赤い丸を緑の丸に描き変えたものを画像ファイル「output.png」に保存するプログラム。
ここに「赤い」とは、HSV色空間において、色相が0度~60度か300度~360度の範囲にあり、彩度が30%以上で、明度が50%以上の色であると定義する。
「丸」とは、円形度が0.7~1.3の範囲の単一色の図形であると定義する。
「緑」とはRGBで#008000の色であると定義する。
19: 2023/08/10(木)19:03 ID:0ymjHRaX(1) AAS
絶対自分でやる気ないお題出すな
20: 2023/08/10(木)19:07 ID:yqkCXlxz(1) AAS
>>6
>>15
同じ言語とは思えないほど違うな
21: 2023/08/10(木)21:44 ID:4K08AJqU(1) AAS
>>16
このスレで正解とか不正解とか言ってる時点で不正解
22: 2023/08/11(金)00:03 ID:6txSsch+(1) AAS
>>16
head , sort で無駄ソートは起こらない
minimumByと最大2倍程度の差しか発生しない
外部リンク[html]:hackage.haskell.org
23(1): 2023/08/11(金)00:37 ID:NzWkf1P2(1/2) AAS
今回のようなsortを一切必要としない問題で何度もsortを用いるプログラマーは劣等生
24: 2023/08/11(金)00:43 ID:0bfZQT9B(1) AAS
>>23
Haskellのhead . sortはソートしないってのに
sortって書いてあるからソートすると思ってるんやろ?
25(1): 2023/08/11(金)01:09 ID:NzWkf1P2(2/2) AAS
sortを使うことを問題にしているのであって
sortしていないなら問題ないだろう
個別の話などしていない
そこまで言うならとHaskellのプログラム
>>13を見にいってみたが
入力文字列を各文字でソートして重複を取り除いてabcdefghijklmnopqrstuvwxyzと比較しているのか
hasAllAlph = ( == [ 'a' .. 'z' ] ) . tail . nub . sort . map toLowOrSp . ( ' ' : )
26: 9 2023/08/11(金)02:38 ID:4P/NDj/+(1/2) AAS
スレが伸びているので何かと思えば、オレほか一部の回答者がsortを使ったのが
そんなに気に入らなかったか、気に障ったか、
ざまぁみろw としか言いようがないが
後出しでケチつけてるのは出題者じゃないようだが
そしたらsortも、そしてminもあえて使わないバージョン、
書き方はいろいろあると思うけど:
>>3 Perl5
use List::Util 'first';
for (<DATA>) {
my %h = map{lc $_ => 1} /([A-Za-z])/g;
省15
27: 2023/08/11(金)02:52 ID:45O+1i6X(1) AAS
そう、haskellの評価戦略はcall by need (の一種) で必要に応じて展開される、head . sort では 「sortした後の最初の項」を求めているのでそれを出すための必要最小限の事しかしない
件のData.Listにおけるsortでは
①与えられた列を1回目のバスで広義単調増大列いくつかに分割する、コストはO(n)
②できた列を2つずつマージして広義単調増大列の個数を半分にする、全部やればコストはO(n)
③②を列の数が1になるまで繰り返す、コストはO(log(n))
で全部の処理を要求してもO(nlog(n))でいわゆるクイックソートと同じコスト
しかしheadがこのsortの処理を呼ぶ時にはmergeする2列の中の最小値だけ残されてあとは捨てられる、なので最初の①の結果が最悪のケース、長さ1の列がn個できた場合でもmerge処理は最大n-1回だけ行われて終了する、すなわち事実上minimumと一緒
じゃあminimumBy ( on length )でいいじゃんという話なのだけど「遅延評価を利用すればほとんどコストレスでminimumByと同様の事ができる」というのがHaskellの面白いところ
なのでそっちを採用
これは遅延評価の文化に慣れてないと中々わからない
28: 2023/08/11(金)07:58 ID:vOTsx3Ge(1) AAS
>>25
そちらのsortはO(nlog(n))なのでダメですね
29: 9 2023/08/11(金)08:37 ID:4P/NDj/+(2/2) AAS
O(nlog(n))がダメかどうかは、データの規模および実行時間による
30: 2023/08/11(金)09:12 ID:BG0MJIEb(1) AAS
あかん、通じてないね
時間の無駄やった
31: 2023/08/11(金)09:22 ID:HI+ykM5H(1) AAS
Perlな人の短く書ければよいだけで計算量とか知らないだろうから仕方ないと思うよ
しかしHaskellな人がsortを何箇所も使っているのは驚いた
head . sort以外のsortはあかんね
32: 2023/08/11(金)09:27 ID:vdwKG93K(1) AAS
お前ら賢いんだから自分も疑え
33: 2023/08/11(金)14:03 ID:v1edpQDw(1) AAS
doubt
上下前次1-新書関写板覧索設栞歴
あと 847 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.028s