プログラミングのお題スレ Part13at TECH
プログラミングのお題スレ Part13 - 暇つぶし2ch450:デフォルトの名無しさん
19/02/28 20:59:59.90 KtyAfxmO.net
>>437 もちろんどんな公園にもバカな書き込みをする奴はいるだろう。 でも管理された公園では、次の日には修復されてるから書かれてたことにすら気づかなくて、誰も描かなくなる。
10年に1度くらいアホが便器を壊すなんて馬鹿なことをする事件もあるが、バカはどこにでもいるから仕方ない。

451:デフォルトの名無しさん
19/02/28 21:01:11.76 6vlCNc4e.net
もうちょっと気の利いた比喩がほしいね。

452:デフォルトの名無しさん
19/02/28 21:58:37.50 dSln4xk/.net
お題
四角形の羅列を、'#'と'.'を使った表現から罫線を使った表現に変換せよ
(例)等幅フォントで見てください
#

┌┬┐
├┼┤
└┴┘
#..###.####.
..#.....##.#
#.#....#.#.#
....#.#...#.
┌┬┐   ┌┬┬┬┬┬┐ ┌┬┬┬┬┬┬┬┐  
├┼┤   ├┼┼┼┼┼┤ ├┼┼┼┼┼┼┼┤  
└┴┘ ┌┬┼┴┴┴┴┴┘ └┴┼┼┼┼┼┴┼┬┐
    ├┼┤         ├┼┼┼┤ ├┼┤
┌┬┐ ├┼┤       ┌┬┼┴┼┼┤ ├┼┤
├┼┤ ├┼┤       ├┼┤ ├┼┤ ├┼┤
└┴┘ └┴┘ ┌┬┐ ┌┬┼┴┘ └┴┼┬┼┴┘
        ├┼┤ ├┼┤     ├┼┤  
        └┴┘ └┴┘     └┴┘  

453:デフォルトの名無しさん
19/02/28 22:09:31.89 DbAr3TBt.net
なにこれ?組み立てたらガンダムになるの?

