プログラミングのお題スレです。
【出題と回答例】
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/
宿題は宿題スレがあるのでそちらへ。
※前スレ
プログラミングのお題スレ Part14
http://mevius.5ch.net/test/read.cgi/tech/1558168409/
プログラミングのお題スレ Part15
■ このスレッドは過去ログ倉庫に格納されています
2019/07/28(日) 19:39:57.54ID:832c/ukY
335デフォルトの名無しさん
2019/09/05(木) 11:32:41.41ID:JTGocygG >>334
そいつらはいつものアホやからスルーしなはれ
そいつらはいつものアホやからスルーしなはれ
336デフォルトの名無しさん
2019/09/05(木) 13:09:10.29ID:n5jm1pTY337314
2019/09/05(木) 21:33:33.48ID:Wm4c6P24 >>313 Java
https://paiza.io/projects/iamhQLuhZskbvv3lCIrj5Q
なんか思いつけたので書いた
いつもはideoneやけど、画像出力もしたくなったのでpaiza
入力データは https://mevius.5ch.net/test/read.cgi/tech/1549160513/405
https://paiza.io/projects/iamhQLuhZskbvv3lCIrj5Q
なんか思いつけたので書いた
いつもはideoneやけど、画像出力もしたくなったのでpaiza
入力データは https://mevius.5ch.net/test/read.cgi/tech/1549160513/405
338デフォルトの名無しさん
2019/09/06(金) 18:11:06.63ID:O7F8x+Ks >>337
お前いつもスマートだよな
お前いつもスマートだよな
339デフォルトの名無しさん
2019/09/06(金) 21:58:05.28ID:h6IBFFVJ 材料グループAと材料グループBがあるとする。
それぞれには、ランダムな固有値を持っており、
固有値の差が、ある数値以下の組み合わせのみ使用可能とする。
ただし、材料グループA、B内の材料は一度使うとなくなるため一度しか組み合わせれない。
それぞれのグループの材料が100ずつあったとして適切に組み合わせれば
全てがマッチングできる。ただ人組でもペアを間違えるとマッチングできない。
こういったことを実現するためには、どういった考え方でプログラミングすればいいでしょうか。
それぞれには、ランダムな固有値を持っており、
固有値の差が、ある数値以下の組み合わせのみ使用可能とする。
ただし、材料グループA、B内の材料は一度使うとなくなるため一度しか組み合わせれない。
それぞれのグループの材料が100ずつあったとして適切に組み合わせれば
全てがマッチングできる。ただ人組でもペアを間違えるとマッチングできない。
こういったことを実現するためには、どういった考え方でプログラミングすればいいでしょうか。
340デフォルトの名無しさん
2019/09/06(金) 22:02:46.96ID:adnLBrFU 動的計画法でいいのかな?
オレできねーけど。
オレできねーけど。
341デフォルトの名無しさん
2019/09/06(金) 22:06:24.07ID:IlHiLkpw >>339
各グループの材料を固有値の昇順にソートして小さい方からペア作ってくのではダメなのか?
各グループの材料を固有値の昇順にソートして小さい方からペア作ってくのではダメなのか?
342デフォルトの名無しさん
2019/09/06(金) 22:10:20.13ID:adnLBrFU A:大<->小
B:小<->大
のペアがましといえばまし。
真ん中がマッチしない可能性はある。
B:小<->大
のペアがましといえばまし。
真ん中がマッチしない可能性はある。
343339
2019/09/06(金) 22:10:34.94ID:h6IBFFVJ なるほど、とても簡単な問いだったのですね。
なんか難しい事ばかり考えていました。
なんか難しい事ばかり考えていました。
344デフォルトの名無しさん
2019/09/06(金) 22:11:12.30ID:5B1pyUbX diff のアルゴリズムがもうちょっと複雑なのにも対応できるやつじゃなかったか?
345デフォルトの名無しさん
2019/09/06(金) 22:14:00.34ID:adnLBrFU あー、差が以下か。
A:小<->大
B:小<->大
でいいわ。。。
俺もなんか難しいこと考えてた。そーりー。
A:小<->大
B:小<->大
でいいわ。。。
俺もなんか難しいこと考えてた。そーりー。
346339
2019/09/06(金) 22:14:53.61ID:h6IBFFVJ 必ずマッチングできない100ずつあったとした場合でも昇順ソートして同じ順位にいるもので、比較してマッチングできれば実施、できなければ上位を参照してマッチングできたら抜けて、できなければさらに上位とマッチングみたいなことをすれば良いのか。
347339
2019/09/06(金) 22:23:16.91ID:h6IBFFVJ あっ違う違う。
昇順にソートして組み合わせるとマッチングできないもの出てきます。
というのも差が最小の組み合わせではなくて、
差がある一定以下である事なので、昇順にソートして隣り合うものではダメです。
少し考えたのですが、全ての組み合わせを実施して、その計算結果、今回は差がある数値以下である数が多い組み合わせを採用するみたいなことになるんですかね
昇順にソートして組み合わせるとマッチングできないもの出てきます。
というのも差が最小の組み合わせではなくて、
差がある一定以下である事なので、昇順にソートして隣り合うものではダメです。
少し考えたのですが、全ての組み合わせを実施して、その計算結果、今回は差がある数値以下である数が多い組み合わせを採用するみたいなことになるんですかね
348デフォルトの名無しさん
2019/09/06(金) 22:44:43.03ID:IlHiLkpw >>347
適切な解が存在するケースで、小さい順の付き合わせでダメになる具体例を示せる?
適切な解が存在するケースで、小さい順の付き合わせでダメになる具体例を示せる?
349339
2019/09/06(金) 23:00:40.30ID:h6IBFFVJ ないですね。
ということは、やはり最小のマッチング以外はありえないということになるのですね。
材料在庫が変動していたとしても、その瞬間の最小の差のペアを作ることが
一番効率の良いマッチング方法になるということか、、、。
ということは、やはり最小のマッチング以外はありえないということになるのですね。
材料在庫が変動していたとしても、その瞬間の最小の差のペアを作ることが
一番効率の良いマッチング方法になるということか、、、。
350デフォルトの名無しさん
2019/09/06(金) 23:08:33.74ID:adnLBrFU351デフォルトの名無しさん
2019/09/06(金) 23:19:00.83ID:Sfa1dP8m 全てマッチングできるとは限らず最も多くマッチングできる組み合わせ
を求める ならちょっと工夫必要そう
を求める ならちょっと工夫必要そう
352デフォルトの名無しさん
2019/09/06(金) 23:24:40.52ID:h6IBFFVJ 皆さんありがとう。
最も多くマッチングさせるときは、閾値に一番近い選択を行うことがシンプルということかな?
>>350
コードありがとうございます。
プログラムを生業にしている者ではないのでC++の開発環境から構築になりますが、試してみます。
最も多くマッチングさせるときは、閾値に一番近い選択を行うことがシンプルということかな?
>>350
コードありがとうございます。
プログラムを生業にしている者ではないのでC++の開発環境から構築になりますが、試してみます。
353デフォルトの名無しさん
2019/09/06(金) 23:31:32.53ID:adnLBrFU fix it.
354デフォルトの名無しさん
2019/09/06(金) 23:32:51.82ID:adnLBrFU 大したコードではないが、そこまで威力があるとは思わなかった。
動機なんてそんなもんか。
動機なんてそんなもんか。
355蟻人間 ◆T6xkBnTXz7B0
2019/09/06(金) 23:43:04.03ID:sc/CXZHY お題: ある会社の営業曜日(複数可)と営業時間が与えられる。今月1ヶ月の営業時間の合計を求め、今月のカレンダーの下に表示せよ。ただし、その会社は祝日・祭日を特別扱いしないものとする。
356399
2019/09/07(土) 00:15:01.96ID:meGL1HdM357デフォルトの名無しさん
2019/09/07(土) 09:58:38.85ID:kl0P3WfA358デフォルトの名無しさん
2019/09/07(土) 10:01:09.66ID:15iR+LCW そもそもeigenvalueじゃないのに固有値と言うのに違和感を覚える
359デフォルトの名無しさん
2019/09/07(土) 10:40:38.85ID:K3PTI0jA わからんな
結晶や薄膜やらだと本当に固有値がある
ヤツは「材料」って言っていて、その先に何を想定してるかこちらには伏せられたまま
もしかすると高分子の製薬かもしれない
使うと無くなるんだろ?
結晶や薄膜やらだと本当に固有値がある
ヤツは「材料」って言っていて、その先に何を想定してるかこちらには伏せられたまま
もしかすると高分子の製薬かもしれない
使うと無くなるんだろ?
360デフォルトの名無しさん
2019/09/07(土) 13:46:49.28ID:VQVarZXt361デフォルトの名無しさん
2019/09/07(土) 14:08:25.27ID:VQVarZXt362デフォルトの名無しさん
2019/09/07(土) 14:45:59.42ID:VQVarZXt363399
2019/09/07(土) 20:55:02.76ID:aT864lGO364デフォルトの名無しさん
2019/09/08(日) 00:49:49.01ID:YBN7WO0H 排便を
壁に塗りつけ
したり顔
壁に塗りつけ
したり顔
365デフォルトの名無しさん
2019/09/08(日) 02:51:14.16ID:bEtb/TpC366デフォルトの名無しさん
2019/09/08(日) 08:38:41.51ID:GRxK0QRw >>313
正方形だと3倍速い
正方形だと3倍速い
367デフォルトの名無しさん
2019/09/08(日) 09:39:44.56ID:46Wp6heU 3倍早いだけだったらオーダーが変わらねーじゃん
円が一万個一億個一兆個だったらどうなんの
円が一万個一億個一兆個だったらどうなんの
368デフォルトの名無しさん
2019/09/08(日) 09:58:44.95ID:GRxK0QRw 3日の仕事が1日で済むとも言う。
369デフォルトの名無しさん
2019/09/08(日) 13:16:12.58ID:rbzdrKrZ370蟻人間 ◆T6xkBnTXz7B0
2019/09/08(日) 23:16:36.64ID:YT+ZQkc/ 何か初心者にも解ける面白い問題ないかな?
371蟻人間 ◆T6xkBnTXz7B0
2019/09/08(日) 23:23:17.86ID:YT+ZQkc/ お題: 質問文とn個の項目からなるメニューを実装せよ。
質問文とn個の文字列が入力として与えられる。質問文とn個の項目をかっこよく表示し、ユーザーが一つ項目を選ぶまで待つ。選んだら、選んだ項目を出力する。
質問文とn個の文字列が入力として与えられる。質問文とn個の項目をかっこよく表示し、ユーザーが一つ項目を選ぶまで待つ。選んだら、選んだ項目を出力する。
372蟻人間 ◆T6xkBnTXz7B0
2019/09/08(日) 23:47:28.87ID:YT+ZQkc/ お題: マイ ドキュメントのフォルダ階層構造を表示せよ。
373デフォルトの名無しさん
2019/09/08(日) 23:48:15.93ID:gIfFAHmp お題
与えられた数列の、隣り合う2要素の差のリストを作る関数等を作ってください。
入力数列例
3 1 4 1 5 9 2 6 5
出力数列例
-2 3 -3 4 4 -7 4 -1
余力があれば、ファイルなどから非常に長い数列を与えられても対処できる実装を試みてください
(http://gushwell.ldblog.jp/archives/52379839.html を一部改変)
与えられた数列の、隣り合う2要素の差のリストを作る関数等を作ってください。
入力数列例
3 1 4 1 5 9 2 6 5
出力数列例
-2 3 -3 4 4 -7 4 -1
余力があれば、ファイルなどから非常に長い数列を与えられても対処できる実装を試みてください
(http://gushwell.ldblog.jp/archives/52379839.html を一部改変)
374デフォルトの名無しさん
2019/09/08(日) 23:48:22.91ID:7lW0qzzX お題:北のミサイルをなんとかせよ
375デフォルトの名無しさん
2019/09/08(日) 23:51:10.96ID:ZRQn+E7p どっかの国ハックして打ち込むしか
376デフォルトの名無しさん
2019/09/09(月) 00:57:49.46ID:G8Ger3PB >>373 Perl5
sub f {
map{$_[$_ + 1] - $_[$_]} 0..$#_-1;
}
@a = qw{3 1 4 1 5 9 2 6 5};
@b = f @a;
print "@b\n";
実行結果
~ $ perl 15_373.pl
-2 3 -3 4 4 -7 4 -1
sub f {
map{$_[$_ + 1] - $_[$_]} 0..$#_-1;
}
@a = qw{3 1 4 1 5 9 2 6 5};
@b = f @a;
print "@b\n";
実行結果
~ $ perl 15_373.pl
-2 3 -3 4 4 -7 4 -1
377デフォルトの名無しさん
2019/09/09(月) 07:20:37.09ID:F7fW2XyB >>373 Pharo/Squeak Smalltalk
| fn |
fn := [:xs | xs allButFirst - xs allButLast].
fn value: #(3 1 4 1 5 9 2 6 5). "=> #(-2 3 -3 4 4 -7 4 -1) "
| fn |
fn := [:xs | xs allButFirst - xs allButLast].
fn value: #(3 1 4 1 5 9 2 6 5). "=> #(-2 3 -3 4 4 -7 4 -1) "
378デフォルトの名無しさん
2019/09/09(月) 13:13:33.41ID:4K8wNjEy >>373 Ruby
p [3, 1, 4, 1, 5, 9, 2, 6, 5].each_cons(2).map{|e| -e.reduce(:-)}
# => [-2, 3, -3, 4, 4, -7, 4, -1]
p [3, 1, 4, 1, 5, 9, 2, 6, 5].each_cons(2).map{|e| -e.reduce(:-)}
# => [-2, 3, -3, 4, 4, -7, 4, -1]
379デフォルトの名無しさん
2019/09/09(月) 15:22:46.46ID:pyLk+Xbb >>373 Pharo/Squeak Smalltalk
#(3 1 4 1 5 9 2 6 5) overlappingPairsCollect: [:x :y | y - x]
"=> #(-2 3 -3 4 4 -7 4 -1) "
#(3 1 4 1 5 9 2 6 5) overlappingPairsCollect: [:x :y | y - x]
"=> #(-2 3 -3 4 4 -7 4 -1) "
380デフォルトの名無しさん
2019/09/09(月) 15:35:48.47ID:pmQvKTaB381デフォルトの名無しさん
2019/09/09(月) 15:55:42.79ID:8EKyQA8Q >>373
perl5
"3 1 4 1 5 9 2 6 5" =~ m/(\d) (?= \s? (\d) ) (?{push @diff, $2 -$1}) /xg;
print "@diff";
-2 3 -3 4 4 -7 4 -1
perl5
"3 1 4 1 5 9 2 6 5" =~ m/(\d) (?= \s? (\d) ) (?{push @diff, $2 -$1}) /xg;
print "@diff";
-2 3 -3 4 4 -7 4 -1
382デフォルトの名無しさん
2019/09/09(月) 17:47:36.36ID:Uwb0lHsl383デフォルトの名無しさん
2019/09/09(月) 18:55:29.45ID:nBEHXDpg >>373
ファイルからの読み込み派が居ない件。。。
Haskell
main = readFile "count.txt" >>= return.read >>= \lst -> print $ zipWith (-) (tail lst) lst
― ファイルから読まない場合は
― main = print $ zipWith (-) (tail lst) lst where lst = [3,1,4,1,5,9,2,6,5]
test.txt
[3,1,4,1,5,9,2,6,5]
out:
[-2,3,-3,4,4,-7,4,-1]
ファイルからの読み込み派が居ない件。。。
Haskell
main = readFile "count.txt" >>= return.read >>= \lst -> print $ zipWith (-) (tail lst) lst
― ファイルから読まない場合は
― main = print $ zipWith (-) (tail lst) lst where lst = [3,1,4,1,5,9,2,6,5]
test.txt
[3,1,4,1,5,9,2,6,5]
out:
[-2,3,-3,4,4,-7,4,-1]
384デフォルトの名無しさん
2019/09/09(月) 21:23:29.01ID:pmSRY1k7 >>373 octave
https://ideone.com/SV1flm
>>373 ruby
https://ideone.com/KZ9YO3
>>373 ocaml
https://ideone.com/aiOLiG
https://ideone.com/SV1flm
>>373 ruby
https://ideone.com/KZ9YO3
>>373 ocaml
https://ideone.com/aiOLiG
385デフォルトの名無しさん
2019/09/10(火) 00:22:25.45ID:2zzGvcE4 >>219 Perl5
$s = 'AKDAK';
@a = ('^', split'', $s);
$o{$_} //= ++$i for @a;
%e = map{$a[$_] => $a[$_+1]} 0..$#a-1;
@p = sort{$o{$a} <=> $o{$b}} keys %o;
$d{$p[-1]} = $p[-1].'$';
push @p, '$';
$e{'$'} = '';
print "'$s'\n→\n";
for (@p) {
$v = $e{$_};
$r = $d{$v} // $v;
print "$_: $r.\n";
}
実行結果
~ $ perl 15_219.pl
'AKDAK'
→
^: A.
A: K.
K: D$.
D: A.
$: .
$s = 'AKDAK';
@a = ('^', split'', $s);
$o{$_} //= ++$i for @a;
%e = map{$a[$_] => $a[$_+1]} 0..$#a-1;
@p = sort{$o{$a} <=> $o{$b}} keys %o;
$d{$p[-1]} = $p[-1].'$';
push @p, '$';
$e{'$'} = '';
print "'$s'\n→\n";
for (@p) {
$v = $e{$_};
$r = $d{$v} // $v;
print "$_: $r.\n";
}
実行結果
~ $ perl 15_219.pl
'AKDAK'
→
^: A.
A: K.
K: D$.
D: A.
$: .
386蟻人間 ◆T6xkBnTXz7B0
2019/09/10(火) 01:16:31.32ID:/hHoc5h9 状態遷移図ってどんなときに役立つかな?
387デフォルトの名無しさん
2019/09/10(火) 01:20:32.52ID:2zzGvcE4 ほらまぁ
状態遷移を表形式で定型的に定義した方が
言葉の羅列やグラフもどきポンチ絵などで表現するより明確な場面
さまざまなとき
状態遷移を表形式で定型的に定義した方が
言葉の羅列やグラフもどきポンチ絵などで表現するより明確な場面
さまざまなとき
388デフォルトの名無しさん
2019/09/10(火) 01:22:32.02ID:2zzGvcE4 あいや、表じゃなくて図か。
そしたら、なんとなく依存関係などをややこしいグラフで表現して
ひもつけたとか賜って解釈したような気にさせるとき
自分で考えなよ
そしたら、なんとなく依存関係などをややこしいグラフで表現して
ひもつけたとか賜って解釈したような気にさせるとき
自分で考えなよ
389デフォルトの名無しさん
2019/09/10(火) 02:40:29.88ID:Ik1iUNRF >>373 javascript
[3,1,4,1,5,9,2,6,5]
.reduce((acc, n, i, arr) => [...acc, arr[i + 1] - n], [])
.slice(0, -1)
[3,1,4,1,5,9,2,6,5]
.reduce((acc, n, i, arr) => [...acc, arr[i + 1] - n], [])
.slice(0, -1)
390デフォルトの名無しさん
2019/09/10(火) 08:11:29.51ID:lIijspdS391デフォルトの名無しさん
2019/09/10(火) 17:53:27.20ID:cZVhsOAf Smalltalkはやりたいことだけ書けばいいのがいい
392デフォルトの名無しさん
2019/09/10(火) 18:46:19.95ID:CNsNp03m 分かったよじゃあoverlappingPairsCollect実装するよ…
const overlappingPairsCollect = (arr, cb) => {
let head = arr.shift();
const overlappingPairs = [];
for (const value of arr) {
overlappingPairs.push([head, value]);
head = value;
}
return overlappingPairs.map(([a, b]) => cb(a, b));
}
overlappingPairsCollect([3,1,4,1,5,9,2,6,5], (a, b) => b - a);
//=> [-2,3,-3,4,4,-7,4,-1]
const overlappingPairsCollect = (arr, cb) => {
let head = arr.shift();
const overlappingPairs = [];
for (const value of arr) {
overlappingPairs.push([head, value]);
head = value;
}
return overlappingPairs.map(([a, b]) => cb(a, b));
}
overlappingPairsCollect([3,1,4,1,5,9,2,6,5], (a, b) => b - a);
//=> [-2,3,-3,4,4,-7,4,-1]
393デフォルトの名無しさん
2019/09/10(火) 19:17:03.68ID:CNsNp03m ああ… forの前にif (!head) return overlappingPairs; のearly return入れ忘れた…
394デフォルトの名無しさん
2019/09/10(火) 19:18:47.68ID:ER41jhKS 何言語?
395デフォルトの名無しさん
2019/09/10(火) 19:51:01.24ID:4IK1yyiH 女子小学生のメスガキビッチ言語
396デフォルトの名無しさん
2019/09/10(火) 20:05:04.03ID:9QXTHM58 なるほどjavascriptね!
397デフォルトの名無しさん
2019/09/10(火) 20:19:20.42ID:ER41jhKS398デフォルトの名無しさん
2019/09/10(火) 20:31:26.62ID:ER41jhKS399デフォルトの名無しさん
2019/09/10(火) 21:25:03.39ID:OfzP/6E7400デフォルトの名無しさん
2019/09/10(火) 23:08:14.13ID:aMyCuNre お題
スネークケースをアッパーキャメルケースに変換せよ
アンダースコアを単語の区切りとみなし、単語の先頭は大文字に、先頭以外は小文字に変換すること
また、単語を連結したときに数字が連続する場合はアンダースコアを残すこと
(例)
snake_case => SnakeCase
ODAI00_99_TEST => Odai00_99Test
x_0_x => X0X
UpperCamelCase => Uppercamelcase
スネークケースをアッパーキャメルケースに変換せよ
アンダースコアを単語の区切りとみなし、単語の先頭は大文字に、先頭以外は小文字に変換すること
また、単語を連結したときに数字が連続する場合はアンダースコアを残すこと
(例)
snake_case => SnakeCase
ODAI00_99_TEST => Odai00_99Test
x_0_x => X0X
UpperCamelCase => Uppercamelcase
401デフォルトの名無しさん
2019/09/10(火) 23:20:02.02ID:Ik1iUNRF >>399
allButFirstとallButLastは簡単だけどjsは生き残ってるスクリプト言語にしては珍しく演算子使ったリスト同士の演算が用意されてないのでfnは>>377みたいにキレイに書けない。
const allButFirst = arr => arr.slice(1);
const allButLast = arr => arr.slice(0, -1);
const fn = arr => allButLast(arr).reduce((acc, v, i) => (acc[i] -= v, acc), allButFirst(arr));
fn([3,1,4,1,5,9,2,6,5]);
//=> [-2,3,-3,4,4,-7,4,-1]
allButFirstとallButLastは簡単だけどjsは生き残ってるスクリプト言語にしては珍しく演算子使ったリスト同士の演算が用意されてないのでfnは>>377みたいにキレイに書けない。
const allButFirst = arr => arr.slice(1);
const allButLast = arr => arr.slice(0, -1);
const fn = arr => allButLast(arr).reduce((acc, v, i) => (acc[i] -= v, acc), allButFirst(arr));
fn([3,1,4,1,5,9,2,6,5]);
//=> [-2,3,-3,4,4,-7,4,-1]
402デフォルトの名無しさん
2019/09/11(水) 00:10:49.73ID:JxGfX2fh >>400 Perl5
use feature say;
for (<DATA>) {
say map{ucfirst lc} /((?:\d_\d|[^_\s])+)/g;
}
__DATA__
snake_case
ODAI00_99_TEST
x_0_x
UpperCamelCase
実行結果
~ $ perl 15_400.pl
SnakeCase
Odai00_99Test
X0X
Uppercamelcase
use feature say;
for (<DATA>) {
say map{ucfirst lc} /((?:\d_\d|[^_\s])+)/g;
}
__DATA__
snake_case
ODAI00_99_TEST
x_0_x
UpperCamelCase
実行結果
~ $ perl 15_400.pl
SnakeCase
Odai00_99Test
X0X
Uppercamelcase
403デフォルトの名無しさん
2019/09/11(水) 00:26:05.86ID:JxGfX2fh404デフォルトの名無しさん
2019/09/11(水) 00:31:52.77ID:TkJgDVYV405デフォルトの名無しさん
2019/09/11(水) 00:44:08.30ID:hWizELa3 >>397
C++むずかしすぎワロタwwwww
C++むずかしすぎワロタwwwww
406デフォルトの名無しさん
2019/09/11(水) 00:47:45.94ID:TkJgDVYV C++とJSとの違いは大雑把に言って、使う型を先に決めるか後で決めるか。という程度だと思う。
オレ、自分の幸福度を上げるために、80行位で問題とくようにしている。
というか、手癖でそれくらいになる。
オレ、自分の幸福度を上げるために、80行位で問題とくようにしている。
というか、手癖でそれくらいになる。
407デフォルトの名無しさん
2019/09/11(水) 02:04:01.50ID:hWizELa3 >>400 JavaScript
const fn = s => s.split`_`
.map(([first, ...rest]) => [first.toUpperCase(), rest.join``.toLowerCase()].join``)
.reduce((acc, word) => acc + (/[0-9]{2}/.test(acc[acc.length - 1] + word[0]) ? '_' : '') + word);
fn('snake_case');
//=> "SnakeCase"
fn('ODAI00_99_TEST');
//=> "Odai00_99Test"
fn('x_0_x');
//=> "X0X"
fn('UpperCamelCase');
//=> "Uppercamelcase"
const fn = s => s.split`_`
.map(([first, ...rest]) => [first.toUpperCase(), rest.join``.toLowerCase()].join``)
.reduce((acc, word) => acc + (/[0-9]{2}/.test(acc[acc.length - 1] + word[0]) ? '_' : '') + word);
fn('snake_case');
//=> "SnakeCase"
fn('ODAI00_99_TEST');
//=> "Odai00_99Test"
fn('x_0_x');
//=> "X0X"
fn('UpperCamelCase');
//=> "Uppercamelcase"
408デフォルトの名無しさん
2019/09/11(水) 02:47:21.46ID:0/zUYWhl >>400 Squeak Smalltalk
| fn |
fn := [:str |
| words |
words := str asLowercase subStrings: '_'.
words first capitalized , (words overlappingPairsCollect: [:x :y |
((x last isDigit and: [y first isDigit]) ifTrue: '_' ifFalse: '') , y capitalized
]) join
].
fn value: 'snake_case'. "=> 'SnakeCase' "
fn value: 'ODAI00_99_TEST'. "=> 'Odai00_99Test' "
fn value: 'x_0_x'. "=> 'X0X' "
fn value: 'UpperCamelCase'. "=> 'Uppercamelcase' "
fn value: 'Odai00_9_9Test'. "=> 'Odai00_9_9test' "
| fn |
fn := [:str |
| words |
words := str asLowercase subStrings: '_'.
words first capitalized , (words overlappingPairsCollect: [:x :y |
((x last isDigit and: [y first isDigit]) ifTrue: '_' ifFalse: '') , y capitalized
]) join
].
fn value: 'snake_case'. "=> 'SnakeCase' "
fn value: 'ODAI00_99_TEST'. "=> 'Odai00_99Test' "
fn value: 'x_0_x'. "=> 'X0X' "
fn value: 'UpperCamelCase'. "=> 'Uppercamelcase' "
fn value: 'Odai00_9_9Test'. "=> 'Odai00_9_9test' "
409デフォルトの名無しさん
2019/09/11(水) 06:02:16.09ID:CEu0fvWD >400 Ruby
f = -> s {s.split(/(?<=\D)_|_(?=\D)/).map(&:capitalize).join}
%w[
snake_case ODAI00_99_TEST x_0_x UpperCamelCase
].each{|s| puts '%s => %s' % [s, f[s]]}
# =>
snake_case => SnakeCase
ODAI00_99_TEST => Odai00_99Test
x_0_x => X0X
UpperCamelCase => Uppercamelcase
f = -> s {s.split(/(?<=\D)_|_(?=\D)/).map(&:capitalize).join}
%w[
snake_case ODAI00_99_TEST x_0_x UpperCamelCase
].each{|s| puts '%s => %s' % [s, f[s]]}
# =>
snake_case => SnakeCase
ODAI00_99_TEST => Odai00_99Test
x_0_x => X0X
UpperCamelCase => Uppercamelcase
410デフォルトの名無しさん
2019/09/11(水) 06:06:45.97ID:CEu0fvWD411デフォルトの名無しさん
2019/09/11(水) 12:54:52.45ID:Alp4BtBi412デフォルトの名無しさん
2019/09/11(水) 21:23:01.78ID:RlhjBlE6 お題:リストの奇数位置にある要素のみを含むリストを作れ
ただし、先頭要素を1番目と数える
[1, 2, 3, 4, 5]
↓
[1, 3, 5]
rust
https://ideone.com/yXYsFB
octave
https://ideone.com/Go8xXL
ただし、先頭要素を1番目と数える
[1, 2, 3, 4, 5]
↓
[1, 3, 5]
rust
https://ideone.com/yXYsFB
octave
https://ideone.com/Go8xXL
413デフォルトの名無しさん
2019/09/11(水) 21:27:05.78ID:C94vqLvq >>400
UpperCamelCaseはそのまま返すべきだろう。
(と言う事で、1文字目が大文字かつ全文に’_’が無い場合は、(恐らくUpperCamelCaseだろうと期待して)そのまま返すようにした)
Haskell
import Data.Char
main = mapM_ (print.f) ["snake_case","ODAI00_99_TEST","x_0_x","UpperCamelCase","notupperCamelCase"]
f [] = []
f lst@(x:_) | and [elem x ['A'..'Z'], (not.elem '_') lst] = lst
f (x:xs) = toUpper x:map toLower a ++ f (map toLower $ f' a b)
where
(a,b) = span (/= '_') xs
f' _ [] = []
f' [] (y:ys) = ys
f' xs lst@('_':y:ys) |and [(isDigit.last) xs, isDigit y] = lst
f' _ (_:ys) = ys
out:
"SnakeCase"
"Odai00_99Test"
"X0X"
"UpperCamelCase"
"Notuppercamelcase"
UpperCamelCaseはそのまま返すべきだろう。
(と言う事で、1文字目が大文字かつ全文に’_’が無い場合は、(恐らくUpperCamelCaseだろうと期待して)そのまま返すようにした)
Haskell
import Data.Char
main = mapM_ (print.f) ["snake_case","ODAI00_99_TEST","x_0_x","UpperCamelCase","notupperCamelCase"]
f [] = []
f lst@(x:_) | and [elem x ['A'..'Z'], (not.elem '_') lst] = lst
f (x:xs) = toUpper x:map toLower a ++ f (map toLower $ f' a b)
where
(a,b) = span (/= '_') xs
f' _ [] = []
f' [] (y:ys) = ys
f' xs lst@('_':y:ys) |and [(isDigit.last) xs, isDigit y] = lst
f' _ (_:ys) = ys
out:
"SnakeCase"
"Odai00_99Test"
"X0X"
"UpperCamelCase"
"Notuppercamelcase"
414デフォルトの名無しさん
2019/09/11(水) 23:29:56.75ID:sKkTHzOH >>400 Perl5、>>402-403 の修正、>>413 のように UpperCamelCase など_を含まない文字列はそのまま返す
use feature say;
for(<DATA>) {
@a = split/(?<!\d)_|_(?!\d)|\s/;
say 1 == @a ? @a : map{ucfirst lc} @a;
}
__DATA__
snake_case
ODAI00_99_TEST
x_0_x
UpperCamelCase
_local_vvar_
lavel_style_
OdAi00_9_9TeST
実行結果
~ $ perl 15_400_fix.pl
SnakeCase
Odai00_99Test
X0X
UpperCamelCase
LocalVvar
LavelStyle
Odai00_9_9Test
use feature say;
for(<DATA>) {
@a = split/(?<!\d)_|_(?!\d)|\s/;
say 1 == @a ? @a : map{ucfirst lc} @a;
}
__DATA__
snake_case
ODAI00_99_TEST
x_0_x
UpperCamelCase
_local_vvar_
lavel_style_
OdAi00_9_9TeST
実行結果
~ $ perl 15_400_fix.pl
SnakeCase
Odai00_99Test
X0X
UpperCamelCase
LocalVvar
LavelStyle
Odai00_9_9Test
415デフォルトの名無しさん
2019/09/11(水) 23:34:45.60ID:sKkTHzOH >>414 ゴメン、実行結果貼り間違えた(下記のように最後のOdAi00_9_9TeSTはそのまま出る)
~ $ perl 15_400.pl
SnakeCase
Odai00_99Test
X0X
UpperCamelCase
LocalVvar
LavelStyle
OdAi00_9_9TeST
~ $ perl 15_400.pl
SnakeCase
Odai00_99Test
X0X
UpperCamelCase
LocalVvar
LavelStyle
OdAi00_9_9TeST
416デフォルトの名無しさん
2019/09/11(水) 23:43:35.81ID:sKkTHzOH >>412 Perl5
@a = a..z;
@x = map{$_-1} grep{$_&1} 1..@a;
@b = @a[@x];
print "[@b]\n";
実行結果
~ $ perl 15_412.pl
[a c e g i k m o q s u w y]
@a = a..z;
@x = map{$_-1} grep{$_&1} 1..@a;
@b = @a[@x];
print "[@b]\n";
実行結果
~ $ perl 15_412.pl
[a c e g i k m o q s u w y]
417デフォルトの名無しさん
2019/09/12(木) 00:37:35.06ID:zD/2/X2z >>412
common lisp
(loop for i in '(1 2 3 4 5) for j from 1 when (eql 1 (mod j 2)) collect i)
(1 3 5)
common lisp
(loop for i in '(1 2 3 4 5) for j from 1 when (eql 1 (mod j 2)) collect i)
(1 3 5)
418デフォルトの名無しさん
2019/09/12(木) 02:26:36.91ID:IEWaKNAx419デフォルトの名無しさん
2019/09/12(木) 09:48:36.52ID:XoEd0LBY420デフォルトの名無しさん
2019/09/12(木) 11:37:50.98ID:Cxpf63qu421デフォルトの名無しさん
2019/09/12(木) 18:13:32.79ID:sKYe7PWn422デフォルトの名無しさん
2019/09/12(木) 18:34:25.79ID:u0+zztnJ423デフォルトの名無しさん
2019/09/12(木) 21:30:23.66ID:+vUO8BYK424デフォルトの名無しさん
2019/09/12(木) 21:33:45.75ID:cqw0/uFd さすがJ
サッパリ分からん
サッパリ分からん
425デフォルトの名無しさん
2019/09/13(金) 00:40:21.67ID:6zSQdjjj >>412
せめて、リストの中身は順番と関係無い内容の方が。。。
(例えば"abcde"とか)
Haskell
main = (print.oddlist) [1..5]
oddlist xs = [x | (x,y) <- zip xs [1..], odd y]
せめて、リストの中身は順番と関係無い内容の方が。。。
(例えば"abcde"とか)
Haskell
main = (print.oddlist) [1..5]
oddlist xs = [x | (x,y) <- zip xs [1..], odd y]
426デフォルトの名無しさん
2019/09/13(金) 02:03:47.81ID:qdoB8RTo427デフォルトの名無しさん
2019/09/13(金) 13:13:33.48ID:zfsxzWX8428デフォルトの名無しさん
2019/09/13(金) 21:31:55.35ID:5n7mddvT429デフォルトの名無しさん
2019/09/13(金) 21:37:33.86ID:sQZEDK+j tcl/tkで「tk部分ははいいがtclがクソ」みたいなのよく見た気がするんだけど、あれどういうとこが根拠なん?
430デフォルトの名無しさん
2019/09/14(土) 04:14:12.84ID:x5aQTHnU お題: すべての人民は和平のために火急的に速やかに自己の復元を実現しなければならない。
431デフォルトの名無しさん
2019/09/14(土) 04:28:39.19ID:BS6VTuNp432デフォルトの名無しさん
2019/09/14(土) 07:49:29.90ID:/8qdS/t9433デフォルトの名無しさん
2019/09/14(土) 08:17:19.38ID:G26P45sA434デフォルトの名無しさん
2019/09/14(土) 08:24:26.09ID:Hd+E1riT■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 空自機レーダー照射、音声データ公開 中国 ★3 [蚤の市★]
- 日銀「歴史的」利上げ迫る 35年ぶりの年間上げ幅、0.5%の壁を突破 [蚤の市★] [蚤の市★]
- 津波警報の発表中にグーグル検索、AIが「すべて解除」と誤情報 [蚤の市★]
- 【YouTuber】バイク事故で入院のゆたぼん、振込で「お見舞金」募る [muffin★]
- 【テレビ】家入レオ 高校時代は親友なし 唯一の仲間が現在は超人気女優 「ずっとお互いに本を読んで」 [湛然★]
- 低所得層のマクドナルド離れが深刻に 広がる「ファストフード格差」の真相 米国 [少考さん★]
- 【実況】博衣こよりのえちえち朝活🧪
- 寒すぎてハゲたんやが
- 【高市悲報】日本人のTikTokアカウントが続々収益化剥奪中!!乞食どもざまああああああああwwwwwww [394917828]
- ケツマンコが痒いんだが
- 中国父さん、ジャップに事前通知した音声公開😄騒いでたのはジャップだけだった😭 [929293504]
- (´・ω・`)あの時はごめんね