454:デフォルトの名無しさん
19/02/28 22:33:12.22 lyW2+AsV.net
>>410 ruby
URLリンク(ideone.com)
f = -> s {[''].product(*s.chars.map {|c| [c, c.upcase]}).map(&:join)}
p %W(#{} a ab).map {|s| [s, f.(s)]}

[["", [""]], ["a", ["a", "A"]], ["ab", ["ab", "aB", "Ab", "AB"]]]

455:デフォルトの名無しさん
19/03/01 11:41:54.16 RkKCNcIA.net
>>411 下らんお題出すなよ。

456:デフォルトの名無しさん
19/03/01 14:53:48.06 ber2ILYj.net
>>444
それお題じゃない

457:デフォルトの名無しさん
19/03/01 16:58:28.80 KMRxw/mf.net
>>444 >>441 の間違い

458:デフォルトの名無しさん
19/03/01 17:54:01.28 nsJzseJ0.net
読み手の環境を変えさせるようなお題は不適切。

459:デフォルトの名無しさん
19/03/01 18:00:52.30 nsJzseJ0.net
というか >>441 の問題が意味不明。 スクリーンショットで示してみなよ。 俺はやらんだろうけど。

460:デフォルトの名無しさん
19/03/01 18:05:43.92 nsJzseJ0.net
>>441 なんかプログラムの練習の前に、日本語のおさらいをした方が良い人間が見受けられるな。
プログラムはチームワークだから、他人に仕様が正確に伝えられなければその時点でそのプロジェクトは失敗。
理解しやすい言葉で混乱が起きない様に示すのが当たり前では?
それができない人はプログラムで問題を出しなさいよ。

461:デフォルトの名無しさん
19/03/01 18:35:43.56 ber2ILYj.net
え?>>441はわかるよ。俺がエスパーなだけ?w

462:デフォルトの名無しさん
19/03/01 18:38:47.53 nQNJhNQv.net
俺もわかるけどわかりにくいと思った

463:デフォルトの名無しさん
19/03/01 19:02:55.70 KgoMIpD3.net
なぜ#1つで4つの4角形になるんた?
#を図形として見た場合一致しないと思うんだが

464:デフォルトの名無しさん
19/03/01 19:26:25.34 ber2ILYj.net
記号を罫線ので作った四角にしろってことでこの場合は#だったってだけでは?
なんだったら「田」から変換するようにすれば雰囲気がマッチして良いかも知れんな。気分の問題だが。

465:デフォルトの名無しさん
19/03/01 19:55:55.91 HvpZFnzz.net
>>441 Common Lisp
URLリンク(ideone.com)

466:デフォルトの名無しさん
19/03/02 01:29:28.31 og4HVKiE.net
>>441 でたらめだろ。 #が田形3マスになるのは良いとして、ドットが何で3マスになったり、1マスになってるんだよ。
#..###.####.
..#.....##.#
#.#....#.#.#
....#.#...#.
123456789いろはにほ123456789へと
┌┬┐   ┌┬┬┬┬┬┐ ┌┬┬┬┬┬┬┬┐  
├┼┤   ├┼┼┼┼┼┤ ├┼┼┼┼┼┼┼┤  
└┴┘ ┌┬┼┴┴┴┴┴┘ └┴┼┼┼┼┼┴┼┬┐
    ├┼┤         ├┼┼┼┤ ├┼┤
┌┬┐ ├┼┤       ┌┬┼┴┼┼┤ ├┼┤
├┼┤ ├┼┤       ├┼┤ ├┼┤ ├┼┤
└┴┘ └┴┘ ┌┬┐ ┌┬┼┴┘ └┴┼┬┼┴┘
        ├┼┤ ├┼┤     ├┼┤  
        └┴┘ └┴┘     └┴┘  

467:デフォルトの名無しさん
19/03/02 01:35:36.81 og4HVKiE.net
>>455 ごめん、罫線だから、0.5ずれてたのか。 しかしわかりにくい問題だな。 
もしかして自分の仕事を人に押し付けようとしていないか? 

468:デフォルトの名無しさん
19/03/02 03:13:42.38 xuPe2CJ9.net
>>441 Java
URLリンク(ideone.com)

469:デフォルトの名無しさん
19/03/02 11:02:58.51 H6jPx1zC.net
専用ブラウザじゃ等副フォントなんて選べないのがあるのを知らないのか?
BB2Cでは、英字は等幅が選べても、漢字にはフォント設定すらない。
Jane Doe View も MSゴシックを選択しても等幅にならない。
読み手の設定を変えさせる問題なんて2chにはふさわしくない。

470:デフォルトの名無しさん
19/03/02 11:17:11.62 xuPe2CJ9.net
俺は等幅で見てくれってあったら、設定を変えるんじゃなくてメモ帳にコピペして見るけどなー

471:デフォルトの名無しさん
19/03/02 11:41:44.38 og4HVKiE.net
>>459 そうやって見たけど面倒くさい。 やるならどこかのサイトに張り付けるか画像で出題すべきだろ。

472:デフォルトの名無しさん
19/03/02 11:42:35.75 jZcAiOx4.net
おれなら出題を諦めるなw

473:デフォルトの名無しさん
19/03/02 11:43:11.78 chZTsz9F.net
問題とかずに問題への文句ばかり垂れるってお前らにしては珍しいな
問題とけよクズども

474:デフォルトの名無しさん
19/03/02 11:55:57.51 xuPe2CJ9.net
>>462
お…おれはやってるよっ

475:デフォルトの名無しさん
19/03/02 11:55:57.58 jZcAiOx4.net
>>462
ぐ、ぐむーっ

476:デフォルトの名無しさん
19/03/02 11:56:34.18 xuPe2CJ9.net
>>463-464
この間0.07秒である

477:デフォルトの名無しさん
19/03/02 12:11:05.29 JYk2NVzi.net
この広い日本のどこかに同じ時に同じレスに反応してしまった二人がいる。
プログラミングの世界は奥が深いな……

478:デフォルトの名無しさん
19/03/02 13:30:29.30 og4HVKiE.net
>>466 良いお題を解いたね。

479:デフォルトの名無しさん
19/03/02 16:02:22.23 xke/YE7F.net
>>453
なるほどそういうことか

480:デフォルトの名無しさん
19/03/02 16:22:52.10 ZN4ZPl7z.net
>>457
なるほど
>>411 Common Lisp (>>457の移植)
URLリンク(ideone.com)
すごいなあ、こんなの全然思いつけない
文字を文字のままどうにかしようとしてぐちゃぐちゃになったのが>>454でした

481:デフォルトの名無しさん
19/03/02 16:25:46.70 ZN4ZPl7z.net
>>469
アンカミス
>>411>>441

482:デフォルトの名無しさん
19/03/02 16:49:20.52 R507/Kbo.net
全く面白くない。

483:デフォルトの名無しさん
19/03/02 20:23:12.84 bDAZjPpu.net
>>471
自分の好みじゃないと面白くないなんて小学生か。
黙ってスルーするか、自分が好みの問題だして盛り上げたらどうだ?

484:デフォルトの名無しさん
19/03/03 08:56:00.68 NMVimqZR.net
お題:2つの円が重なった時、重なった部分の面積を求めなさい。

485:デフォルトの名無しさん
19/03/03 13:28:27.28 TjAANgsg.net
含まれている場合も考えなきゃならんな…

486:デフォルトの名無しさん
19/03/03 17:19:17.78 e91Lt8pq.net
>>473
わかりません。

487:さまよえる蟻人間
19/03/03 17:21:20.86 KlFuUPR7.net
距離と半径くらい指定しろよ。

488:デフォルトの名無しさん
19/03/03 17:48:01.52 EHdvkNdx.net
>>475
分からない人は答えなくていいし黙って見ていればいいよ

489:デフォルトの名無しさん
19/03/03 18:41:09.09 TjAANgsg.net
>>476
任意に対応すべきだろJK

490:デフォルトの名無しさん
19/03/03 18:55:07.69 TjAANgsg.net
>>476
URLリンク(detail.chiebukuro.yahoo.co.jp)
このサイトは具体的な座標と半径について手計算で解いた例だけど、
座標と半径を一般化して連立二次方程式を解いて交点を求め、
三角形と円弧の面積の差を求めれば重なり合う2円弧の面積が算出できる。
小さい円の中心が大きい円の内側にある場合は、
三角形と円弧の面積の差の求め方を逆にする。
小さい円が大きい円の完全に内側にある場合は、小さい円の面積とする。
x,y座標で式を立てるより、曲座標で表して三角関数使うほうが楽かもしれない。
これをプログラム化すれば良い、筈【だと思う。
以上。

491:デフォルトの名無しさん
19/03/03 19:21:30.98 yjYtaUkW.net
2つの中心を通る線をX軸としてX軸と交わる点の端っこを原点して円の交点と半径で
円一個ずつ積分して面積を出して合わせるしかないだろ。

492:デフォルトの名無しさん
19/03/03 19:28:30.68 r5nrErEk.net
半径と中心間の距離から円の交点間の距離(=弦)がわかるから
正弦定理とarcsinで中心角を求めればあとはただの掛け算と引き算だろ

493:デフォルトの名無しさん
19/03/03 19:33:55.32 TjAANgsg.net
>>481
二次方程式解かないで済みそうだな

494:デフォルトの名無しさん
19/03/03 20:19:21.58 ot+8d2KD.net
それが一番シンプルそうだな

495:デフォルトの名無しさん
19/03/03 20:23:33.79 8CruhG40.net
プログラム的には円同士の位置関係で場合分けして、あとは計算一発だから二次方程式をいやがる必要もなくない?

496:デフォルトの名無しさん
19/03/03 21:06:33.77 XGcp5yLx.net
>>473 C
URLリンク(ideone.com)
画像も参照。
URLリンク(imgur.com)

497:デフォルトの名無しさん
19/03/03 22:28:24.90 XGcp5yLx.net
>>485
条件分岐が間違っていたので修正。おそらくあってると思う
URLリンク(ideone.com)
余弦定理を使う方法しか思いつかなかったから、それでやった

498:デフォルトの名無しさん
19/03/04 01:00:55.59 q2TdavLp.net


499:デフォルトの名無しさん
19/03/04 07:57:27.52 7HyVHUwF.net
お題:不等間隔で与えられる関数表から1次とか2次で補間をしなさい。

500:デフォルトの名無しさん
19/03/04 11:04:59.42 9wLIIjqc.net
お題: 2つの任意の英数字からなる芸術的なアスキーアートを出力しろ

501:デフォルトの名無しさん
19/03/04 11:07:25.78 9wLIIjqc.net
お題: アスキーアートで芸術的な直線を出力しろ

502:デフォルトの名無しさん
19/03/04 12:15:59.00 9wLIIjqc.net
お題: アスキーアートで芸術的な木のアスキーアートを出力しろ

503:デフォルトの名無しさん
19/03/04 13:00:20.39 enTqHBl5.net
お題: このバカをどうにかしろ

504:デフォルトの名無しさん
19/03/04 13:06:53.32 mOK2oiAk.net
>>489>>490>>491
どうぞ……
スレリンク(motenai板)

505:デフォルトの名無しさん
19/03/04 18:59:01.31 R4eMfGlu.net
お題 全角空白区切のCSV
カレントディレクトリにあるCSVファイルを読み込み、指定されたカラム名のデータの合計を求める。
1レコード目にはカラム名がある。
区切り記号は全角空白とする。 データの数字は全てASCII数字だとする。
CSVファイル内のデータ例
カラム1 カラム2 カラム3 カラム4
1,0 2.0 3.0 4.0
2.1 3.1 4.1 5.1
------データ例終わり
出題 カラム3 の合計を求めよ。
解答例 カラム3 = 7.1

506:さまよえる蟻人間
19/03/04 19:01:33.11 wk4fvbO+.net
カンマとピリオド間違えたら死ぬぞ。気を付けれ。

507:デフォルトの名無しさん
19/03/04 19:03:32.42 rdjSvZ2C.net
>>494 間違い
データに 1,0 という間違いがあるけど問題ないだろ。
ついでに、この状態でカラム1の様にデータフォーマットが違う場合には正しくデータエラーを報告せよ。

508:さまよえる蟻人間
19/03/04 19:10:24.71 wk4fvbO+.net
日本やアメリカでは、ピリオドは文の終わりや小数点として使う。
カンマは文章途中の区切りや複数の項目の区切りに使う。

509:デフォルトの名無しさん
19/03/04 19:12:27.62 rdjSvZ2C.net
>>497 問題に関係ないことを言うなよ。

510:デフォルトの名無しさん
19/03/04 19:12:28.56 TpCWsYE8.net
>>494
awk。-F オプションで指定しているのが全角スペースね。OSやシェルの違いによってはシングルクオーテーションではなくダブルクォーテーションにする必要がある。入力はファイル名指定するか標準入力から読ませる。
awk -F' ' 'BEGIN{getline}{n+=$3}END{print n}'

511:デフォルトの名無しさん
19/03/04 19:15:20.56 TpCWsYE8.net
awkはデータフォーマットがおかしくても適当に0ってことにしちゃったりしてエラーにならんのでデータ異常まで調べたいなら他の言語使った方が良いだろうな。

512:デフォルトの名無しさん
19/03/04 19:16:48.51 rdjSvZ2C.net
>>499 カラム名を指定してよ。カラム名は指定された名前であり固定ではない。

513:デフォルトの名無しさん
19/03/04 19:22:30.38 TpCWsYE8.net
>>501
あー。じゃあ後で他の言語で作るか。

514:デフォルトの名無しさん
19/03/04 19:42:58.86 0eAiVVhP.net
お題:端末の横幅が与えられるので(*´ω`*)を端末の中央に表示せよ

515:デフォルトの名無しさん
19/03/04 20:14:28.23 /O719wMt.net
このバカどうにかしろ
あとチンポジ代わりに直せ

516:デフォルトの名無しさん
19/03/04 21:14:51.56 x+RRe849.net
>>503 Ruby
w = 120
printf("%s%s\n", " " * ((w - 10) / 2), "(*´ω`*)")

517:デフォルトの名無しさん
19/03/05 01:17:51.32 irQmeRjm.net
茨木 保健
貴老沢 風花
鬼塚 海鈴
鬼埜 可恋
儀賀沢 一愛
嫌沢 宮子
己問 彩姫
寺沢 七彩
寿川 瑞紀
樹木山 美咲
宗田 純
女ケ沢 美優
女ケ澤 飛鳥
女鹿沢 祐奈

518:デフォルトの名無しさん
19/03/05 03:28:01.02 CZi591h7.net
>>494
Ruby で
require 'csv'
# 全角空白区切りで、ヘッダー有り
options = { :headers => true, :col_sep => " " }
# CSV ファイルを、1行ずつ処理する
puts CSV.foreach( "input.csv", options )
.map{ |row| row[ 2 ].to_f }.inject( :+ )

519:デフォルトの名無しさん
19/03/05 07:59:44.57 0SMIqw+w.net
>>507 カラム名サーチが入っていないみたいだけど。
例えば ”カラム3” と言うカラム名が指定されたとして書いてみて。3列目と言うことじゃないからね。
カラム4 カラム2 カラム1 カラム3
かも知れない。

520:デフォルトの名無しさん
19/03/05 08:10:31.80 utDz1VTj.net
変な流れが続いていたから、バカっぽいお題をいくつか出した後に一見まともそうなお題のふりして宿題をやってもらおうという腹かと勘ぐってしまう。

521:デフォルトの名無しさん
19/03/05 09:08:51.84 BKNc7BtY.net
>>509
お前の思いちゃんと伝わったよ
問題解けクズ

522:デフォルトの名無しさん
19/03/05 09:12:40.32 DIrFqE8l.net
>>510
宿題は自分でやれカス

523:デフォルトの名無しさん
19/03/05 09:42:11.28 BKNc7BtY.net
>>511
お前の宿題だが

524:デフォルトの名無しさん
19/03/05 09:45:18.09 DIrFqE8l.net
死ね

525:デフォルトの名無しさん
19/03/05 11:33:12.77 7U5lBe0C.net
だから言語制限なしで通すとやっぱネタギレじゃん

526:デフォルトの名無しさん
19/03/05 12:09:12.75 KQ31R4yU.net
お題1: テトリスタイリング問題を解決しろ
ここでテトリスタイリング問とは任意の図形のアスキーアートを入力すると
全てのテトリスのブロックに隣接するブロックの種類が異なるようにタイリングしたアスキーアートを出力する
問題である
お題2: テトリスタイリングNブロックス問題を解決しろ
ここでこの問題は上の問題でブロックの種類の数Nを最小にする問題である
例:
入力:
****
****
****
出力:
1002
1002
1122

527:デフォルトの名無しさん
19/03/05 12:21:13.18 WJ/srpVX.net
>>515
これじゃダメなのか?
1011
1001
1101

528:デフォルトの名無しさん
19/03/05 12:23:52.27 KQ31R4yU.net
>>516
それでもええで

529:デフォルトの名無しさん
19/03/05 23:56:55.78 0SMIqw+w.net
>>515 ボクちゃんわかんない。
何で縦の列は1とか同じ種類が許されてるの? なんか上から下へとか言う動きを前提にしてるの?

530:デフォルトの名無しさん
19/03/06 01:19:54.96 tTGpH/KM.net
>>518
URLリンク(upload.wikimedia.org)
片面テトロミノ(画像参照)を回転させて指定の形に詰め込め
ただし、同じテトロミノを隣接させてはいけない。 ってことじゃろ
515の出力例でいうと、
0は画像の水色、1は黄色、2は紫色の奴ってこと

531:デフォルトの名無しさん
19/03/06 08:04:05.66 bBth0ZZS.net
>>515 その出力例だと、タイルの種類は3種類じゃないの?
1と2を同じだとみなせば、同じ種類と隣接するからダメだろ?
>>516 だと完全に2種類だが。

532:デフォルトの名無しさん
19/03/06 10:13:54.30 Z0o65K/P.net
>>520
>>519

533:デフォルトの名無しさん
19/03/06 11:44:29.70 cM1JcwP7.net
>>521
だからこそ出題例>>515は3種類のブロックを使ってるんだろ? 
2種類で出来ていないから問2に対しては不正解では?

534:デフォルトの名無しさん
19/03/06 11:58:00.89 OdnfdSEH.net
>>522
例がお題2とお題1両方の答えになっているなんてことはどこにも書いてないだろ
例を見ればだれでもどのお題の答えかわかるだろ

535:デフォルトの名無しさん
19/03/06 12:34:51.62 cM1JcwP7.net
>>523 誰でも解ると言うのは言い過ぎ。 何が正しいのかを示すのが例なんだし。
なんにせよお題の出し方が独断すぎるよ。
テトリスタイリングなんて知らない人にとっては説明不足だし
>>519 の説明があって初めて平面上の回転図形は同じとみなし、裏表の回転は許さないと解るけど。
それでも519のブロックは4個の組み合わせのブロックしかないが、どうして4個固定なのか? 最大辺の個数を単位とするのか?
この場合は5個固定?
***
***
***
***
***

536:デフォルトの名無しさん
19/03/06 12:44:07.40 OdnfdSEH.net
>>524
釣りだろ?
本当にわからないのなら病院に行くレベルw

537:516
19/03/06 12:54:30.31 l


538:TLUMkgQ.net



539:デフォルトの名無しさん
19/03/06 12:57:33.38 FCOQEIBI.net
わかっても今のところ解く気は起きない

540:デフォルトの名無しさん
19/03/06 12:58:29.33 Z0o65K/P.net
>>522
あなた、前に書き込んでた中卒の人?

541:デフォルトの名無しさん
19/03/06 13:01:54.00 uLgh04dF.net
>>199>>441が理解できなかったってやつと同一人物なのは分かる

542:デフォルトの名無しさん
19/03/06 13:08:31.07 URj2ByGk.net
>>524
>どうして4個固定なのか? 
テトリスってゲームがあってそれに出てくるブロックが>>519
>>515
>全てのテトリスのブロック
URLリンク(ja.wikipedia.org)
テトリス
>4つの正方形を組み合わせて作られた、片面型テトロミノ状のブロックピース
>(以下の7種、本作ではこれらを「テトリミノ」(Tetrimino)と呼ぶ)
>がフィールド上方からランダムに1種類ずつ落下してくる。

543:デフォルトの名無しさん
19/03/06 13:09:30.85 f/NWPYTA.net
>>441は分からんかった
問題を考えさせてほしい
問題文を考えさせるんじゃなく

544:デフォルトの名無しさん
19/03/06 13:50:33.24 cM1JcwP7.net
>>530 片面テトリミノの基本は4個だけどこれを使う前提なら、3x5とか4の倍数の面積にならない図形は解けないよね。
聞いてるのは3x5はどうするのと言う話。

545:デフォルトの名無しさん
19/03/06 14:02:02.94 URj2ByGk.net
>>532
「解けない」でいいんだろ

546:デフォルトの名無しさん
19/03/06 16:31:44.46 OdnfdSEH.net
>>532
この問題は君の思ってる小学校の算数とは違うんだよ

547:デフォルトの名無しさん
19/03/06 18:11:04.36 +4ROOaYr.net
問題の難しさと、問題の曖昧さは関係ないけどな。
難しい問題の条件が曖昧だと鼻から解く気になれない。

548:デフォルトの名無しさん
19/03/06 18:18:58.86 OdnfdSEH.net
考えればわかることまでいちいち書かないのは常識
それを曖昧とは言わない

549:デフォルトの名無しさん
19/03/06 19:39:35.98 RlXQ9XDp.net
数学者は常識人

550:デフォルトの名無しさん
19/03/06 19:40:44.95 L0cGL7i+.net
当たり前のことでもいちいち全部書くのがこの業界の常識だが

551:デフォルトの名無しさん
19/03/06 19:57:47.15 2Etc0l5z.net
仕様書をやりとりしてみれば如何に他人に解らせることが難しいか理解できると思うけどな。 多分出題者は余り経験していないんだろう。
仕様をいい加減で進めても後で痛い目を見るのは自分。
(最初は完全でないのは当然、打ち合わせで抜けを詰めていけば良い話)

552:デフォルトの名無しさん
19/03/06 20:41:28.07 OdnfdSEH.net
>>538
テトリスがなにかなんて自分でググって調べればいいことだろ
そんなことまで面倒みれない

553:デフォルトの名無しさん
19/03/06 20:51:34.66 Xwbjxxrc.net
お題の面白さに共感しなければ趣味だから解かない。

554:デフォルトの名無しさん
19/03/06 21:21:50.81 FCOQEIBI.net
そういや安かったのでPS4用のテトリスを何気なく買って連日やってたら慣れてきちゃってレベル15の40ライン消しが楽にできるようになってしまったなあ。
今さらテトリスうまくなってどうすんだ俺w

555:デフォルトの名無しさん
19/03/07 03:21:20.86 QS9GxyX4.net
>>494
Kotlin
URLリンク(paiza.io)
入力はカラム名の行が最初にあり、次の行からはデータが続き「# カラム名」の行で終わり、
そこで指定したカラム名の列の合計値が出力される。
エラーはデータが数値として解釈できない文字列、項目数がカラム名の数と一致しない行、
同一カラム名があった場合に出る。一度エラーになると # の行まで読み飛ばされる。

556:デフォルトの名無しさん
19/03/07 17:22:14.11 bbRk4M8e.net
お題
R言語にandmaginsとうう関数がある。
m行n列の行列を渡すと行ごとの合計と列ごとの合計を追加して
(m+1)行(n+1)列の行列を返す。
同様の関数をつくる。
1 2 3
4 5 6

1 2 3 6
4 5 6 15
5 7 9 21
となる

557:デフォルトの名無しさん
19/03/07 19:35:31.07 gyMjU+f2.net
>>544
C++
URLリンク(ideone.com)

558:デフォルトの名無しさん
19/03/07 23:35:37.41 bSfNx8gZ.net
>>544 Squeak/Pharo Smalltalk
| fn |
fn := [:arr | arr, {arr sum} collect: [:row | row, {row sum}]].
fn value: #(
(1 2 3)
(4 5 6)
).
"=> #(
(1 2 3 6)
(4 5 6 15)
(5 7 9 21)
) "

559:デフォルトの名無しさん
19/03/08 00:35:43.62 N66/0TP0.net
大文字小文字だけが異なる、ファイル名を見つける
入力
aB.txt
Ab.txt
xx
cd
cD
CD
出力
aB.txt : Ab.txt
cd : cD : CD

560:デフォルトの名無しさん
19/03/08 04:41:32.92 JrzgN4oN.net
#!/bin/sh
infile="aB.txt Ab.txt xx cd cD CD"
for f in ${infile}; do
echo $f $(echo $f | tr [:lower:] [:upper:])
done | awk '
{ save[$2] = save[$2] " : " $1 }
END {
for (i in save) print save[i]
}' | sed 's/^ : //' | sort | awk 'NF > 1 {print}'

561:デフォルトの名無しさん
19/03/08 09:23:36.88 iTwHpxzE.net
>>547 Squeak Smalltalk
| fn |
fn := [:arr |
| groups |
groups := arr groupBy: #asLowercase having: [:group | group size > 1].
groups values collect: #asArray
].
fn value: #('aB.txt' 'Ab.txt' 'xx' 'cd' 'cD' 'CD').
"=> #(('cd' 'cD' 'CD') ('aB.txt' 'Ab.txt')) "

562:デフォルトの名無しさん
19/03/08 09:47:13.60 pv8HlopZ.net
>>547
それはWindowsとかでは試せないのでは?ディレクトリが違うならできるだろうけど。
(まあWindowsでもWSLでUbuntuとか動かせばできるが)

563:547
19/03/08 11:48:57.26 N66/0TP0.net
同一フォルダ内での、大文字小文字だけが異なるファイル名は、Windows では作れないけど、
Linux では作れてしまうので、それをチェックする目的です
Linuxでも、こういうファイル名は作らない方がよい

564:デフォルトの名無しさん
19/03/08 16:35:28.24 VhFMuL/G.net
>>551
死ね

565:デフォルトの名無しさん
19/03/08 17:12:36.80 qP6cz7Aj.net
時々死ねと言うやついるけど同じやつなのか? いい加減で大人になれ。

566:デフォルトの名無しさん
19/03/08 18:19:49.57 aY8HpC9F.net
イ㌔

567:デフォルトの名無しさん
19/03/08 18:42:00.27 eAQ60MzF.net
お題: 1=2を証明しろ
証明出来ないは無しで

568:デフォルトの名無しさん
19/03/08 18:49:56.10 qP6cz7Aj.net
>>555 それは言語によるんじゃないの? 論理的にはあり得ない。
一般的には、0がFalse でそれ以外がTrueと言うだけでは?

569:さまよえる蟻人間
19/03/08 18:58:42.07 8R2ZaOuQ.net
整数のオーバーフロー使えば楽に証明できるけど、それはもはや基礎数学の整数じゃないし。

570:デフォルトの名無しさん
19/03/08 19:14:26.55 2owB+W9f.net
>>544 octave
URLリンク(ideone.com)

571:デフォルトの名無しさん
19/03/08 19:17:05.52 ru9qZk5w.net
お題:
N人の人物がある部屋に出入りしています。
i番目の人は時刻a[i]に入室し、時刻b[i]に退室します。(1 <= a[i] < b[i])
すべての人は入退室時に以下の通り行動します。
・入室時に、照明がOFFならば照明をONにする。
・退室時に、室内に自分以外に誰もいなければ照明をOFFにする。
最初は照明がOFFになっていて室内には誰もいません。
複数の人物が同時に入退室することはないものとします。
照明がONになっている時間の合計を求めなさい。
a={1,3,5}
b={2,4,6}
=> 3
a={1,2}
b={5,6}
=> 5
a={100,1,2}
b={105,3,4}
=> 8

572:デフォルトの名無しさん
19/03/08 20:42:26.76 q/o0JPH8.net
>>364
brainf*ck
>++++++++++<+[,.>.<]

573:デフォルトの名無しさん
19/03/08 20:42:27.70 AweN/YnK.net
★ぁりが㌧ヾ(。・ω・。)ノぁりが㌧★

574:デフォルトの名無しさん
19/03/08 20:54:42.10 2owB+W9f.net
>>559 ruby
URLリンク(ideone.com)

575:デフォルトの名無しさん
19/03/08 21:22:26.01 QMcItLTV.net
>>559 Common Lisp
URLリンク(ideone.com)

576:デフォルトの名無しさん
19/03/08 21:55:03.73 2owB+W9f.net
>>547 ruby
URLリンク(ideone.com)

577:デフォルトの名無しさん
19/03/09 08:53:56.42 irV15TzB.net
>>410 J
f =: 3 : 0
 > , { ;/(,. toupper) y
)

578:562
19/03/09 09:29:27.51 8CAUa/TL.net
>>559 ruby
すこーしすっきり
f = ->a, b {a.zip(b).map {|c| (c.first...c.last).to_a}.inject(:|).size}

f = ->a, b {a.zip(b).map {|c, d| [*c...d]}.inject(:|).size}

579:547
19/03/09 10:58:09.02 GVs3bbIF.net
>>564
たった2行とは、素晴らしい!
JavaScript(JS)とか、関数型プログラミングだね
f(&:upcase), f(&:chomp)
関数型でも、こういうように呼ぶ関数名が明確にわかる点では、Ruby はJS をしのぐ!
漏れが以下で作ったけど、手続き型の処理で、10行以上も掛かったw
情けない
Ruby 初心者スレッド Part 65
スレリンク(tech板:234番)

580:デフォルトの名無しさん
19/03/09 12:51:20.88 C6v7oEvs.net
クソみてーな恣意的な記号使いはperl譲りだな

581:デフォルトの名無しさん
19/03/09 13:17:28.26 capoU8RA.net
アンダースコア_はprologの時点であるんじゃね
それに記号なら恣意的だろ

582:デフォルトの名無しさん
19/03/09 19:25:50.03 hBO8FWAE.net
>>544
Haskell
main = mapM_ print $ newxss ++ [zipWith (+) (newxss!!0) (newxss!!1)]
xss = [[1,2,3],[4,5,6]]
newxss = map (\xs -> xs ++ [sum xs]) xss

583:デフォルトの名無しさん
19/03/09 19:49:27.50 R3sqYFdd.net
お題:文字列と数値nが与えられるのでn番目の文字とそれ以外の文字を上下にスライドさせて表示する
入力
abc 2
出力
*b*
a*c

584:デフォルトの名無しさん
19/03/09 19:57:53.65 C6v7oEvs.net
お題か出力のどっちかが間違っている
日本語勉強した方がいい

585:デフォルトの名無しさん
19/03/09 19:58:57.39 hBO8FWAE.net
>>544,570
任意の数の行列だったか。。。
修正
main = mapM_ print $ newxss ++ [lastxs]
xss = [[1,2,3],[4,5,6],[7,8,9]]
newxss = map (\xs -> xs ++ [sum xs]) xss
lastxs = map sum $ retsu newxss
retsu ([]:xs) = []
retsu xss = map head xss:retsu (map tail xss)

586:デフォルトの名無しさん
19/03/09 20:10:49.99 0OOZ8KrR.net
>>557
オーバーフローは数学ですらないだろ。こっちは数学。

宇宙を支えていたのは、驚異のたし算だった
私がこのたし算を知ったのは20歳のころでした。その衝撃は、私の運命を変えるまでの威力を持っていました。
私の大学は2年生で所属学科を決めるシステムになっており、私はアインシュタインに憧れて物理学科に進もうとしていました。
その私が出会ったのがラマヌジャン(1887-1920)です。彼が描いた2つの絵を見た瞬間、私の中で何かが変わりました。
URLリンク(jbpress.ismedia.jp)
URLリンク(jbpress.ismedia.jp)

587:さまよえる蟻人間
19/03/09 20:18:26.71 XY+I2Bbh.net
>>574
応用数学ではオーバーフローも数学の一種。

588:デフォルトの名無しさん
19/03/09 20:25:11.72 hBO8FWAE.net
>>364
Haskell
main = mapM_ (\c -> putStrLn $ c:[]) "hello"

589:デフォルトの名無しさん
19/03/09 20:38:18.94 1xJckQ5D.net
>>544
kotlin
URLリンク(paiza.io)
Double型でやったら出力に小数点以下が付加されたが値として間違ってるわけではないのでそのままにする。

590:デフォルトの名無しさん
19/03/10 01:41:18.58 5A3UW8N7.net
>>544 Python
import numpy as np
# 何行何列でも良い
ar =[
[1,2,3,4],
[4,5,6,7],
[7,8,9,10]
]
#縦に足して行を追加
r=np.vstack((ar,np.sum(ar,axis=0)))
#横に足して列を追加
ans=np.hstack((r,np.sum(r,axis=1).reshape((-1,1))))
print('ans=\n',ans)
'''
ans=
[[ 1 2 3 4 10]
[ 4 5 6 7 22]
[ 7 8 9 10 34]
[12 15 18 21 66]]
'''

591:デフォルトの名無しさん
19/03/10 03:08:27.84 LqrBe0vy.net
>>571 ruby
s = "abc"
n = 2
t = "*" * s.length
t[n - 1] = s[n - 1]
u = s.clone
u[n - 1] = "*"
puts(t, u)

592:デフォルトの名無しさん
19/03/10 11:41:34.27 x4ZRCWyR7
>>544,573

n = 3

xss = (take n.iterate (map (+ n))) [1..n]

もっと大きな行列渡したくて、n*nのリスト(行列)作る関数作った。
こういうのって、手続き型と宣言型で違いが顕著だと思った。

593:デフォルトの名無しさん
19/03/10 11:57:40.70 e6SI07pl.net
>>571 J
f =: 4 : 0
|: ((,. -.) (<:x) = i. # y ) {"1 '*' ,. y
)
2 f 'abc'
*b*
a*c

594:デフォルトの名無しさん
19/03/10 13:31:21.17 vqbsu7fW.net
>>571
Haskell
main = do
putStrLn $ seclet "abc" (==) 2
putStrLn $ seclet "abc" (/=) 2
seclet lst func num = seclet' lst func 1 num
where
seclet' [] _ _ _ = []
seclet' (x:xs) f n a | f n a = x: seclet' xs f (n + 1) a
seclet' (_:xs) f n a = '*': seclet' xs f (n + 1) a

595:デフォルトの名無しさん
19/03/10 13:56:33.99 vqbsu7fW.net
>>571
>>582
引数の順序入れ替えてmapM_ 使って、main部分を一行にまとめた。
main = mapM_ (putStrLn.seclet "abc" 2) [(==),(/=)]
seclet lst num func = seclet' lst 1 num func
where
seclet' [] _ _ _ = []
seclet' (x:xs) n a f | f n a = x: seclet' xs (n + 1) a f
seclet' (_:xs) n a f = '*': seclet' xs (n + 1) a f

596:デフォルトの名無しさん
19/03/10 17:19:36.82 lsf+n+kn.net
>>571 Perl5
($s, $n)= qw{abc 2};
@s = split'',$s;
@t = qw{*} x @s;
$n--;
($s[$n], $t[$n]) = ($t[$n], $s[$n]);
print @t, "\n", @s, "\n";
実行結果
~ $ perl 13_571.pl
*b*
a*c

597:デフォルトの名無しさん
19/03/10 17:47:53.28 lsf+n+kn.net
>>544 Perl5
@a = ([1, 2, 3,],
    [4, 5, 6]);
use List::Util sum;
push @$_, sum(@$_) for @a;
for $i (0..$#{$a[0]}) {
 push @b, sum(map{$a[$_][$i]} 0..$#a)
}
print "@$_\n" for @a;
print "@b\n";

実行結果
~ $ perl 13_544.pl
1 2 3 6
4 5 6 15
5 7 9 21

598:デフォルトの名無しさん
19/03/10 20:48:09.83 z5UigTCL.net
>>571 octave
URLリンク(ideone.com)

599:デフォルトの名無しさん
19/03/10 21:12:33.92 ObNpfzdX.net
ここっておっさんが多いイメージ

600:デフォルトの名無しさん
19/03/10 21:16:39.36 KcIurEvX.net
>>559
Java
URLリンク(paiza.io)

601:デフォルトの名無しさん
19/03/10 21:20:18.73 z5UigTCL.net
>>571 ruby
URLリンク(ideone.com)
>>567
String#lines ←これの存在知らなかった
勉強になりました

602:デフォルトの名無しさん
19/03/10 21:46:22.59 KcIurEvX.net
>>547
Java
URLリンク(paiza.io)

603:デフォルトの名無しさん
19/03/10 21:59:51.08 5renFNS0.net
>>571
@Mathematica
URLリンク(ideone.com)

604:567
19/03/10 22:01:14.30 bEzyp4mc.net
>>589
余談だが、Ruby のString#lines の所を見たら、chomp: true で改行も削除できる!
Rubyは、色々と便利なものを作っている
p ary = <<"EOT".lines( chomp: true ) # 配列
a
b
EOT
#=> ["a", "b"]

605:デフォルトの名無しさん
19/03/10 22:14:16.51 SJp/1k7U.net
>>571 Common Lisp
URLリンク(ideone.com)

606:デフォルトの名無しさん
19/03/10 22:19:23.44 KcIurEvX.net
>>579
Java
URLリンク(paiza.io)

607:デフォルトの名無しさん
19/03/10 22:19:48.10 KcIurEvX.net
ごめん間違えた
>>571です

608:デフォルトの名無しさん
19/03/10 23:51:29.55 THpHptm5.net
>>571 Node.js
URLリンク(ideone.com)

609:デフォルトの名無しさん
19/03/11 00:57:47.40 HrDBQthw.net
>>571 Squeak/Pharo Smalltalk。nを複数指定可で
| fn |
fn := [:str :ns |
| ans |
ans := (String new: str size withAll: $*), String cr, str.
ns do: [:n | ans swap: n with: n + str size + 1].
ans
].
fn value: 'abc' value: #(2). "=>
'*b*
a*c' "
fn value: 'abcdef' value: #(2 3 5). "=>
'*bc*e*
a**d*f' "

610:デフォルトの名無しさん
19/03/11 01:39:23.53 +Nlo5Elt.net
>>547
Kotlin
URLリンク(paiza.io)

611:デフォルトの名無しさん
19/03/11 02:41:21.51 +Nlo5Elt.net
>>559
Kotlin
URLリンク(paiza.io)

612:デフォルトの名無しさん
19/03/11 07:59:46.54 hFtMxxmn.net
>>547 Perl5
URLリンク(ideone.com)

push @{$h{lc $_}}, $_ for <STDIN>;
print "@{$_}" for grep{@$_ > 1} values %h;

613:デフォルトの名無しさん
19/03/11 09:18:51.69 D2PSGRy3.net
>>571 Python
def split3(s,p=1) :
 r0= s[:p]+'*'+s[p+1:]
 r1= '*'*p + s[p] + '*'*(len(s)-(p+1))
 return r0+'\n'+r1
print(split3('abcd',2))
print(split3('abc',0))
'''結果
ab*d
**c*
*bc
a**
'''

614:デフォルトの名無しさん
19/03/11 10:48:42.57 u4Ymakq9.net
お題: 下の例のような入力から例の出力のアスキーアートを出力する。それ以外は自由
例:
入力: >>>>>vvvvv<<<<^^^^
出力:
>>>>>
^****v
^****v
^****v
^****v
<<<<v

615:デフォルトの名無しさん
19/03/11 11:00:20.46 JmszPBJl.net
これって一歩目はなんでもいいよね

616:デフォルトの名無しさん
19/03/11 11:35:10.21 AGCERQh7.net
>>571 Io
f := method(s,n,
"*" repeated(s size)atPut(n - 1, s at(n - 1)) println
s asMutable atPut(n - 1, 42)println
)
f("abc",2)
実行結果
*b*
a*c

617:デフォルトの名無しさん
19/03/11 11:45:13.16 +cahZmCl.net
>>602
それ3番目と4番目は必ず1番目と2番目の長さ-1になってるの?

618:デフォルトの名無しさん
19/03/11 11:48:56.08 u4Ymakq9.net
>>603
>>605
そういうめんどくさい質問がこないように、
それ以外は自由と付け加えてある

619:デフォルトの名無しさん
19/03/11 13:45:52.04 +cahZmCl.net
>>606
仕様をきっちり決めないと解釈の違いから沢山の違った回答が出てくる可能性があるのだが、それで良いと。

620:デフォルトの名無しさん
19/03/11 16:12:48.47 TMb+YRHxP
>>571
>>597

Haskellでも複数対応してみた。

main = mapM_ (putStrLn.secret "abcdef" [2,3,5]) [elem,notElem]

secret xs ns = secret' xs 1 ns
   where
      secret' [] _ _ _ = []
      secret' (x:xs) n as f | f n as = x:secret' xs (n + 1) as f
      secret' (_:xs) n as f = '*':secret' xs (n + 1) as f

621:デフォルトの名無しさん
19/03/11 15:42:22.28 7+lrfCi1.net
>>605
そもそも4方向にいくらかずつ進んで四角形で終わりという形とは限らないのでは?
ランダムに方向や距離を生成して既に通った道も上書きするような入力を許容すると考えたっていいはず。

622:デフォルトの名無しさん
19/03/11 16:07:33.07 5vEtkzIB.net
>>606 何でこれ以外の形は許さんと言えないんだ?
自由にどうぞなんて問題じゃ無いだろ。

623:デフォルトの名無しさん
19/03/11 16:18:14.19 ZVqwh3rP.net
>>607,610
こいつらホント掃き溜めのゴミだな

624:デフォルトの名無しさん
19/03/11 16:19:55.06 +cahZmCl.net
>>571
Kotlin
URLリンク(paiza.io)

625:デフォルトの名無しさん
19/03/11 16:25:40.59 +cahZmCl.net
>>609
なるほど。しかしそれならばその事を書いておいて欲しかったな。
>>611
何を作れば良いのかよくわからないから質問しているだけなのだが。それが君にとって何か不都合なのか?

626:デフォルトの名無しさん
19/03/11 16:58:12.79 PGatxMde.net
>>602
出力おかしくねぇ?最初と最後の行は5列だけど
間の行ぜんぶ6列になってるぞ?
出力:
>>>>>
^****v
^****v
^****v
^****v
<<<<v
こうじゃね?
>>>>>
^***v
^***v
^***v
^***v
<<<<v

627:デフォルトの名無しさん
19/03/11 17:14:58.23 +cahZmCl.net
ま、いいや。よくわかんない問題は放っておこう。

628:デフォルトの名無しさん
19/03/11 18:14:45.27 I7wjNxVQq
>>547

Haskell

import Data.Char

main = (mapM_ print.filename) ["a","aB.txt","Ab.txt","xx","cd","cD","CD","f"]

filename [] = []
filename (xs:xss) |length a > 1 = a:(filename.drop (length a)) (xs:xss)
   where
      a = filter ((map toUpper xs ==).map toUpper) (xs:xss)
filename (_:xss) = filename xss

629:デフォルトの名無しさん
19/03/11 19:08:54.88 TMb+YRHxP
ソートするの忘れてた…。

import Data.Char

main = (mapM_ print.filename) ["a","aB.txt","Ab.txt","xx","cd","cD","CD","ab.txt","f"]

filename [] = []
filename (xs:xss) | length a > 1 = a:(filename.drop (length a)) sorted
   where
      a = filter ((map toUpper xs ==).map toUpper) sorted
      sorted = ssort (xs:xss)
filename (_:xss) = filename xss

ssort [] = []
ssort xs = minimum xs:(ssort.delete (minimum xs)) xs

delete _ [] = []
delete n (x:xs) | n == x = xs
delete n (x:xs) = x:delete xs

630:デフォルトの名無しさん
19/03/11 19:49:55.14 TMb+YRHxP
度々ごめん・・・
バグが有った。
そもそもソートとか関係なかった。

import Data.Char

main = (mapM_ print.filename) ["a","aB.txt","Ab.txt","xx","cd","cD","CD","ab.txt","f"]

filename [] = []
filename (xs:xss) | length a > 1 = a:filename b
   where
      a = func (==)
      b = func (/=)
      func f = filter (f (map toUpper xs).map toUpper) (xs:xss)
filename (_:xss) = filename xss

631:デフォルトの名無しさん
19/03/11 19:21:39.70 PGatxMde.net
>>602 javascript
長くなっちった
URLリンク(ideone.com)
入力: <<<<^^^^>>>>>vv<<<<<<<<<<<vvv>>>^^^^^^^>>>>>>>>>>vvvvvv
出力:
***^>>>>>>>>>>
***^*********v
***^**^>>>>>*v
***^**^****v*v
<<<^<<<<<<<v*v
v**^**^******v
v**^**<<<<***v
v>>>**********

632:デフォルトの名無しさん
19/03/11 19:36:33.05 /Vx80pKW.net
お題
m×nマスのチェス盤を考える。
1つのナイトが最も左上のマスにあり、そこから任意の回数動かすことができる。
ナイトが訪れることのできるマスの個数を求めよ。
m=1, n=1
=> 1
m=3, n=3
=> 8 (真ん中のマスを訪れることができない)
m=4, n=4
=> 16

633:デフォルトの名無しさん
19/03/11 19:36:35.88 DXpwYxNa.net
>>619 説明がないと何をどうやってるのかわけわからん。
先ずは入力と出力をどう解釈して作ったのか?
形にも一貫性があるとは思えないけど。
しかしこんなのがどんどん出てきたら、煩わしいだけ。

634:デフォルトの名無しさん
19/03/11 20:02:17.74 JmszPBJl.net
いや、その通りに歩くんだろ

635:デフォルトの名無しさん
19/03/11 20:07:58.88 5vEtkzIB.net
出題通り以外の回答はやめてほしいな。
それ以外の回答をする場合は、解説文も日本語で書いてくれよ。
不慣れなプログラムもあることだろうし、長いプログラムなんて見る気にもならないし、プログラムを見�


636:黷ホわかるというのは無し。



637:デフォルトの名無しさん
19/03/11 21:26:59.93 ALw/TkKR.net
>>623
ソースの中身まではちゃんと確認してないけど、ちゃんと出題通りにできてると思う。
出題の"入力例"通りではないが、複雑な入力パターンに対して正しく動いてそうと思える実行例だと思うぞ。

638:デフォルトの名無しさん
19/03/11 21:31:45.37 1OBeL2+Y.net
>>602 Common Lisp, >>619の移植
URLリンク(ideone.com)

639:デフォルトの名無しさん
19/03/11 22:12:51.52 +V1dboU8.net
>>>v<^^>>
の場合
*^>>
>^>
*<v

640:デフォルトの名無しさん
19/03/11 22:40:32.65 6pdTomDX.net
>>571 octave 複数列指定可能版
URLリンク(ideone.com)
h = @(m, n) cell2mat(arrayfun(@(c, i) {['*'; c] [c; '*']}(1 + (i == n)), m, 1:numel(m)));

h = @(m, n) cell2mat(arrayfun(@(c, i) {['*'; c] [c; '*']}(1 + any(i == n)), m, 1:numel(m)));

641:デフォルトの名無しさん
19/03/11 23:02:42.18 GdRfR4uu.net
以下の整形式の.ini ファイルから、すべての値を取得して、
「セクション名 : キー名 : 値」で表示する
[sec1]
key1=val1
[sec2]
key2=val2

642:デフォルトの名無しさん
19/03/11 23:51:36.77 /Vx80pKW.net
>>628 C++
URLリンク(ideone.com)

643:デフォルトの名無しさん
19/03/12 00:26:56.22 XpXqAgCh.net
>>628 Perl5
while (<DATA>) {
 $s = $1 if /\[(\w+)\]/;
 print "$s:$k:$v\n"
  if ($k, $v) = /(\w+)=(\w+)/;
}
__DATA__
[sec1]
key1=val1
[sec2]
key2=val2

実行結果
~ $ perl 13_623.pl
sec1:key1:val1
sec2:key2:val2

644:デフォルトの名無しさん
19/03/12 00:37:42.27 XpXqAgCh.net
>>630 も少し簡潔に書けるんだった…
while (<DATA>) {
 $s = $1 if /\[(\w+)\]/;
 print "$s:$1:$2\n" if /(\w+)=(\w+)/;
}
__DATA__
[sec1]
key1=val1
[sec2]
key2=val2

645:デフォルトの名無しさん
19/03/12 01:38:34.08 nghHbW0D.net
>>628 javascript(es2018 named capture groups)
`
[sec1]
key1=val1
[sec2]
key2=val2
`.replace(/\[(?<section>.+)\]\n(?<key>.+)=(?<value>.+)\n/g, '$<section>:$<key>:$<value>').trim();
結果:
sec1:key1:val1
sec2:key2:val2

646:デフォルトの名無しさん
19/03/12 05:56:44.85 KPetEW8/.net
>>547
Haskell
import Data.Char
main = (mapM_ print.filename) ["a","aB.txt","Ab.txt","xx","aBc.txt","cd","cD","CD","ab.txt","z"]
filename [] = []
filename (xs:xss)| length a > 1 = a:filename b
where
a = func (==)
b = func (/=)
func f = filter (f (map toUpper xs).map toUpper) (xs:xss)
filename (_:xss) = filename xss

647:デフォルトの名無しさん
19/03/12 17:03:25.03 +VdOvnK/.net
>>620
0 <= m,n <=10億 と仮定して
int64_t cal(int m, int n){
  if( m>n ) swap(m, n);
  if( m<=1 ) return m;
  if( m==2 ) return (n + 1) / 2;
  if( n==3 && m==3) return 8;
  return (int64_t)n * m;
}

648:デフォルトの名無しさん
19/03/12 18:21:10.69 MLSq27aG.net
>>628 Io
f := method(s,
s split("\n\n")map(splitNoEmpties("[","]","\n",=")join(":"))
)

649:デフォルトの名無しさん
19/03/12 18:30:10.82 M/w6PjEF.net
>>624
出題通りなのかどうかがわからんのだが。どう解釈したら出題通りとなるのか?

650:デフォルトの名無しさん
19/03/12 19:26:28.38 mUEXbKn8.net
お題
数列a[i]を考える。
a[0] = p
a[i+1] = q * a[i] + r
[入力]
p q r n
(p,q,r,nは整数)
(0≦p,q,r≦99)
(0≦n≦10^10)
[出力]
a[n] mod 13 を求めよ
1 2 0 8
=> 9 (2^8 mod 13)
1 0 99 0
=> 1
1 2 3 2
=> 0 (a[0]=1, a[1]=2*1+3=5, a[2]=2*5+3=13)
1 3 5 10000000000
=> ?

651:デフォルトの名無しさん
19/03/12 20:52:19.49 2hm/Dong.net
つまらん

652:デフォルトの名無しさん
19/03/12 21:03:21.90 KPetEW8/.net
>>624
>>547に対して、ナチュラルソートされて無くても(普通のソートでも正しい答えが得られるとは限らない)正しい答えを出せるとか、出題者の意図を踏まえながら、意図を超えた範囲もカバーするのはいいんじゃ無いか?
意図を無視するのは論外だが。

653:デフォルトの名無しさん
19/03/12 21:07:56.58 KPetEW8/.net
>>637
マシンパワーがあれば式を入れればいいだけってのはね。。。
解くのに頭使う。解いてみたら案外簡単(アルゴリズムが浮かぶのがキモ)。あえて難しくて最適化の道がある。とかが望ましい。
いあ、無茶振りだろうから、どれか2つ満たせればおkだが。

654:デフォルトの名無しさん
19/03/12 21:12:06.00 KPetEW8/.net
例えば[[1,2,3],[4,5,6],[7,8,9]]みたいな任意のn*nなリスト(または配列)を非破壊的に作れ。とか。

655:デフォルトの名無しさん
19/03/12 21:43:25.40 rf03pH6k.net
>>641
一般的なミューテートするカウンタも使っちゃダメってことかな?

656:623
19/03/12 22:49:08.83 oX4bYoPv.net
>>628
お題を修正
[ ] = の3つは、特別な記号です。
それらを含まない行は、無視して
[sec1]
key1=val1
[sec2]
key2=val2
x=y
>>632
セクション名・キー名・値は、特定の文字列ではありません!
特別な記号以外の、任意の文字列です

657:デフォルトの名無しさん
19/03/12 23:03:23.82 oX4bYoPv.net
お題
現行規格のISBN (ISBN-13) のcheck digit は、JANコードと同じく、
「モジュラス10 ウェイト3・1(モジュラス10 ウェイト3)」という計算法にて算出される
一番右側の? の所のcheck digitを除いて、数字以外は無視して、
一番左側の桁から順に、1、3、1、3…を掛けて、それらの和を取る。
和を10で割って出た余りを、10から引く。
ただし、10で割って出た余りの下1桁が0の場合は、check digitを0とする
ISBN 978-4-10-109205-?
9×1 + 7×3 + 8×1 + 4×3 + 1×1 + 0×3 + 1×1 + 0×3 + 9×1 + 2×3 + 0×1 + 5×3
= 9 + 21 + 8 + 12 + 1 + 0 + 1 + 0 + 9 + 6 + 0 + 15 = 82
82 ÷ 10 = 8 あまり 2
10 - 2 = 8
幾つかのISBN-13 で、計算してみて!

658:デフォルトの名無しさん
19/03/12 23:07:31.93 +VdOvnK/.net
>>637
 URLリンク(ideone.com)  c++
 小さい数値は力技(bf2)で確認してみたが……

659:デフォルトの名無しさん
19/03/12 23:27:43.44 LDiZRGdZ.net
>>602 Common Lisp
>>625のリファクタリング
ついでに * を空白に、開始地点を A、終了地点を Z に�


660:オてみた https://ideone.com/zMHal6 Python https://pastebin.com/NAGHLtcu 実行結果 https://webmshare.com/Ma3gZ



661:デフォルトの名無しさん
19/03/12 23:42:34.93 2FAQzMGK.net
>>637 C
URLリンク(ideone.com)
エクセルとかで実際に数列を計算してみると、長さ12(剰余の数-1)以下の周期になるっぽいのでそれで求められる。
普通に計算するとq * a[i] + r はどんどん大きくなるけど、
毎回 (q * a[i] + r) mod 13としても、計算に影響はないようなので、オーバーフローもせずに計算できる。
だたし、数学的に正しいか保証しかねるが。

662:デフォルトの名無しさん
19/03/13 00:12:22.73 rGhbMCbu.net
>>645
12 0 11 1
=> 11
というコーナーケースが…

663:デフォルトの名無しさん
19/03/13 00:29:04.16 Eq+ygVqk.net
>>648
確かに、
コメントアウト(bf2)するときに誤ってしまったようだ、
("if(n==0)" だったのだが、いらないなぁ)
どっちにしろ、0や1のテストは、やってない

664:デフォルトの名無しさん
19/03/13 00:51:17.73 vPzmbHWs.net
>>642
だめ。
そこが関数型言語と手続き型言語の考え方の大きな違いだし。
皮肉にも?それ作った時、入門書の関数より考え方の違いが分かった。

665:デフォルトの名無しさん
19/03/13 00:54:41.38 bUFEpZHr.net
>>643
> セクション名・キー名・値は、特定の文字列ではありません!
> 特別な記号以外の、任意の文字列です
えぇ…
入力:
[あああ]
いいい=ううう
[えええ]
おおお=かかか
出力:
あああ:いいい:ううう
えええ:おおお:かかか
少なくとも任意の文字列には対応してるじゃん。不当指摘だ!

666:デフォルトの名無しさん
19/03/13 01:18:15.16 FktqEJYT.net
>>650 javascript
const seqSqArr = n => Array.from({length: n}).map((v, i) => Array.from({length: n}, (v, j) => n * i + j + 1));
console.log(seqSqArr(3));
//=> [[1,2,3],[4,5,6],[7,8,9]]
console.log(seqSqArr(7));
//=> [[1,2,3,4,5,6,7],[8,9,10,11,12,13,14],[15,16,17,18,19,20,21],[22,23,24,25,26,27,28],[29,30,31,32,33,34,35],[36,37,38,39,40,41,42],[43,44,45,46,47,48,49]]

667:623
19/03/13 02:39:20.04 ZImJqTUY.net
>>651
スマン。漏れの間違い!
key, val などの特定の文字列を置換しているのかと、勘違いしていた

668:デフォルトの名無しさん
19/03/13 05:11:02.02 36vLAC/n.net
>>644 J
f =: 3 : 0
10 | 10 - 10 | +/ (12 $ 1 3) * "."0 }: y -. '-'
)
f '978-4-10-109205-8'
8
f '978-4873115870'
0

669:デフォルトの名無しさん
19/03/13 06:35:32.94 vPzmbHWs.net
>>641,642,650,652
Haskell
main = ps 3 >> putStrLn "" >> ps 7
where ps = print.seqSqList
seqSqList n = (take n.iterate (map (+ n))) [1..n]
out:
[[1,2,3],[4,5,6],[7,8,9]]
[[1,2,3,4,5,6,7],[8,9,10,11,12,13,14],[15,16,17,18,19,20,21],[22,23,24,25,26,27,28],[29,30,31,32,33,34,35],[36,37,38,39,40,41,42],[43,44,45,46,47,48,49]]

670:デフォルトの名無しさん
19/03/13 20:01:04.25 loIc2/nm.net
>>628 ruby
URLリンク(ideone.com)

671:デフォルトの名無しさん
19/03/13 22:22:09.99 H95Q/dPG.net
こうかな?
;; Common Lisp
(defun seq-sq-list (n)
      (labels ((sub (i r)
           (if (zerop i)
             r
             (sub (1- i) (if (zerop (mod i n))
                     (cons (list i) r)
                     (cons (cons i (car r)) (cdr r)))))))
       (sub (* n n) nil)))

672:さまよえる蟻人間
19/03/13 23:29:50.59 KwyST1w4.net
お題: ピリオド区切りの二つのバージョン番号を比較し、大小関係を判定した結果を-1, 0, 1のいずれとして�


673:ヤせ。 0.1.2 > 0.0: 1 1.2.3 < 1.3: -1 0.0.0 == 0.0: 0



674:デフォルトの名無しさん
19/03/14 00:08:08.19 TPG8S2ma.net
>>658
手抜きHaskell
main = mapM_ pc $ [("0.1.2", "0.0"), ("1.2.3", "1.3"), ("0.0.0", "0.0")]
where pc = print.uncurry mycompare
mycompare "0.0.0" "0.0" = 0
mycompare "0.0" "0.0.0" = 0
mycompare xs ys |xs `compare` ys == EQ = 0
|xs `compare` ys == GT = 1
|xs `compare` ys == LT = -1

675:デフォルトの名無しさん
19/03/14 01:08:57.36 vRIsxo2e.net
>>602 Perl5
$s = '>>>>>vvvvv<<<<^^^^';
($i, $y) = (0, 0);
for (split'',$s) {
 $i++ if />/;
 $i-- if /</;
 $j++ if /v/;
 $j-- if /\^/;
 push @t, [$i, $j, $_];
}
use List::Util qw{min max};
($i, $j) = (min(map{$$_[0]} @t), min(map{$$_[1]} @t));
$$_[0] -= $i, $$_[1] -= $j for @t;
($i, $j) = (max(map{$$_[0]} @t), max(map{$$_[1]} @t));
push @m, [('*')x($i + 1)] for 0..$j;
$m[$$_[1]][$$_[0]] = $$_[2] for @t;
use feature say;
say @$_ for @m;

実行結果
~ $ perl 13_601.pl
>>>>>
^***v
^***v
^***v
^***v
<<<<v

676:デフォルトの名無しさん
19/03/14 01:16:23.50 vRIsxo2e.net
>>643 Perl5
$r = qr/[^][=]/;
while (<DATA>) {
 chomp;
 $s = $1 if /\[($r+)\]/;
 print "$s:$1:$2\n" if /($r+)=($r+)/;
}
__DATA__
[sec1]
key1=val1
[sec2]
key2=val2

実行結果
~ $ perl 13_638.pl
sec1:key1:val1
sec2:key2:val2

677:デフォルトの名無しさん
19/03/14 06:43:00.64 3EvgP48J.net
>>658
0.0.1 > 0.0 でいいのか?

678:さまよえる蟻人間
19/03/14 07:26:20.10 1+g2CCuw.net
>>662
ない桁はゼロと見なす。

679:デフォルトの名無しさん
19/03/14 10:42:18.54 YiVNNcx0.net
>>658 javascript
const vComp = (a, b) => {
const [semA, semB] = [a, b].map(v => {
const {major, minor = 0, patch = 0} = /(?<major>\d+)(\.(?<minor>\d+)(\.(?<patch>\d+))?)?/.exec(v).groups;
return {major, minor, patch};
});
const majorComp = semA.major - semB.major;
if (majorComp) return Math.sign(majorComp);
const minorComp = semA.minor - semB.minor;
if (minorComp) return Math.sign(minorComp);
const patchComp = semA.patch - semB.patch;
return Math.sign(patchComp);
};
console.log(vComp('0.1.2', '0.0'));
console.log(vComp('1.2.3', '1.3'));
console.log(vComp('0.0.0', '0.0'));
結果:
1
-1
0
(おまけ)ソート:
console.log(['0.1.2', '0.0', '1.2.3', '1.3', '0.0.0', '0.0'].sort(vComp));
結果:
["0.0", "0.0.0", "0.0", "0.1.2", "1.2.3", "1.3"]

680:さまよえる蟻人間
19/03/14 10:59:38.01 PwP2txgq.net
>>658
大小関係の定義をまじめに考えましょう。
>>664
JavaScriptならsplit使えるはず。桁数の制限は要らない。

681:デフォルトの名無しさん
19/03/14 11:23:19.67 YiVNNcx0.net
ごめん勝手にsemverかと思い込んでた

682:さまよえる蟻人間
19/03/14 11:35:04.68 1+g2CCuw.net
LaTeXのバージョンシステムはちょっと特殊で、円周率に近付くようになってる。この場合は文字列として比較しないといけない。
一般的なバージョンシステムはドットで区切られた整数を先頭から順に互いに比較して大小関係を定義する。
まれにアルファとかベータとか「限定版」とか訳のわからない文字列が付くことがあるが、これは常識がなければ大小関係を機械的に判定するのは難しい。

683:さまよえる蟻人間
19/03/14 11:47:43.06 1+g2CCuw.net
一番確実なバージョン大小判定方法は、リリースごとに年月日とバージョン情報を記録しておくことだ。

684:デフォルトの名無しさん
19/03/14 13:52:35.97 uKED8jms.net
>>658
Perl
URLリンク(paiza.io)

685:デフォルトの名無しさん
19/03/14 15:56:35.04 TPG8S2ma.net
>>547
Haskell
内包表記の方が何をやってるか分かり易いと気付いて書き換えた。
import Data.Char
main = (mapM_ print.filename) ["aB.txt","Ab.txt","xx","cd","cD","CD","ab.txt"]
filename [] = []
filename (xs:xss)| length a > 1 = a:filename b
where
a = func (==)
b = func (/=)
func f = [xs' | xs' <-


686: (xs:xss), map toLower xs `f` map toLower xs'] filename (_:xss) = filename xss



687:デフォルトの名無しさん
19/03/14 18:00:35.68 38t26SL0.net
お題: 何も出力しないプログラム自身のコードをソートするとhello worldを出力するプログラムを作れ

688:デフォルトの名無しさん
19/03/14 18:07:12.84 YPV07ntD.net
>>658 # Python
def cmp(v0,v1):
 if v0==v1: return 0
 else: return 1 if (v0 > v1) else -1
print(cmp('1.2.3','1.2') , cmp('1.2.3','1.1.1') ,
cmp('1.1', '1.1') ,
cmp('1.2.3','1.3')
)
# 1 1 0 -1

689:さまよえる蟻人間
19/03/14 18:11:49.83 1+g2CCuw.net
>>672
バージョン番号の各整数の数字は2個以上になることがある。'10.0'と'9.1'を比較せよ。

690:デフォルトの名無しさん
19/03/14 18:14:06.49 YPV07ntD.net
>>672
print( cmp('1.1.0', '1.1') )
# 1

691:デフォルトの名無しさん
19/03/14 18:32:38.72 YPV07ntD.net
>>672 訂正 Python
def cmp(v0,v1):
 v0 = list( map(int , v0.split('.') ) )
 v1 = list( map(int , v1.split('.') ) )
 if v0==v1: return 0
 else: return 1 if (v0 > v1) else -1
print(cmp('1.2.3','1.2') , cmp('1.2.3','1.1.1') ,
cmp('1.1.0', '1.1') ,
cmp('10.0','9.1') ,
cmp('1.1', '1.1') ,
cmp('1.2.3','1.3') ,
cmp('1.1', '1.1.0') ,
)
# 1 1 1 1 0 -1 -1

692:さまよえる蟻人間
19/03/14 18:44:00.25 1+g2CCuw.net
>>675
残念だが不正解。比較できる桁がなければゼロと見なす、すなわち、2.0.0は2に等しいと見なす決まりがある。

693:デフォルトの名無しさん
19/03/14 18:50:17.55 dvZ8z+Z0.net
>>658 octave
URLリンク(ideone.com)

694:デフォルトの名無しさん
19/03/14 18:58:38.18 dvZ8z+Z0.net
お題:フィボナッチ数列を最初の10個表示せよ
ruby
URLリンク(ideone.com)
perl6
URLリンク(ideone.com)

695:さまよえる蟻人間
19/03/14 18:59:00.09 1+g2CCuw.net
ソフトウェア開発におけるバージョン管理は、製造メーカーにおける型番管理と同じくらい重要である。
検査逃れのために型番や履歴をごまかしたり、型番管理がなっていないメーカーはメーカー失格である。
インターネット全盛の現在では、型番はウェブ検索しやすいものでなければ、国際競争に負けてしまう。

696:デフォルトの名無しさん
19/03/14 18:59:16.90 38t26SL0.net
お題: 3つの数の最小値を1回の分岐で決めろ!

697:デフォルトの名無しさん
19/03/14 19:55:29.27 YiVNNcx0.net
>>665 javascript
const vComp = (a, b) => {
const verA = a.split`.`;
const verB = b.split`.`;
const shorter = verA.length - verB.length < 0 ? verA : verB;
const cmps = shorter.map((v, i) => Math.sign(verA[i] - verB[i]));
return cmps.reduce((acc, v, i) => Math.sign(acc + v * 2 ** (shorter.length - i)), 0);
};
console.log(vComp('0.1.2', '0.0'));
console.log(vComp('1.2.3', '1.3'));
console.log(vComp('0.0.0', '0.0'));
結果:
1
-1
0
(おまけ)ソート:
console.log(['0.1.2', '0.0', '1.2.3', '1.3', '0.0.0', '0.0'].sort(vComp));
結果:
["0.0", "0.0.0", "0.0", "0.1.2", "1.2.3", "1.3"]

698:デフォルトの名無しさん
19/03/14 19:59:51.70 YiVNNcx0.net
あっ間違えた
家帰ってから直す

699:デフォルトの名無しさん
19/03/14 20:14:25.92 vvVzV1YI.net
>>676 どこにそんな決まりがあるの?
普通 ver.1 が出て、その後ver.1.0 が出れば、ver.1.0 の方が新しいのは明らかだろ。
総称として、ver.1という場合もあるが、その場合はver.1.9も含まれる。

700:デフォルトの名無しさん
19/03/14 20:14:59.41 ko69m/9G.net
見つけた
RPM::VersionSort - RPM version sorting algorithm, in perl XS - metacpan.org
URLリンク(metacpan.org)

701:デフォルトの名無しさん
19/03/14 20:16:24.45 vvVzV1YI.net
とにかくバージョン番号が異なれば別のバージョンとみなすのが普通だろ。
同じと思う方がおかしい。

702:デフォルトの名無しさん
19/03/14 20:16:49.16 0tbf1s3D.net
お題:“木”という漢字を使って以下のようなフラクタル図形を描け
n=0

n=1
-木
木木
n=2
---木
--木木
-木--木
木木木木
n=3
-------木
------木木
-----木--木
----木木木木
---木------木
--木木----木木
-木--木--木--木
木木木木木木木木
※ハイフンはスペースだと思ってください

703:さまよえる蟻人間
19/03/14 20:26:23.57 1+g2CCuw.net
>>683
Win32の固定幅のバージョン情報では4つの整数をドットで区切ったものを使用する。VerInstallFile関数はバージョン番号を比較する。0.0と0.0.0.0が違うバージョンだとアウトだ。

704:デフォルトの名無しさん
19/03/14 20:45:22.76 vvVzV1YI.net
>>687 そんなローカルールなんて知るかよ。 もしそういう意図なら問題を訂正しろよ。 いちいち誰かのいちゃもんに付き合ってる暇はない。

705:デフォルトの名無しさん
19/03/14 20:52:19.11 YiVNNcx0.net
>>665 の修正
const vComp = (a, b) => {
let verA = a.split `.`;
let verB = b.split `.`;
const len = Math.max(verA.length, verB.length);
verA = [...verA, ...'0'.repeat(len - verA.length)];
verB = [...verB, ...'0'.repeat(len - verB.length)];
const cmps = verA.map((v, i) => Math.sign(verA[i] - verB[i]));
return Math.sign(cmps.reduce((acc, v, i) => acc + v * 2 ** (len - i)), 0);
};
console.log(vComp('0.1.2', '0.0'));
console.log(vComp('1.2.3', '1.3'));
console.log(vComp('0.0.0', '0.0'));
console.log(['0.1.2', '0.0', '1.2.3', '1.3', '0.0.0', '0.0'].sort(vComp));
//いいかげん結果省略

706:デフォルトの名無しさん
19/03/14 22:10:39.99 8oAE3RnG.net
>>688
例に0.0.0と0.0が等しいって書いてあるんだが

707:デフォルトの名無しさん
19/03/14 23:16:14.88 3EvgP48J.net
>>688
> いちいち誰かのいちゃもんに付き合ってる暇はない。
ならスルーしろよ
お前の頓珍漢な解釈なんて要らんし

708:デフォルトの名無しさん
19/03/14 23:41:35.78 nI5lwjDU.net
>>658 Squeak Smalltalk
| fn |
fn := [:strs | (strs collect: [:str | (str subStrings: '.') polynomialEval: 1/1e4]) reduce: #<=>].
fn value: #('0.1.2' '0.0'). "=> 1 "
fn value: #('1.2.3' '1.3'). "=> -1 "
fn value: #('0.0.0' '0.0'). "=> 0 "

709:デフォルトの名無しさん
19/03/15 00:00:24.31 27sSd34q.net
>>658 Perl5
use feature current_sub;
@is = (['0.1.2', '0.0'], ['1.2.3', '1.3'], ['0.0.0', '0.0']);
for (@is) {
 ($l, $r) = @$_;
 @l = split'\.', $l;
 @r = split'\.', $r;
 $z = sub {
  my $a = shift @l;
  my $b = shift @r;
  if (defined $a or defined $b) {
   $a //= 0;
   $b //= 0;
   $a <=> $b or __SUB__->()
  } else {
   0
  }
 }->();
 %d = (-1 => ' <', 0 => '==', 1 => '> ');
 print "$l $d{$z} $r : $z\n";
}
実行結果
~ $ perl 13_653.pl
0.1.2 > 0.0 : 1
1.2.3 < 1.3 : -1
0.0.0 == 0.0 : 0

710:デフォルトの名無しさん
19/03/15 00:10:49.43 27sSd34q.net
>>678 Perl5
@f = (0, 1);
push @f, $f[-2] + $f[-1] while @f < 10;
print "@f\n";
実行結果
~ $ perl 13_673_fib10.pl
0 1 1 2 3 5 8 13 21 34

Prel6、いいな…

711:
19/03/15 00:29:52.08 LCz/5Veu.net
>>680
>1回の分岐で決めろ!
URLリンク(ideone.com)
は題意を満たしていますか?

712:デフォルトの名無しさん
19/03/15 00:45:04.99 GUP5tEyB.net
2回分岐してるように見えるが

713:デフォルトの名無しさん
19/03/15 00:50:01.20 ltf0XXfV.net
>>671 I
行単位で昇順にソートする場合
exit
"hello world" println
文字単位のソートの場合は難しそう。

714:デフォルトの名無しさん
19/03/15 00:52:36.60 J+j6Qj2a.net
>>680 Java
URLリンク(ideone.com)
0回じゃお題満たしてないからだめです?

715:デフォルトの名無しさん
19/03/15 01:15:34.20 T0clmjRI.net
>>678 Squeak Smalltalk
| fibGen |
fibGen := [:a :b | Generator on: [:g | [g yield: a. b := a + b. a := b - a] repeat]].
(fibGen value: 0 value: 1) next: 10.
"=> an OrderedCollection(0 1 1 2 3 5 8 13 21 34) "

716:デフォルトの名無しさん
19/03/15 01:34:55.02 4EriVrie.net
>>686 Squeak Smalltalk
| sp fn |
sp := $-. "sp := Character space."
fn := [:n |
| tree |
tree := [:lines :count |
(lines collectWithIndex: [:line :idx |
line, (String new: idx - 1 * 2 withAll: sp), line
]), lines
].
(((1 to: n) inject: #('木') into: tree) collectWithIndex: [:line :idx |
(String new: idx - 1 withAll: sp), line
]) reversed asStringWithCr
].
fn value: 0. "=>
'木' "
fn value: 1. "=>
'-木
木木' "
fn value: 2. "=>
'---木
--木木
-木--木
木木木木' "

717:デフォルトの名無しさん
19/03/15 01:51:53.98 Fj/79Ht+.net
>>678 javascript
const take = n => function*(iterable) {
const iterator = iterable[Symbol.iterator]();
for (let i = 0; i < n; i++) {
const {value, done} = iterator.next();
if (done) break;
yield value;
}
};
const fibo = function*() {
const memo = [0n, 1n];
const fib = n => n in memo ? memo[n] : memo[n] = fib(n - 2) + fib(n - 1);
for(let i = 0; ; i++) yield fib(i);
}();
console.log([...take(10)(fibo)]);
結果:
[0n, 1n, 1n, 2n, 3n, 5n, 8n, 13n, 21n, 34n]

718:デフォルトの名無しさん
19/03/15 08:40:18.32 VdqhZ9XO.net
>>678 Common Lisp
URLリンク(ideone.com)

719:デフォルトの名無しさん
19/03/15 10:29:40.47 4uXCwYPV.net
>>701
よく考えたら配列で出力する必要もなかった
console.log(...take(10)(fibo));
結果:
0 1 1 2 3 5 8 13 21 34

720:デフォルトの名無しさん
19/03/15 10:50:31.62 ltf0XXfV.net
>>671 Lua
a=ture
a=a or print("hello world")

721:デフォルトの名無しさん
19/03/15 10:54:07.06 EVqxIhVf.net
>>678
Haskell
main = (print.take 10) fibs
where fibs = 0:1:zipWith (+) fibs (tail fibs)


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch