[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 01/09 01:44 / Filesize : 338 KB / Number-of Response : 1032
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

プログラミングのお題スレ Part18



1 名前:デフォルトの名無しさん mailto:sage [2020/07/14(火) 13:53:46 ID:jW5p6F/e.net]
プログラミングのお題スレです。

【出題と回答例】
1 名前:デフォルトの名無しさん
  お題:お題本文

2 名前:デフォルトの名無しさん
  >>1 使用言語
  回答本文
  結果がある場合はそれも

【ソースコードが長くなったら】 (オンラインでコードを実行できる)
https://ideone.com/
codepad.org/
compileonline.com/
rextester.com/runcode
https://runnable.com/
https://code.hackerearth.com/
melpon.org/wandbox
https://paiza.io/

宿題は宿題スレがあるのでそちらへ。

※前スレ
プログラミングのお題スレ Part17
https://mevius.5ch.net/test/read.cgi/tech/1584031367/

2 名前:デフォルトの名無しさん mailto:sage [2020/07/14(火) 21:06:03.54 ID:5wYEuLp1.net]
%W[> > 1 \ o t s u].each(&:display)

# => >>1 otsu

3 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/07/16(木) 06:35:35 ID:Tv2xtriA.net]
前スレ996の三次元タートルグラフィックス。
懸賞WebMoney5000円です。早い者勝ち。

4 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 07:00:51 ID:Rw1l0Cvs.net]
>>3
スレチ
消えろ

5 名前:蟻人間 mailto:sage [2020/07/16(木) 07:12:16.72 ID:Tv2xtriA.net]
宿題ではありません。

6 名前:デフォルトの名無しさん [2020/07/16(木) 11:35:02.71 ID:6HbDCmR4.net]
普通にドン引き
なんか作って欲しいツールの作成依頼スレになりそう
出題者は解答を持ち合わせておくべきだな

7 名前:デフォルトの名無しさん [2020/07/16(木) 12:31:42.58 ID:II7vBdwc.net]
短期間に複数の出題をするのはいかがなものか
前の出題を締め切ってからするべきだろう

中には解答に数ヶ月を要するものもあるので

itest.5ch.net/mevius/test/read.cgi/tech/1584031367/10
>0010 蟻人間 ◆T6xkBnTXz7B0 2020/03/15 04:20:
>10
>お題: 一辺2000メートルの正方形の平面上にランダムに動く物体5個がある。

itest.5ch.net/mevius/test/read.cgi/tech/1584031367/801
>0801 デフォルトの名無しさん 2020/06/03 15:52:13
>10 js
>能力低すぎて3か月もかかってしまった
>https://codepen.io/as124680/full/Bajapro





出題者はちゃんと評価と解答の解説を責任持って投稿下さい

8 名前:蟻人間 mailto:sage [2020/07/16(木) 17:15:09.36 ID:Tv2xtriA.net]
【防衛システムに関する解説】
この出題は平面上の幾何学的な事象として論じられる。よって数学のベクトルの知識が必須である。
自機は中央にあり動かないのであるから、これを原点としてもよい。レーダー電波は放射状の電磁波であり、明らかに光速で直進する。
レーダーの直線の方程式は角度thetaのときr*(cos(theta), sin(theta))と書ける。すなわちレーダー角に触れれば探知される。
敵機はアニメーションの原理で動く。よってタイマーを使って一定時間ごとに位置を変化させれば動いているように見える。
位置や速度に特に指定はない。よって乱数などで決めることになる。
続く。

9 名前:蟻人間 mailto:sage [2020/07/16(木) 17:24:04.86 ID:Tv2xtriA.net]
それぞれの敵機の位置ベクトルと速度ベクトルがあり、それらは時間の変数によって変化する。敵機の速度ベクトルを推定するために、位置ベクトルを記録せねばならない。
レーダーは360度回るのであるから、隠れ場所がなければ特定の角度となり、必ず見つかる。位置は一定時間ごとに必ずわかるはずである。
位置の変位を経過時間で割れば速度ベクトルが推定できる。位置がわかれば3平方の定理で距離がわかる。距離が近ければミサイルを
発射せねばなるまい。ミサイルを撃つ方向はatan2関数を使用すれば求められる。
【解説終わり】

10 名前:蟻人間 mailto:sage [2020/07/16(木) 17:36:30.92 ID:Tv2xtriA.net]
これでいいか?



11 名前:蟻人間 mailto:sage [2020/07/16(木) 18:19:03.86 ID:Tv2xtriA.net]
【SQLサイン関数出題の解説】
ウェブや深層学習などの進展につれて、今や巨大データの扱いは、ありふれた作業となってきている。巨大データを扱う場合、データベースを使うとアクセス能力や利便性を向上できる。中でも特に一般的なSQLについて出題することにした。

しかし、SQLは方言が多くて、細かい調整はマニュアルを読まないとわからないことが多い。さらに、アクセス方法やインターフェイスが多様すぎて、こちらで解析するのは困難である。

よって採点は行わない。各自で自ら結果を確認して採点してほしい。SQLを始めるなら、まず入門書から入って、次に使用するデータベースのマニュアルを読んでもらいたい。
続く。

12 名前:蟻人間 mailto:sage [2020/07/16(木) 18:37:28.47 ID:Tv2xtriA.net]
「精度は構わない」といったはずだ。最悪でもnearest neighborhoodを選んでも正解にした。サイン関数は波形のグラフをとる代表的な三角関数だから、高校生以上なら知ってるはずだ、知名度は高いと判断した。 周期性があるので有限のテーブル(表)で近似できる。

「SQLのみを使う」とも言っていない。SQLの外部でサイン関数の数値を計算しても正解とする。しかしテーブルは作成しなければならない。すでに作成済みの場合に備えてまず「DROP TABLE ...」する。

次にテーブルの仕様を設計して「CREATE TABLE ...」する。細かいことは...で省略するが、わからないときは入門書かマニュアルを参照して下さいな。

テーブルの行を追加するには「INSERT INTO ...」する。テーブルからサイン関数の値を問い合わせる場合は「SELECT ... FROM ... WHERE ...」する。これが実際のサイン関数の値に常識的に近ければ正解とする。
【解説終わり】

13 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 18:53:35.79 ID:CQUy/8Mn.net]
解説と解説に沿った解答例のコードを貼れ

14 名前:デフォルトの名無しさん [2020/07/16(木) 20:27:21 ID:6HbDCmR4.net]
>>12
-πから+πまでのsin関数表を元に-∞から+∞までのsin関数をNN法を使って完成させろという意味だったのか

15 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 20:37:51.51 ID:Zj8FcZKn.net]
精度は構わないなら
0, 1, -1 の3択でも正解か

16 名前:蟻人間 mailto:sage [2020/07/16(木) 21:05:05.23 ID:Tv2xtriA.net]
>>8
訂正。
(誤) 方程式はr*(cos(theta), sin(theta))と書ける。
(正) 方程式は(x, y) == r*(cos(theta), sin(theta))と書ける。

17 名前:デフォルトの名無しさん [2020/07/16(木) 21:10:19.03 ID:6HbDCmR4.net]
提出済みのコードに
x_hat%(2*π)-π
を加えれば絶対値が大きな任意の数にも対応出来る

18 名前:デフォルトの名無しさん [2020/07/16(木) 21:11:26.01 ID:6HbDCmR4.net]
>>17
はsin関数の問題の話ね

19 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 21:27:56.16 ID:Zj8FcZKn.net]
>>8
敵機?
ランダムに動く物体でしょ
慣性が働くとも書いてないし連続で動くとも書いてない
各瞬間ランダム位置に出現なのかもしれない

>>9
ランダムに動く物体5個を区別出来るなんて書いてない
距離と方向がわかるとだけ

予測した位置と移動速度、移動方向から推測してミサイルを打つ方向を決める必要がある
その方向決めという重要な部分が書いてない

0点

20 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 21:34:34.55 ID:Rw1l0Cvs.net]
クソコテはどっちも出題がクソ
存在もクソ



21 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 21:44:35.29 ID:Zj8FcZKn.net]
>>17
任意のは言い過ぎ
値が大きいと有効桁ゼロになる

精度は問わないといっても有効桁ゼロはさすがにダメと思う

22 名前:蟻人間 mailto:sage [2020/07/16(木) 21:54:34.68 ID:Tv2xtriA.net]
物体の現在位置: (px, py)
物体の推定速度: (vx, vy)
ミサイルの速さ: mv
距離:sqrt(px**2+py**2)
到達にかかる時間: t_star==sqrt(px**2+py**2)/mv
到達までにかかる時間を加味した物体の予想位置:
(px+t_star*vx, py+t_star*vy)
ここまでの計算を繰り返し、誤差を減少させる。
結果の衝突予想位置にatan2に施すとミサイルの発射方向が得られる。

23 名前:デフォルトの名無しさん [2020/07/16(木) 22:05:54.70 ID:6HbDCmR4.net]
>>21
はいすみません
x_hatがπ以上の正の場合
x_hatが-π以下の負の場合
それ以外の場合で式を分ける必要がありそう

24 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 22:06:42.91 ID:Zj8FcZKn.net]
>>22
頭悪い方法ですね

25 名前:蟻人間 mailto:sage [2020/07/16(木) 22:09:47.34 ID:Tv2xtriA.net]
スマートな方法は軍事秘密なんだよ


(方程式を使う)

26 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 22:28:50.69 ID:Zj8FcZKn.net]
簡単な二次方程式になるわけだけど

27 名前:蟻人間 mailto:sage [2020/07/16(木) 22:32:18.70 ID:Tv2xtriA.net]
昔はモンキーハンティングとかのシミュレーションやったよ

28 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 22:34:22.52 ID:Zj8FcZKn.net]
頭悪い方法で?

29 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 22:35:58.48 ID:Zj8FcZKn.net]
>>22から頭の悪さがにじみ出てる

30 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 22:36:41.77 ID:Rw1l0Cvs.net]
頭悪いのがにじみ出てて読んでてイライラする



31 名前:蟻人間 mailto:sage [2020/07/16(木) 22:37:12.00 ID:Tv2xtriA.net]
他に剛体球の衝突とか、太陽系の表示とか、万有引力とか。

32 名前:蟻人間 mailto:sage [2020/07/16(木) 23:19:59.45 ID:Tv2xtriA.net]
高校レベルの数学でごめんね.

v:ミサイルの速さ。
d:ミサイルの方向ベクトル。
t: 時刻。
P: 物体の現在位置。
V: 物体の推定速度。
方程式v*d*t==P+V*t.
移項して
(v*d - V)*t==P.
t==P・(v*d - V)/||v*d - V||**2.

33 名前:デフォルトの名無しさん [2020/07/17(金) 04:33:22 ID:MbWzFU1J.net]
>>17
訂正

まず、0〜2*πのsin関数表を作成する
その後、
x_hat>=0 の場合: x_hat%(2*π)
x_hat<0の場合: 2*π + x_hat%(-2*π)
という式でx_hatを変換して上書きする

34 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 06:25:20.74 ID:CFzyXZw3.net]
>>32
本当頭悪いね
それでどうやって解くつもり?
高校生ならもっとスマートに解く

35 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 08:57:31 ID:ICqzduEx.net]
解答側だと頭悪いと煽られるから出題側に回ってたわけか
まあ出題も頭悪そうだったが

36 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 09:13:31 ID:TqoFz7RF.net]
回答例用意してなくても出題していいと思う
でもニッチすぎる問題で知識ひけらかしてるみたいな出題は例出してくれ

37 名前:蟻人間 mailto:sage [2020/07/17(金) 10:03:37.90 ID:+x+SJT9l.net]
P + V*t==v*d*t.
二乗すればdが消えて
|P|**2 + 2*P・V*t + |V|**2*t**2 == (v*t)**2.
これはtの二次方程式であるから整理して解の公式で解ける。
t<0のときは過去になるので除外する。

38 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 10:05:01.15 ID:2gsvlStU.net]
>>1 スレ一覧

1: https://toro.5ch.net/test/read.cgi/tech/1354393458/
2: https://toro.5ch.net/test/read.cgi/tech/1357191974/
3: https://peace.5ch.net/test/read.cgi/tech/1390525149/
4: https://peace.5ch.net/test/read.cgi/tech/1402622093/
5: https://peace.5ch.net/test/read.cgi/tech/1411227287/
6: https://peace.5ch.net/test/read.cgi/tech/1418278634/
7: https://peace.5ch.net/test/read.cgi/tech/1429195275/
8: echo.5ch.net/test/read.cgi/tech/1444216746/
9: https://mevius.5ch.net/test/read.cgi/tech/1480579110/
10: https://mevius.5ch.net/test/read.cgi/tech/1514772904/
11: https://mevius.5ch.net/test/read.cgi/tech/1524570314/
12: https://mevius.5ch.net/test/read.cgi/tech/1538096947/
13: https://mevius.5ch.net/test/read.cgi/tech/1549160513/
14: https://mevius.5ch.net/test/read.cgi/tech/1558168409/
15: https://mevius.5ch.net/test/read.cgi/tech/1564310397/
16: https://mevius.5ch.net/test/read.cgi/tech/1573948822/
17: https://mevius.5ch.net/test/read.cgi/tech/1584031367/

39 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 10:57:50 ID:IMrokyul.net]
>>37
えらい時間がかかったね
君、出題者だよね?

40 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/07/17(金) 11:00:53 ID:+x+SJT9l.net]
三次元タートルで臓器を描画したら、レオナルド・ダ・ヴィンチのような天才になれるかもよ。
今、3Dプリンタのブームで三次元タートルグラフィックスは需要があるから、面白いことになるよ。



41 名前:蟻人間 mailto:sage [2020/07/17(金) 11:24:00.61 ID:+x+SJT9l.net]
臓器売買をなくすには、臓器を作ればいい。
ふふん。

42 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 11:55:47.46 ID:vGVdpt19.net]
>>37
で、5個の物体の

43 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 11:56:18.93 ID:vGVdpt19.net]
区別はどうするの?

44 名前:蟻人間 mailto:sage [2020/07/17(金) 12:50:28.20 ID:+x+SJT9l.net]
レーダー角の順番に物体をソートし、各物体に番号を付ける。レーダー角において物体が重なれば重複する恐れがあるが、とくに問題ではない。重複した物体が離れたときに、新規の物体の出現と見なせばいい。

前回と前々回の観測により、位置と速度が推測できる。次に予想される出現位置に一番近い物体を選択し、番号を関連付ければ同定できる。

45 名前:デフォルトの名無しさん [2020/07/17(金) 13:19:51.15 ID:MbWzFU1J.net]
>>36
チューリングマシンは現場でバリバリ使える調べて覚えるだけの価値がある技術だ
規則が連続している場合上の方を取ってくるとか2つの数値を比較して大小関係をルールにするといったことが出来る
正規表現で数値を取ってきてプログラミング言語で比較処理するより構造的に書ける
だから解答を用意した上でまずは簡単なお題から出して、次は少し難易度を上げるようなお題を考えながら待っていたが誰も解答しなかった

46 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 13:33:42.70 ID:TqoFz7RF.net]
>>45
どの言語でも使えるアルゴリズム?設計パターンなの?
理論だから賞味期限の長い知識なのはわかるけど優先的に教えられないのはなぜ?

47 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 13:35:45.21 ID:vGVdpt19.net]
>>44
各フレーム物体がランダム位置で出現する場合には使えません

48 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 13:37:37.60 ID:vGVdpt19.net]
>>45
チューリングマシンの実用性はゼロと思うけど
完全に学問用

49 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 13:40:10 ID:Jbjf6afq.net]
CFGのクラスのものを例題にしたから意図したような回答がなかったんじゃないかと

50 名前:デフォルトの名無しさん [2020/07/17(金) 14:08:20.12 ID:x8K2tEcw.net]
学術の巨大掲示板群 - アルファ・ラボ ttp://x0000.net
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など

simulationライブラリで純粋な関数式プログラミングをする
UIライブラリ (C#, 2D) を作ったよ
連続と離散を統一した!
4Dエンジン
matrixのライブラリ
ある強力なFor関数
SQLライブラリ

☆ VMを書いた(C#) * x86ではない!
ttp://up.x0000.net/files/TSimulang.zip
☆ malloc / free を実装してみた (C#)
ttp://up.x0000.net/files/TMallocTest.zip



51 名前:蟻人間 mailto:sage [2020/07/17(金) 14:59:38.30 ID:+x+SJT9l.net]
>>47
UFOじゃあるまいし、そんな物体が地球上にあるわけない。

52 名前:蟻人間 mailto:sage [2020/07/17(金) 15:18:45.55 ID:+x+SJT9l.net]
ステルス機とか、超音速機とか、プラズマ兵器とかのことか。

それらは想定外だよ。

53 名前:蟻人間 mailto:sage [2020/07/17(金) 15:23:09.49 ID:+x+SJT9l.net]
プラズマ兵器は、実戦で使われた記録はないし、超音速でもレーダー網からは捕捉出来る。

ステルスは想定外。

54 名前:蟻人間 mailto:sage [2020/07/17(金) 16:57:04.24 ID:+x+SJT9l.net]
防衛システムの歯無しは終わり。

次は三次元タートルグラフィックス。位置と向きの情報を持ったタートル(亀)を操作して、面白い図形を描こうというお話。平面じゃないよ、立体だよ。

レンダリングを何にするか。OpenGLは終わったし、DirectDrawは初心者には難しいし。そうだ、JavaScriptのThree.jsにしよう。これならスマホでも確認できるね。使ったことないけど。

55 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 17:49:54.25 ID:vGVdpt19.net]
>>51
出題文を読みかえしてみろ

56 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 17:51:07.65 ID:vGVdpt19.net]
ランダムに動く物体5個

57 名前:蟻人間 mailto:sage [2020/07/17(金) 18:31:00.92 ID:+x+SJT9l.net]
さて、亀は三次元の座標データP=(x, y, z)と三次元の方向ベクトルD=(dx, dy, dz) (単位ベクトルとする)で表せる訳だが、
線分を一つ引くごとに、線分を指定した位置に世界に追加する。世界の観測者の視点であるカメラは、テキトーな位置と方向で設置しておく。
描画ルーチンは、世界に追加された線分群をまとめて描く。描画エンジンは遠近法により、奥行きを持った映像を完成する。

58 名前:蟻人間 mailto:sage [2020/07/17(金) 18:35:56.95 ID:+x+SJT9l.net]
小さなお題: Three.jsで三次元空間に線分を一本描画せよ。

59 名前:デフォルトの名無しさん [2020/07/17(金) 20:07:34.26 ID:Q6g2SqxJ.net]
だめだ
何をいっているのだか私にはさっぱり

60 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 20:36:03.22 ID:RwfCcdVI.net]
>>59
NGワードに糞コテを登録すればOKということだけ理解してれば大丈夫。



61 名前: mailto:sage [2020/07/17(金) 20:39:05.23 ID:zSX7HXP2.net]
>>60
NGワードなんてスルー能力の足りない人が使うものですよ、私は全然使いませんね、だって必要ないし…

62 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 21:03:37.05 ID:CFzyXZw3.net]
クソコテスレ

63 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/07/17(金) 21:18:41 ID:hZ0JaeyU.net]
こんな感じでHTMLを書けばThree.jsで三角形が描ける。
https://gist.github.com/katahiromz/cc182b4aaeaf2c7b5902238212c0f3f1

64 名前:蟻人間 mailto:sage [2020/07/17(金) 21:29:05.44 ID:hZ0JaeyU.net]
これを応用すれば、スマホでも動作するブラウザゲームを自分で作って
ゲーム会社を立ち上げることができるかも。

Three.jsがどんなものかは、

https://threejs.org/

を見ればたぶんわかる。三次元を描画するものだ。

65 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 21:32:26.43 ID:C5ummCR0.net]
スレタイからずれすぎ

66 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 00:01:47.57 ID:tp8HW1uL.net]
ついに蟻人間は、3次元まで行ってしまったか

その内、Quaternion(4元数)がどうたらこうたらと、言い出しかねないw

67 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 00:03:54.77 ID:wH8oKg8v.net]
>>58
分かり難いけど、描けました。
https://i.imgur.com/XZgoOTV.gif
P0(0,0,0)-P1(100,100,100)です。

//形状オブジェクトの宣言と生成
var geometry3 = new THREE.Geometry();

geometry3.vertices.push( new THREE.Vector3(0, 0, 0) );

geometry3.vertices.push( new THREE.Vector3(100, 100, 100) );

//材質オブジェクトの宣言と生成
var material3 = new THREE.LineBasicMaterial({ color: 0xFFFFFF, transparent:true,
linewidth: 8,
opacity:0.5 });
//線オブジェクトの生成
lines = new THREE.LineSegments(geometry3, material3);
//線オブジェクトのシーンへの追加
scene.add(lines);

68 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 06:18:45.66 ID:yeg1h1ii.net]
お題:何らかの数式のグラフとしてハート形を出力せよ。
使用する言語は問わない。

69 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 10:23:44 ID:Z+cMIoZ7.net]
>>68
HTML5,JavaScript
<canvas id="cv" width="360" height="360"></canvas>
<script>
var ctx = document.getElementById("cv").getContext("2d");
ctx.lineWidth = 5; //線の太さ
ctx.strokeStyle = "red";
ctx.beginPath();
var r=10;var x0=0,y0=0;

for(i=0;i<=360;i+=5){

var d = i*Math.PI/180;

x0= r*(16*Math.sin(d)*Math.sin(d)*Math.sin(d));
y0= r*(13*Math.cos(d)-5*Math.cos(2*d)-2*Math.cos(3*d)-Math.cos(4*d));
ctx.lineTo(w+x0,h-y0);
}

ctx.stroke();
</script>

https://i.imgur.com/9tjfBmv.png

70 名前:デフォルトの名無しさん [2020/07/18(土) 10:47:53 ID:zLRZfcZE.net]
>>68 Lua
for y=1.5,-1.5,-0.1 do
for x=-2,2,0.1 do
if (x^2+y^2-1)^3-x^2*y^3<0 then
io.write("@@")
else
io.write("__")
end
end
print()
end



71 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 10:50:14 ID:dRuMQkW5.net]
>>45
出題が糞過ぎたから誰も答えなかったんだぞ

72 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 11:55:01 ID:n7a2F8Nj.net]
>>45
このスレでは誰もお題に答えないということがよくある
俺もお題出したことがあるがそういう時があった

73 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 12:04:26.22 ID:Z+cMIoZ7.net]
>>68
❤♡🤎🧡🤍🖤❤❣💟💜💚💛💙💗
&hearts; &#9825; &#10084;

74 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 12:35:48.94 ID:xMoPei8m.net]
>>69
きれい

75 名前:デフォルトの名無しさん [2020/07/18(土) 12:41:40.41 ID:55gPHPOJ.net]
>>71
どこらへんが問題なのかを言わないと次も同じ問題を起こす可能性がある

76 名前:デフォルトの名無しさん [2020/07/18(土) 12:45:26.81 ID:55gPHPOJ.net]
すぐに論破されることを言う奴って何が目的なんだろう
5chを見下してるのかもしれないな
こんなサイトみてる奴は大したことないって思ってるから油断して非論理的な発言をするのかと思った

77 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 13:00:12.87 ID:Gf2oPXpD.net]
どこに問題があるかなんて前スレでさんざん言われてただろ
あれで理解できないなら一生理解できないだろうね

78 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 13:01:12.49 ID:n7a2F8Nj.net]
>>75
たぶん問題が難しいか、手間がかかるからじゃないかな

79 名前:デフォルトの名無しさん [2020/07/18(土) 13:06:42.15 ID:55gPHPOJ.net]
>>77
指摘された問題点はすべて返信していてその返信に対する返信はない
つまり指摘された問題点はすべて間違っていて問題点は見つかっていない
>>78
Pythonで20行弱で書けることは伝えている
となると難易度がこのスレの住人には高すぎたということか...

80 名前:デフォルトの名無しさん [2020/07/18(土) 13:09:37.97 ID:LD7t+FRX.net]
イキり臭ただようコメントですね



81 名前:デフォルトの名無しさん [2020/07/18(土) 13:14:16.81 ID:LD7t+FRX.net]
問題の良し悪しよりも出題者の態度が気に入らないから取り組まない人がいるんじゃないかな
自分の正当性を主張するだけではダメで回答者のモチベーションを上げる方向に導かないと
コミュニケーションが未熟なだけだと思いました

82 名前:デフォルトの名無しさん [2020/07/18(土) 13:17:55.61 ID:LD7t+FRX.net]
線形拘束オートマトンでこの問題解いてみて!
線形拘束オートマトンはこういう仕組みで、こういうところでも活用できるから知ってると便利だよ!
みたいにポジティブアゲアゲでいかないと

83 名前:デフォルトの名無しさん [2020/07/18(土) 13:20:22.31 ID:55gPHPOJ.net]
>>81
なるほどーそれは>>1に書いとくべきだな
皆んなから好かれる人の出題しか解答しませんよって
出題にも手間がかかるわけだからそういうのは普通に不誠実だと思う

84 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 13:21:40.49 ID:n7a2F8Nj.net]
>>83
落ち着けよ
お題に解答が全く付かないなんてよくあることだって

85 名前:デフォルトの名無しさん [2020/07/18(土) 13:23:11.61 ID:55gPHPOJ.net]
>>82
仕組みというか解説は書けるなら書きたかったな
悩んだがそんなに難しくないと思ったから止めといた

86 名前:デフォルトの名無しさん [2020/07/18(土) 14:02:48.54 ID:LD7t+FRX.net]
>>83
ルールとして決める必要はなくて
一般的なコミュニケーションのとり方としてレスポンスが欲しいなら
自分の正当性だけを主張するやり方だと難しいよってこと
自分がこんなに頑張って問題書いたんだ、答えがないのは不誠実だ、そんな自己中発揮してたらレスポンスなくて当然かと

87 名前:デフォルトの名無しさん [2020/07/18(土) 14:06:16.09 ID:LD7t+FRX.net]
線形拘束オートマトンが実装できるってすごいことだから
模範解答示したら良いと思うよ

88 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 14:14:52.95 ID:ICGznoJS.net]
>>83
難度がうんぬんよりも問題文読んだ時点で作問者の頭が悪そう(使ってる言葉の意味わかってなさそう)って思ってスルーしたわ
ここのコテハンも同じ理由でスルー
ただ、面白そうなら気まぐれで解くこともある
解く方も出す方も好きにしたら良い

89 名前:デフォルトの名無しさん [2020/07/18(土) 14:36:05.17 ID:55gPHPOJ.net]
>>86
答えがないから不誠実なのではなくて
出題者に伝えておくべき情報が>>1に書かれていないのならそれは不誠実ということ

>>71は次のように言っている
「皆んながお前の出題に問題があると思っている」
俺は今後のためにも当然次の疑問が生まれ、それを伝えた「どこらへんが?難易度が高すぎた?」
そこで君が「難易度よりむしろマナーに問題がある」という趣旨の発言をした
そうなると俺は「>>1にマナーの具体的な内容を書くべき」
そうしないと同じ問題を起こしてしまうから

90 名前:デフォルトの名無しさん [2020/07/18(土) 14:41:12.58 ID:LD7t+FRX.net]
>>89
ルールとして書くまでもなく一般的なコミュニケーションのことだから
>>1に書かれてなくても良いし、それが無いがゆえにできなかったのだという
態度が自己中ってこと



91 名前:デフォルトの名無しさん [2020/07/18(土) 14:42:30.19 ID:LD7t+FRX.net]
問題を起こしてしまうの主語は君がってことだよね? 君がコミュニケーション能力を身につければ解決すると思うのだけれども

92 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 14:42:36.88 ID:vTEAacne.net]
解いてみたいと思えない内容の上に長文でうざい
っていう感情論に近いものを明文化すんのはちょっと難しいね

93 名前:デフォルトの名無しさん [2020/07/18(土) 14:50:16.06 ID:LD7t+FRX.net]
客観的に難易度は高いと思うよ
少なくとも僕は実装したこと無い
有限オートマトンが精一杯

自分で「難易度がこのスレの住人には高すぎたということか」と言ってしまうのはイキりだと思った
難易度+高慢な態度 ってところかと

94 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 15:08:41.26 ID:n7a2F8Nj.net]
あるいは進行形で解いてるやつがいるかもしれないな
なんたってこのスレの最長解答時間は3ヵ月だからなw

95 名前:デフォルトの名無しさん [2020/07/18(土) 15:10:20.71 ID:LD7t+FRX.net]
レーダーのお題でしょ、あれは感動した

96 名前:デフォルトの名無しさん [2020/07/18(土) 15:12:42.37 ID:LD7t+FRX.net]
チューリングマシンのお題は、僕も解いて見ようと思ってWikipedia読んでる

97 名前:デフォルトの名無しさん [2020/07/18(土) 15:13:54.80 ID:LD7t+FRX.net]
最高のチューリングマシンを見せてやるぜ、必ず帰ってくるからな、帰ったら結婚しよう

98 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 15:20:47.20 ID:n7a2F8Nj.net]
死亡フラグね

99 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 15:29:31.73 ID:Bt+NBO6d.net]
>>83
気に入らない奴は相手にされないなんて、人と人とのコミュニケーションが発生する場所なら何処でもそうだろう。仕事などの個人の感情よりやるべきことを優先すべき場面を除いては。
書かれてないから知らないなんて、小学生の屁理屈にも劣る反応だな。

100 名前:デフォルトの名無しさん [2020/07/18(土) 15:34:22.37 ID:55gPHPOJ.net]
新しいことを学ぶのは素晴らしいと思うけど今まで2週間以上同じスレに居たことがないから責任持てないなぁ
現場でバリバリ使う為にはε-非決定性オートマトンとかも知っとかないと実用的じゃなくなるから学習に意味を見いだすのはかなり難しいと思うよ



101 名前: mailto:sage [2020/07/18(土) 15:41:54.65 ID:KIRMqycZ.net]
>>100
非決定オートマトンを決定性オートマトンにする、とかいうお題は、やっぱりマニアックすぎますかね?
今そういう本をよんでポチポチコードを書いているので、需要があるようなら出題&採点してもいいかなって思ってます

102 名前:デフォルトの名無しさん [2020/07/18(土) 15:47:29.51 ID:55gPHPOJ.net]
>>101
需要があるかは分からないけどとてもいいと思うよ

103 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 15:58:37.25 ID:n7a2F8Nj.net]
>>102
いなくなるかもしれないなら解答例貼っておいてよ

104 名前:デフォルトの名無しさん [2020/07/18(土) 16:51:46.46 ID:2TKjWEFt.net]
sedでいいんじゃね

105 名前:デフォルトの名無しさん [2020/07/18(土) 18:01:09.47 ID:k5pKf1DO.net]
>>81
まあしかし何かが出題されたら必ず誰かが解かねばならないわけでもないしな。義務は何もないからこうでなければいけないという事もない。

106 名前:69 mailto:sage [2020/07/18(土) 19:43:00.59 ID:BZh66Ti/.net]

107 名前:rel="noopener noreferrer" target="_blank" class="reply_link">>>74
ありがとう❣、チャレンジして良かったよ!
出題者からはなんの評価も解説もされないので
そういう反応が返って来ると嬉しい。
また、次のモチベーションに繋がる。

教科書とか勉強中のコラムとかコーヒーブレイクみたいな
息抜き程度の頭の体操になるような手軽なお題の方が答えやすいね。
結局は出題者も回答者も自己満足でしか無いから、
初級〜中級者向けくらいが丁度良いかも?
[]
[ここ壊れてます]

108 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 20:06:14.32 ID:tp8HW1uL.net]
>>69
こういうコードを見ると、jagarikin の「スーパー鳥スロット」を思い出すw

画像ファイルが1つもなく、こういうコードばっかりだったw

109 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 20:44:45.69 ID:naIVYT0v.net]
>>107
コードのキレイさなら>>70かもしれませんが
お題はコードを出力するのではなくハート形を出力せよとのことでしたから
初心者がチャレンジしたコードなのでスマートな書き方でないのは御勘弁下さいorz

110 名前:68 mailto:sage [2020/07/18(土) 21:39:17.47 ID:yeg1h1ii.net]
いろんな回答を見たかったので早期の論評は控えてました。
>>69の出力は出題者もきれいだなって思います。
想定していたコードはどちらかいうと>>70に近くて
codepad.org/ICpm3J6j
こんな感じの簡単な式(x^2+y^2<100-|x|y)でも充分かなと思ってました。

ハート形を生成できる式はいくつか知られているので、バリエーションを探ってみるのはいいかなと思います。



111 名前:蟻人間 mailto:sage [2020/07/19(日) 13:58:11.60 ID:GV3E92FC.net]
(1) https://gist.github.com/katahiromz/694763e2060d4a004452875bebc04ee3
二次元タートルグラフィックスで八角形を描けたよ。

お題: (1)と(2)のリンクを参考にコッホ曲線を描画せよ。

(2) www.f.waseda.jp/sakas/java/JavaGraphicsSample.html

112 名前:蟻人間 mailto:sage [2020/07/19(日) 14:05:25.72 ID:GV3E92FC.net]
>>110 答え:
function koch(degree, step) {
  if (degree == 0) {
    walk(step);
  } else {
    koch(degree - 1, step/3);
    turn_angle(60);
    koch(degree - 1, step/3);
    turn_angle(-120);
    koch(degree - 1, step/3);
    turn_angle(60);
    koch(degree - 1, step/3);
  }
}
function draw() {
  set_pos(0, 0, 0);
  set_dir(100, 0, 0);
  koch(5, 75);
}

113 名前:蟻人間 mailto:sage [2020/07/19(日) 14:45:30.46 ID:GV3E92FC.net]
小さなお題: >>110 の(1)のturn_dir関数とturn_angle関数を3次元に拡張し、
3次元タートルグラフィックスを可能にせよ。

ただし、turn_dirの引数は長さ1の方向ベクトルとし、turn_angleの引数は角度とする。
turn_dirは、引数dzが0のとき、変更前と同じ動作にせよ。
また、turn_angleの引数にもう一つの角度を追加し、追加した角度がゼロのとき、
変更前と同じ動作にせよ。

ヒント:四元数

114 名前:デフォルトの名無しさん mailto:sage [2020/07/19(日) 14:48:01.51 ID:EiEVeWaP.net]


66 名前:デフォルトの名無しさん[sage] 投稿日:2020/07/18(土) 00:01:47.57 ID:tp8HW1uL [1/2]
ついに蟻人間は、3次元まで行ってしまったか

その内、Quaternion(4元数)がどうたらこうたらと、言い出しかねないw

115 名前:蟻人間 mailto:sage [2020/07/19(日) 21:17:44.37 ID:T8vbWyFG.net]
さて、解けた者は挙手したまえ。

116 名前:デフォルトの名無しさん mailto:sage [2020/07/19(日) 21:45:13.46 ID:h5vFOzT4.net]
頭が悪いことがばれたからって
必死に数学の知識を見せようと頑張ってる

でも頭の悪さが随所に滲み出てる
自覚のないアホ

117 名前:蟻人間 mailto:sage [2020/07/19(日) 21:56:49.40 ID:GV3E92FC.net]
>>115 数学出来るなら手伝ってくれよ。。。これから面白くなるから。

function turn_angle(angle1, angle2) {
// x-y平面上のangle1度の方向ベクトル(dx, dy)。
var dx = Math.cos(angle1 * Math.PI / 180);
var dy = Math.sin(angle1 * Math.PI / 180);

// (dx, dy, 0)をx軸を中心にangle2度回転したものを(dx, dy, dz)とする。
...(ここに何か書く)...

// 実際に回転させる。
turn_dir(dx, dy, dz);
}

118 名前:デフォルトの名無しさん mailto:sage [2020/07/19(日) 21:57:24.56 ID:5kiTFqsE.net]
誰もイキらずに淡々と問題と答えのレスだけ並んでく雰囲気は良さを感じたけど
やっぱクソコテって怖いな

119 名前:蟻人間 mailto:sage [2020/07/19(日) 22:06:51.03 ID:GV3E92FC.net]
>>116
dz = dy * Math.sin(angle2 * Math.PI / 180);
dy *= Math.cos(angle2 * Math.PI / 180);

次は、三次元のturn_dirね。数学、スゴクデキルんでしょ?

120 名前:蟻人間 mailto:sage [2020/07/19(日) 22:12:10.73 ID:GV3E92FC.net]
お題: JavaScript
function turn_dir(dx, dy, dz) {
// (dx, dy, dz)は長さ1の方向ベクトル。
// 長さ1の方向ベクトル(turtle_dx, turtle_dy, turtle_dz)を(dx, dy, dz)だけ回転させる。
...(ここに何か書く)...
}



121 名前:蟻人間 mailto:sage [2020/07/19(日) 22:16:20.98 ID:GV3E92FC.net]
♪はい、コーディングいってみよー!

はいはいはい、はいはいはい!

122 名前:蟻人間 mailto:sage [2020/07/19(日) 23:32:08.26 ID:T8vbWyFG.net]
俺はそういう悪評トリックに引っ掛からないよ。間違いは的確に指摘頂きたい。

123 名前:デフォルトの名無しさん mailto:sage [2020/07/20(月) 06:57:18.16 ID:P7t0RBc6.net]
>>110-121
(1)のソースにオービットコントロールを付けると楽しいですよ。

<!-- OrbitControls.jsファイルソース読込 -->
<script src="./three.js-master/examples/js/controls/OrbitControls.js"></script>

//controls変数宣言追加
var scene, renderer, camera, controls;

function init() {//イニシャライズの
・・・
camera.lookAt(0, 0, 0);

//controlsインスタンス生成してカメラとレンダラー渡すだけ
controls = new THREE.OrbitControls( camera, renderer.domElement );

scene = new THREE.Scene();

//ついでに座標軸表示もおすすめ
scene.add( new THREE.AxisHelper(50) );

}
https://i.imgur.com/uFIgx6x.png

124 名前:デフォルトの名無しさん mailto:sage [2020/07/20(月) 07:42:33.17 ID:ozWDjdlg.net]
>>118
やってみたよ
function turn_angle(angle1, angle2) {
if( !angle2 || angle2==0){
turn_dir(Math.cos(angle1 * Math.PI / 180), Math.sin(angle1 * Math.PI / 180), 0);
}else{
// x-y平面上のangle1度の方向ベクトル(dx, dy)。
var dx = Math.cos(angle1 * Math.PI / 180);
var dy = Math.sin(angle1 * Math.PI / 180);

// (dx, dy, 0)をx軸を中心にangle2度回転したものを(dx, dy, dz)とする。
var dz = dy * Math.sin(angle2 * Math.PI / 180);
//dy *= Math.cos(angle2 * Math.PI / 180);
turtle_dz = dz;
// 実際に回転させる。
turn_dir(dx, dy, dz);
}

}
function draw() {
set_pos(0, 0, 0);
set_dir(0, 100, 0);
for (var i = 0; i < 18; ++i) {
walk(15);
//turn_angle(45);
turn_angle(45, 20);
}
}
https://i.imgur.com/CdQvIDR.png

https://i.imgur.com/G4HUVBh.png

125 名前:蟻人間 mailto:sage [2020/07/20(月) 15:09:49.43 ID:rHNryQzp.net]
傾けた木が平面にならない。
https://github.com/katahiromz/3D
(4) https://github.com/katahiromz/3D/blob/master/4.html
https://twitter.com/katahiromz/status/1285093638557466624/photo/1
何でだろ。

https://github.com/katahiromz/3D からダウンロードして下さい

126 名前:
お題: (4) を修正して木が平面になるようにせよ。
(deleted an unsolicited ad)
[]
[ここ壊れてます]

127 名前:デフォルトの名無しさん [2020/07/20(月) 16:08:13.13 ID:UHinuGOV.net]
お題じゃなくて作成依頼ですか?w

128 名前:蟻人間 mailto:sage [2020/07/20(月) 16:16:33.54 ID:6GFyBW1T.net]
こういうのは数学が鬼ズバできる猛者に任せたい所だが。。。
報酬は出しちゃいかんのか。

129 名前:デフォルトの名無しさん mailto:sage [2020/07/20(月) 17:25:48.10 ID:uvZgkaZD.net]
出ないならやらない

130 名前:デフォルトの名無しさん mailto:sage [2020/07/20(月) 17:58:58.92 ID:8mFfSXNu.net]
いや、そういう猛者がいるところに依頼してこいよ
報酬出すんならランサーズとかにでも行ってこい
なんでここで話題にするんだ



131 名前:デフォルトの名無しさん mailto:sage [2020/07/20(月) 17:59:50.36 ID:8mFfSXNu.net]
そういう意味不明な言動を繰り返すから糞コテ呼ばわりされるって気付いて

132 名前:蟻人間 mailto:sage [2020/07/20(月) 18:37:44.48 ID:rHNryQzp.net]
寺へ行きました。すみません。

133 名前:デフォルトの名無しさん mailto:sage [2020/07/20(月) 23:40:32.05 ID:5ka8Ymx5.net]
>>124
なにこれ激重。1〜3はIEでも動くけど4はクロームでも少し時間かかる。
https://i.imgur.com/Kkti3xQ.gif
舞フレームごとに書き出してるんかな?
3Dオブジェクトコンテナにでも入れた方がいいのかな?

134 名前:蟻人間 mailto:sage [2020/07/20(月) 23:47:38.07 ID:6GFyBW1T.net]
やろうとしてるのは、三次元フラクタルと臓器の実体化だから、超複雑な図形を再帰で描くことになる。再帰が多ければ確かに計算量は爆発するよ。

135 名前:デフォルトの名無しさん mailto:sage [2020/07/20(月) 23:52:17.88 ID:/f9oEP+1.net]
いい加減IE捨てろよ

136 名前:アンスタ7.2日目 mailto:sage [2020/07/20(月) 23:54:27.58 ID:5ka8Ymx5.net]
>>124
https://i.imgur.com/Kkti3xQ.gif
タートルグラフィックスTreeの平面化
https://i.imgur.com/hNNvsE0.gif
3次元にしたいのか平面にしたいのかどっちなんだか。。。
変更箇所↓
function turn_angle(angle1, angle2=0) {
 var dx = Math.cos(angle1 * Math.PI / 180);
 var dy = Math.sin(angle1 * Math.PI / 180);
 angle2 += turtle_spin;
 var dz = dy * Math.sin(angle2 * Math.PI / 180);
 //dy *= Math.cos(angle2 * Math.PI / 180);
 turtle_z = dz;
 turn_dir(dx, dy, dz);
}
function draw() {
 //set_pos(0, 0, 0);
 set_dir(0, 100, 0);
 //koch(6, 50);
 set_pos(0, 0, 0);
 //set_dir(0, 100, 100);
 tree(10, 40, 10);
}

137 名前:デフォルトの名無しさん mailto:sage [2020/07/20(月) 23:57:55.33 ID:5ka8Ymx5.net]
>>133
クロームより軽いから、捨てられなくて。。。

138 名前:蟻人間 mailto:sage [2020/07/21(火) 00:03:34.18 ID:iLwMnecK.net]
>>134
その事例についてはteratailに移動しましたので、ここでは打ち切りとさせて下さい。

https://teratail.com/questions/279115

139 名前:デフォルトの名無しさん mailto:sage [2020/07/22(水) 22:25:22.87 ID:ILXZvJ+B.net]
「1+1は2じゃないぞ。オレたちは1+1で200だ!10倍だぞ10倍」
…が、なんとなく成り立っているように感じられるプログラムを作って発表せよ。

140 名前:デフォルトの名無しさん mailto:sage [2020/07/22(水) 22:30:15.48 ID:IwIxQ1Ze.net]
お題: ランダムな整数が格納された長さNの配列から、偶数の要素のみを抜き出せ
Nは任意とする



141 名前:デフォルトの名無しさん mailto:sage [2020/07/22(水) 22:57:06.83 ID:EawLE7Sy.net]
>>138 Ruby

p gets.split.map(&:to_i).select(&:even?)

142 名前:デフォルトの名無しさん mailto:sage [2020/07/23(木) 00:07:39.47 ID:DuCdQo+y.net]
>>137
面白いものができてしまったわ

class Integer
def +(other) 200 end
def /(other) 10 end
end

p "1+1は2じゃないぞ。オレたちは1+1で#{1 + 1}だ!#{rate = 200 / 2}倍だぞ#{rate}倍"

# => "1+1は2じゃないぞ。オレたちは1+1で200だ!10倍だぞ10倍"



https://repl.it/@vip0/override-plus-1#main.rb

143 名前:デフォルトの名無しさん mailto:sage [2020/07/23(木) 10:38:13.83 ID:bJ7HfHNw.net]
>>138 ocaml
https://ideone.com/qCUADD

>>138 octave
https://ideone.com/3xMvgA

144 名前:デフォルトの名無しさん mailto:sage [2020/07/23(木) 22:03:16.45 ID:VBywRp49.net]
>>138 Perl5

@b = grep{$_ ^ 1} @a;

145 名前:デフォルトの名無しさん [2020/07/23(木) 23:12:54.26 ID:QnunbgyT.net]
>>138
Java
https://paiza.io/projects/BNpQRglb7E1lGKawVZRBCg

146 名前:デフォルトの名無しさん [2020/07/24(金) 00:24:32 ID:F0SZWNxk.net]
>>138 Python
import random
N = 10
MAX = 100
[x for x in random.sample(range(MAX), N) if x % 2 == 0]

147 名前:デフォルトの名無しさん mailto:sage [2020/07/24(金) 03:32:41.61 ID:6ZonvnML.net]
>>137
なんとなく結果を2進数(あるいは通常の10進数以外の表現)で出せば良いだけのような気がするが・・・

Perl だとこんな感じで 10 が出る。

printf "%b\n", 1 + 1;

148 名前:デフォルトの名無しさん [2020/07/24(金) 03:47:06.33 ID:6ZonvnML.net]
>>138
Kotlin 及び Kotlin Script ではこんな風になる(a が元の配列または List)。

val b = a.filter { (it % 2) == 0 }

もちろん比較部分は (it and 1) == 0 等でも良い。it が偶数の時に true になりさえすればなんでも良い。

配列の要素数の N についてはここでは考える必要なし。
要素の型が Int かどうかも考える必要なしだが、% 2 の計算ができないとか結果が Int の 0 と比較できなければコンパイルエラー、または Script なら読んだ直後の文法チェック時にエラーだと思う。

149 名前:デフォルトの名無しさん [2020/07/25(土) 07:02:03.31 ID:j1aQFTSL.net]
>>138Julia
a=1:10
a[iseven.(a)]

150 名前:デフォルトの名無しさん mailto:sage [2020/07/25(土) 11:32:49.78 ID:vIjhxGJs.net]
大抵の言語でfilter modulo一発だよね。
お題www



151 名前:デフォルトの名無しさん [2020/07/26(日) 11:42:26.03 ID:467XWCJo.net]
>>138
ランダムは副作用なので、ちと面倒臭い。
(厳密には擬似乱数を作る為の種(newStdGen)だけが副作用)

Haskell

import System.Random

main = f 10 >>= print

f :: Int -> IO [Int]
f n = newStdGen >>= return.filter even.take n.randomRs (1,100)

実行結果

[56,70,100]

型指定しないと型推論が働かない。
(生成される乱数が整数とは限らない為)

戻り値は型で分かる通り、普通のリストでは無くIOなリスト。
newStdGenを使っているので、IOな値を返さないといけない。
(printもIO ()を返すのでreturnをprintに置き換えて直接出力も可能ではある)

randomRs (1,100) で1から100までの乱数の無限リストを生成。
後はtakeで無限リストから任意の個数を取り出してfilterするだけ。
(takeとfilterは順番が逆だと乱数の無限リストから偶数を任意の個数取り出すので問題の意図と違ってしまう)

問題が「出力しろ」では無く「抜き出せ」なので、あえてprintは関数の外に置いた。

152 名前:デフォルトの名無しさん mailto:sage [2020/07/26(日) 11:54:08.47 ID:arqbmdN/.net]
Haskellのコード見たいと思ってた

153 名前:デフォルトの名無しさん mailto:sage [2020/07/26(日) 11:55:36.48 ID:Lwmxod4b.net]
流行らなかった訳が分かった

154 名前:デフォルトの名無しさん [2020/07/26(日) 12:16:01.64 ID:yLhsD6tn.net]
>>151
まあね。
安全なコードを書き易いと取るか、面倒くさいと取るかやね。

155 名前:デフォルトの名無しさん [2020/07/26(日) 12:31:12.02 ID:XQciIU0B.net]
お題
2つの文字列の差を[]で囲って出力してください

例1
入力:abc adc
出力:a[b]c

例2
入力:abc acd
出力:a[bc]

例3
入力:abc bcc
出力:[ab]c

156 名前:デフォルトの名無しさん [2020/07/26(日) 15:30:12.41 ID: ]
[ここ壊れてます]

157 名前:yLhsD6tn.net mailto: >>153

Haskell

一応、長さが違う場合、短い方に合わせる様にしてみた。
テストし切れてないかもなので、バグに気付いたら教えて下しあ。

main = putStrLn $ g "abcdefrh" "acdgefggn"

f False [] _ =[]
f False _ [] =[]
f True [] _ = "]":[]
f True _ [] = "]":[]
f flg (x:xs) (y:ys) | flg == True && x == y = ("]" ++ [x]):f False xs ys
f flg (x:xs) (y:ys) | x == y = [x]:f False xs ys
f flg (x:xs) (y:ys) | flg == False = ("[" ++ [x]):f True xs ys
f flg (x:xs) (y:ys) | flg == True = [x]:f flg xs ys

g xs = concat.f False xs

実行結果

"a[bcd]ef[rh]"
[]
[ここ壊れてます]

158 名前:デフォルトの名無しさん [2020/07/26(日) 17:41:12.51 ID:1PJx+gwa.net]
やっぱフラグしかないのか?

159 名前:デフォルトの名無しさん mailto:sage [2020/07/26(日) 19:21:26.42 ID:+ODzYEeD.net]
>>153 Ruby
def resolve( s )
f = true
ss = s.split.map{|w| w.chars }
ss[0].zip( ss[1] ).inject(''){|r, (c,d)|
r << ( (f)? '[': ']' ) if (c == d) != f
f = c == d
r << c
} + ((f)? '' : ']')
end

[ "abc adc", "abc acd", "abc bcc" ].each{|s|
puts "入力:#{s}"
puts "出力:#{resolve( s )}\n\n"
}

160 名前:デフォルトの名無しさん [2020/07/26(日) 23:12:10.92 ID:3QUkzPB/.net]
>>155

確かこんなのあったな〜・・・と、inword/outword関数の相互再帰で書いてみた。

Haskell

main = (putStrLn.f "abcdefrt") "acdgefgg"

f xs ys | g xs ys =[]
f (x:xs) (y:ys) | x == y = outword (x:xs) (y:ys)
f xs ys = inword xs ys

inword xs ys | g xs ys = ']':[]
inword (x:xs) (y:ys) | x == y = ']':x:outword xs ys
inword (x:xs) (_:ys) = x:inword xs ys

outword xs ys | g xs ys = []
outword (x:xs) (y:ys) | x == y = x:outword xs ys
outword (x:xs) (_:ys) = '[':x:inword xs ys

g xs ys = or [null xs, null ys]



161 名前:デフォルトの名無しさん [2020/07/29(水) 09:26:50.38 ID:yJ6wpcWu.net]
お題1
じゃんけんを実装してください
1 = ぐー
2 = ちょき
3 = ぱー

入力: 1
出力: あなた=ぐー コンピュータ=ちょき あなたの勝ちです

お題2
あなたの勝率を指定できるようにしてください
勝率は0.0〜1.0で入力します

入力: 1 0.7
出力: あなた=ぐー コンピュータ=ちょき あなたの勝ちです

162 名前:デフォルトの名無しさん mailto:sage [2020/07/29(水) 22:59:47.88 ID:tovqwAmw.net]
>>158 Ruby

JANKEN = %w[Goo Chocky Parr]
KEKKA = %w[Win Lose Draw]

#お題1
odai1 = -> n do
    r = rand(3)
    'You: %s, Com: %s. %s' % [JANKEN[n - 1], JANKEN[(n + r) % 3], KEKKA[r]]
end

puts odai1[1] # => You: Goo, Com: Chocky. Win
puts odai1[2] # => You: Chocky, Com: Goo. Lose
puts odai1[3] # => You: Par, Com: Par. Draw

#お題2
odai2 = -> (n, p) do
    r = rand < p ? 0 : rand(2) + 1
    'You: %s, Com: %s. %s' % [JANKEN[n - 1], JANKEN[(n + r) % 3], KEKKA[r]]
end

puts odai2[1, 0] # => You: Goo, Com: Par. Lose
puts odai2[2, 1] # => You: Goo, Com: Chocky. Win
puts odai2[3, 0.3] # => You: Par, Com: Chocky. Lose
puts odai2[3, 0.3] # => You: Par, Com: Goo. Win
puts odai2[3, 0.3] # => You: Par, Com: Par. Draw
puts odai2[3, 0.3] # => You: Par, Com: Chocky. Lose

163 名前:デフォルトの名無しさん mailto:sage [2020/07/29(水) 23:09:16.98 ID:tovqwAmw.net]
下から5行目タイポ
puts odai2[2, 1] # => You: Chocky, Com: Parr. Win

164 名前:デフォルトの名無しさん mailto:sage [2020/07/29(水) 23:11:53.00 ID:z6Fnx3oM.net]
Parr
出たか連続校正レス君

165 名前:デフォルトの名無しさん mailto:sage [2020/07/29(水) 23:15:30.50 ID:zhbinuHB.net]
別にええやろ

166 名前:蟻人間 mailto:sage [2020/07/29(水) 23:42:09.78 ID:hGtKVe2E.net]
子ども国会で、グー、チョキ、パーのつづりを次のように閣議決定しました。

グーはgoo、
チョキはchoki、
パーはpar、
ジャンケンはJankenとする。

167 名前:デフォルトの名無しさん mailto:sage [2020/07/30(木) 00:20:11 ID:aEaasmNp.net]
Unicode の \u270A \u270B \u270C

168 名前:デフォルトの名無しさん mailto:sage [2020/07/30(木) 15:16:52 ID:cH8Va6i2.net]
自然数AとB

169 名前:があります
A * B ではない方法で、AとBを掛けた結果を求めなさい。
ただし、AとBは4バイトの数値型で、どのような値が入ってきても
実施してからなるべく近い時間で計算終了する方が高得点とします。
[]
[ここ壊れてます]

170 名前:デフォルトの名無しさん mailto:sage [2020/07/30(木) 15:58:10.10 ID:aEaasmNp.net]
>>165 Ruby
def multiply( a, b )
ans = 0
while a > 0
ans += b if a.odd?
a >>= 1
b <<= 1
end
ans
end

multiply( 0x12345678, 0x87654321 ) #=> 693779765864729976



171 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 20:01:40.49 ID:eF75V+Af.net]
>>165

import Math;

int kakezan(a, b) {
int min, max = Math.sort([a, b]);
if(min == 0) return 0;
return Math.square(min) + kakezan(min, max - min);
}

printf(kakezan(0x12345678, 0x87654321)); // 693779765864729976

172 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 21:52:47.76 ID:xRTQ61eG.net]
>>165
function mul(a, b) {
let prod = 0;
const unit = Math.sign(a) + Math.sign(b) ? 1 : -1;
for (let i = 0; i < Math.abs(a); i++)
for (let j = 0; j < Math.abs(b); j++)
prod += unit;
return prod;
}
console.log(mul(-6, -7)); //=> 42
console.log(mul(-6, 7)); //=> -42

低得点ww

173 名前:デフォルトの名無しさん mailto:sage [2020/08/04(火) 03:43:27.41 ID:DYgISIVe.net]
お題: 文字列の格納された配列から重複した文字列を削除し昇順にソートせよ

['apple', 'banana', 'apple', 'chikuwa']

['apple', 'banana', 'chikuwa']

174 名前:デフォルトの名無しさん mailto:sage [2020/08/04(火) 03:55:23.60 ID:gT//RRjC.net]
>>169 Ruby
['apple', 'banana', 'apple', 'chikuwa'].uniq.sort #=> ["apple", "banana", "chikuwa"]

175 名前:デフォルトの名無しさん [2020/08/04(火) 05:05:40.50 ID:YeoxtHaI.net]
>>153 Ruby

def resolve( str )
res = String.new # 戻り値
flag = false # [ だけを付けて、まだ ] で閉じていない状態が、true
ary = str.split # 空白で、2つに分離する

ary[ 0 ].chars.zip( ary[ 1 ].chars ) do |c0, c1| # 1文字ずつ比較する
if c0 == c1
if flag
res = res + ']' + c0
flag = false
else
res += c0
end

else
if flag
res += c0
else
res = res + '[' + c0
flag = true
end
end
end
res += ']' if flag # もし閉じていない場合は、閉じる
res
end

[ "abc adc", "abc acd", "abc bcc" ].each{ |str|
print "入力: #{ str }\n" + "出力: #{ resolve( str ) }\n\n"
}

176 名前:デフォルトの名無しさん [2020/08/04(火) 18:06:57 ID:Bm48LwqI.net]
>>169
Kotlin または Kotlin script でのやり方

a が Array<String> または List<String> でそこに元の文字列が入っているとすると。

val b = a.toSortedSet()

でbに重複削除されてソートされたSetができる。
これを List<String> にしたい場合はこうする。

val c = b.toList()

177 名前:デフォルトの名無しさん [2020/08/04(火) 19:17:32.13 ID:w83j0BiFE]
[お題] “(16 + (8 - 4)) / 2” のような文字列を入力として,
その評価結果(この場合は10)を出力するプログラムを作成してください.

178 名前:デフォルトの名無しさん [2020/08/04(火) 18:45:38.06 ID:lImhU2CT.net]
>>165 チューリングマシン(Python3)
#チューリングマシン本体(不受理の場合例外が発生する)
def turingMachine(tape, state_function, current_state, final_state):
i=0
n = len(tape)
while i < n:
sf = state_function[current_state]
symbol = tape[i] if i >= 0 else None
(current_state, rsymbol, is_right) = sf[symbol]
if i >= 0:
tape[i] = rsymbol
if current_state == final_state:
return True
i += 1 if is_right else -1
return False

def TmMul(a, b):
#1000000の箇所はメモリ容量に合わせて適当に増やす
tape = ["0"] * a + ["1"] + ["0"] * b + ["1"] + [None] * 1000000
trans = [{"0":(6, None, True)},
{"0":(2, "X", True), "1":(4, "1", False)},
{"0":(2, "0", True), "1":(2, "1", True), None:(3, "0", False)},
{"0":(3, "0", False), "1":(3, "1", False), "X":(1, "X", True)},
{"X":(4, "0", False), "1":(5, "1", True)},
{"0":(5, "0", False), "1":(7, "1", False)},
{"0":(6, "0", True), "1":(1, "1", True)},
{"0":(8, "0", False), None:(7, None, True), "1":(9, None, True)},
{"0":(8, "0", False), None:(0, None, True)},
{"0":(9, None, True), "1":(10, None, True)}]
turingMachine(tape, trans, 0, 10)
return len(list(filter(lambda x: x != None, tape)))
print(TmMul(3, 8)) #=>24

179 名前:デフォルトの名無しさん [2020/08/04(火) 19:24:17 ID:lImhU2CT.net]
>>174
あーアホだったw
タブ消去の仕様だとPythonだと分けわからんことになるなw
↓貼り直した
codepad.org/BWRzr8fW
※会員未登録の為、一定期間後に自動消去

180 名前:デフォルトの名無しさん mailto:sage [2020/08/04(火) 20:26:47.42 ID:BW/Lg1/b.net]
>>166
この魔法が気になる



181 名前:蟻人間 mailto:sage [2020/08/04(火) 20:33:41.16 ID:pnjegpbT.net]
>>176
奇数ならば最下位ビットが1であることを利用している。

182 名前:デフォルトの名無しさん [2020/08/04(火) 20:43:45.04 ID:ZgraBKAX.net]
筆算じゃないの

101 b
110 a (+
---------
0
1010
10100
---------
11110

183 名前:蟻人間 mailto:sage [2020/08/04(火) 20:47:15.02 ID:pnjegpbT.net]
お題: 総務省統計局の1990〜2019年までの人口データを使用して2020〜2024年の日本の人口の推計値を求めよ。人口データ以外は使用しないものとする。

184 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/08/04(火) 21:14:16 ID:pnjegpbT.net]
これは電子政府の使い勝手のテストである。だれも解けないなら、電子データは活かされていないと判断する。

185 名前:デフォルトの名無しさん mailto:sage [2020/08/04(火) 21:16:21 ID:02jYvMNw.net]
>>176
aの偶奇によって↓の計算してaがちっちゃくなったら終わりってしてるだけだぞ

(2a' + 1)b = b + a' * (2b)
(2a') * b = a' * (2b)

186 名前:デフォルトの名無しさん [2020/08/04(火) 21:26:04 ID:lImhU2CT.net]
チューリングマシンを使って重くて複雑な乗算を再現して何の意味があるのかと思ってそうだな
ポイントは文法の中に演算を組み込める点
実社会に役に立つ具体的な例を挙げろと言われれば直ぐには思いつかないが、オートマトンの入力は文字列だけとは限らないぞ
有限木オートマトン使って静的コード解析なのか最適化なのかは分からんが、開発言語の構文木に何らかの演算が伴うルールを適用したいこともあるかもしれない
「そんなのプログラミングすればいいだけだろ」と言う声が聞こえてきそうだがそれは極論「正規表現など要らん」と言ってるのと同じだと思う
以上でもって「全てのプログラマはオートマトンとチューリングマシンをよく勉強するべき」とする俺の主張の正当性は認められる
ちなみに俺は10年以上機械学習の勉強をしたのに画期的な成果が出せなかった後悔の思いがあるから言っている

187 名前:デフォルトの名無しさん mailto:sage [2020/08/04(火) 21:58:22.27 ID:JHqDXk92.net]
お題を出して解くスレで電子データは活かされていないとかどうでもいいんですが…
なんでそうやっていつもスレ趣旨からずれようとするのか?
ズレたいならよそでやってくれ

188 名前:デフォルトの名無しさん mailto:sage [2020/08/04(火) 22:11:15.82 ID:02jYvMNw.net]
片山博文MZ◆NveQN6OtcI

189 名前:デフォルトの名無しさん [2020/08/04(火) 23:36:46 ID:L0dS0CTZ.net]
お題
両替をしてください
貨幣は次の文字列で表されます
1円 = (1)
5円 = (5)
10円 = (10)
50円 = (50)
100円 = (100)
500円 = (500)


入力: (1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)
出力: (10)(10)(1)(1)(1)(1)

入力: (5)(50)(5)(1)(50)(5)(10)(1)(50)(1)(10)(10)
出力: (100)(50)(10)(10)(10)(10)(5)(1)(1)(1)

190 名前:デフォルトの名無しさん mailto:sage [2020/08/05(水) 00:05:23.10 ID:DlE2lfwB.net]
書きたいけど寝たい



191 名前:デフォルトの名無しさん [2020/08/05(水) 02:29:32 ID:prJIGLTT.net]
>>176
aが2とか4だったらどうなるかを紙にでも書いて考えればいずれわかると思う。

192 名前:デフォルトの名無しさん mailto:sage [2020/08/05(水) 02:55:46.54 ID:wv4r4oF2.net]
>>185 Ruby
def change( coin )
sum = coin.split(/[^\d]+/)[1..].inject(0){|r,c| r + c.to_i }
ret = ''
[500,100,50,10,5,1].each{|c|
next unless sum >= c
r, sum = sum.divmod( c )
ret << "(#{c})" * r
}
ret
end

[ '(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)',
'(5)(50)(5)(1)(50)(5)(10)(1)(50)(1)(10)(10)' ].each{|coin|
puts "入力: #{coin}"
puts "出力: #{change( coin ) }\n\n"
}

193 名前:デフォルトの名無しさん [2020/08/05(水) 03:57:36.76 ID:NljdtI5zt]
>>153 C++
https://ideone.com/hgBybu

>>169 C++
https://ideone.com/dd6lAZ

194 名前:デフォルトの名無しさん [2020/08/05(水) 11:37:38.85 ID:kVNaCqIg.net]
File "C:\Users\NEC-PCuser\.spyder-py3\temp.py", line 23, in <module>
my_data = genfromtxt('SingleECG.csv')

File "C:\Users\NEC-PCuser\anaconda3\lib\site-packages\numpy\lib\npyio.py", line 1772, in genfromtxt
fid = np.lib._datasource.open(fname, 'rt', encoding=encoding)

File "C:\Users\NEC-PCuser\anaconda3\lib\site-packages\numpy\lib\_datasource.py", line 269, in open
return ds.open(path, mode, encoding=encoding, newline=newline)

File "C:\Users\NEC-PCuser\anaconda3\lib\site-packages\numpy\lib\_datasource.py", line 623, in open
raise IOError("%s not found." % path)

グラフをプロットしたらこのエラーが出ました。対処法を教えてください

195 名前:デフォルトの名無しさん mailto:sage [2020/08/05(水) 12:05:51.48 ID:DlE2lfwB.net]
斬新なお題だなNEC-PCuserさん

196 名前:デフォルトの名無しさん [2020/08/05(水) 12:27:47.54 ID:NljdtI5zt]
>>185 C++
https://ideone.com/6kqA6M

197 名前:デフォルトの名無しさん [2020/08/05(水) 12:16:18.65 ID:IZQzbQjk.net]
>>190<対処法を教えるお題
一行目と最後の行IOError("%s not found." % path) から
File "C:\Users\NEC-PCuser\.spyder-py3\temp.py"
のパスが間違えていると思われるので
temp.pyを添付するか確認するように進言します

198 名前:デフォルトの名無しさん [2020/08/05(水) 14:35:10 ID:xKYyZvTf.net]
心電図装置に繋がってるデバイスが機能停止したんだろ

199 名前:デフォルトの名無しさん mailto:sage [2020/08/05(水) 15:30:05.18 ID:prJIGLTT.net]
>>185
Kotlin
https://paiza.io/projects/cVm9G2FkQCosaGf9_fQz-Q

最初は割り算したり余り出したりしてやろうと思ったんだけど、よく考えたらこの場合はその計算は無駄な感じがしたので合計から引けたらその貨幣を出すのを繰り返すようにした。

200 名前:デフォルトの名無しさん [2020/08/05(水) 16:44:00.29 ID:73CDpa/5.net]
ふむ。コイン切れの対処もし易いな。



201 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/08/05(水) 17:59:02 ID:TWR5sasY.net]
お題: コイにえさをやるプログラム「feed」がある。一時間ごとにfeedを実行するプログラムを書け。ただし、ビジーウェイトはしてはならない。

ダミーのfeedは、次のようなプログラムとする:

- 現在日時と「えさをやりました。」を出力する。

202 名前:蟻人間 mailto:sage [2020/08/05(水) 18:08:26.66 ID:UZ8wPONY.net]
>>197 C++/Win32
#include <windows.h>
int main(void) {
for (;;) {
Sleep(60 * 60 * 1000);
ShellExecuteA(NULL, NULL, "feed.exe", NULL, NULL, SW_SHOWNORMAL);
}
}

// feed.cpp
#include <windows.h>
#include <stdio.h>
int main(void)
{
SYSTEMTIME st;
GetLocalTime(&st);
printf("%04d.%02d.%02d %02d:%02d:%02d えさをやりました。\n",
st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond);
}

203 名前:デフォルトの名無しさん [2020/08/05(水) 19:40:23.44 ID:VitQNdTl.net]
は、はやい・・・

204 名前:デフォルトの名無しさん mailto:sage [2020/08/05(水) 20:19:52.45 ID:wv4r4oF2.net]
>>197 Ruby (Windows)
# feed_ignition.rb
loop do
system( 'start "" feed.rb' )
sleep 60*60
end

# feed.rb
puts "#{Time.new.strftime('%Y/%m/%d %T')} えさをやりました。"
sleep 3 # 表示確認用

205 名前:デフォルトの名無しさん [2020/08/05(水) 23:41:13.11 ID:prJIGLTT.net]
>>197
Linux 等の UNIX系OS だったら普通なら crond が動いているので crontab 設定すると楽だ。
(Windows の場合はタスクの設定で似たような事ができる)。

例えばこのようにすると毎時0分に feed コマンドが実行される。

0 * * * * feed

ただ問題はこのままだと標準出力がリダイレクトされていないのでその出力がcrondからメールで送られて来る事になる。
(見たい場合は mail コマンドを使って見る)。


コマンドラインから直接やるとしたら watch コマンドというのもある。これは実行するたびに出力が変化する
ようなコマンドを定期的に動かしてその出力を画面上に表示するためのコマンドだが毎回出力が同じでも
あるいは何も出力しなかったとしても問題はない。1時間ごとに動かすならこうなる。

watch -n 3600 feed

もっと単純にシェルでループさせて実現する方法もある。(これだとようやっとプログラムっぽい見た目になる)

sh -c 'while : ; do feed ; sleep 3600 ; done'


feed コマンドについてはシェルスクリプトなら例えばこうしておけば良い。

#!/bin/sh
echo 'えさをやりました。'

206 名前:デフォルトの名無しさん mailto:sage [2020/08/05(水) 23:51:48.40 ID:prJIGLTT.net]
>>201はfeedで現在の日付を出すのを忘れた。

日付付けるなら例えばこうする。

#!/bin/sh
echo `date` 'えさをやりました。'

date コマンドに任せてしまってこんな風にもできる。(日時は YYYY-MM-DD hh:mm:ss の形式で出る)。

#!/bin/sh
date '+%F %T えさをやりました。'

207 名前:デフォルトの名無しさん [2020/08/06(木) 14:26:19.33 ID:HoaabIeAf]
>>138 Rust
use rand::Rng;
fn main() {
    let mut rng = rand::thread_rng();
    let mut vec : Vec<u8> = Vec::new();
    for _ in 1..20 {
        vec.push(rng.gen::<u8>());
    }
    let result: Vec<u8> = vec.iter().filter(|&x| x % 2u8 == 0u8).cloned().collect();
    for v in result {
        println!("{}", v);
    }
}

208 名前:デフォルトの名無しさん [2020/08/06(木) 16:22:14.55 ID:HoaabIeAf]
>>138 C++
#include <algorithm>
#include <iostream>
#include <vector>
int main() {
  auto vec = std::vector<int>{};
  for (int i = 0; i < 20; ++i) {
    vec.push_back(rand() % 10 + 1);
  }
  auto result = std::vector<int>{};
  std::copy_if(vec.begin(), vec.end(), std::back_inserter(result),
               [](int v) { return v % 2 == 0; });
  for (auto v : result) {
    std::cout << v << std::endl;
  }
}

209 名前:蟻人間 mailto:sage [2020/08/06(木) 18:50:53.87 ID:mzjhTFla.net]
お題: 現実世界でコイにえさをやるプログラム。

できるのか?

210 名前:デフォルトの名無しさん [2020/08/06(木) 19:02:17 ID:nx4HEXSE.net]
>>205
始めからPLCのプログラム限定って書け>>197



211 名前:デフォルトの名無しさん mailto:sage [2020/08/06(木) 19:06:41 ID:cHZDAcP7.net]
>>205
プログラムそのものは出力装置に繋がるビットをONにするとかを定期的にやれば良いだけなのでは?
で、ONになったらリレーで餌やり器のスイッチが入ってウイーンとかいって餌が一定量水槽に入る。

ていうか、全部ハードウェアだけででできないか?タイマーICってあったよね確か。

212 名前:蟻人間 mailto:sage [2020/08/06(木) 19:21:15.27 ID:mzjhTFla.net]
ハードウェアだとソフトウェア制御できない。成長を細かく制御したい。
普通のPCから安価で制御する方法はないのだろうか。
ニシキゴイを20匹ほど飼いたいのだが。

213 名前:デフォルトの名無しさん [2020/08/06(木) 19:23:23.77 ID:nx4HEXSE.net]
>>208
ピ・タ・ゴ・ラ・スイッチ

214 名前:デフォルトの名無しさん mailto:sage [2020/08/06(木) 19:37:26 ID:/QKQvkvR.net]
なぜ何度ツッコまれてもスレタイからずれようとするんですか?
学習できないんですか?

215 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/08/06(木) 19:46:21 ID:mzjhTFla.net]
>>210
ハードにも興味を持ってくれるといいな、と思って企画しました by 突撃商会

216 名前:デフォルトの名無しさん mailto:sage [2020/08/06(木) 19:58:03 ID:AWtnj9QL.net]
CDトレイを開閉するソフトを作りそれで餌やり器のボタンを押せ

217 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/08/06(木) 20:01:30 ID:mzjhTFla.net]
>>212
正解。次のお題お願いします。

218 名前:デフォルトの名無しさん [2020/08/06(木) 20:18:11.34 ID:nx4HEXSE.net]
【お題】正解にたどり着くようにアシストした得点を算出するプログラムを作れ
スケールは1点以上100点未満とする

219 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/08/06(木) 20:28:14 ID:mzjhTFla.net]
>>214
それは人間しかできないんで内科医?

220 名前:デフォルトの名無しさん mailto:sage [2020/08/06(木) 20:37:37 ID:sjF+gr/I.net]
クソコテ死ねよマジで



221 名前:デフォルトの名無しさん mailto:sage [2020/08/06(木) 20:53:50 ID:O/aURmUk.net]
>>208
その手の目的には Raspberry Pi がおすすめです
最近流行っているから多くのノウハウが容易に見つかりますよ

222 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/08/06(木) 21:07:24 ID:mzjhTFla.net]
>>217
ありがとうございます。使えそうなハードでかなりお買い得ですね。

三菱やパナソニックは、、、破壊的イノベーションができない連中か。。。

223 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/08/06(木) 21:16:15 ID:mzjhTFla.net]
IchigoJamというのもあるみたい。

224 名前:デフォルトの名無しさん mailto:sage [2020/08/06(木) 21:29:05.63 ID:8sSWlLgK.net]
スレチ
◆QZaw55cn4c はうせろ

225 名前: mailto:sage [2020/08/06(木) 22:26:16.70 ID:L4WiFaHt.net]
>>220
突然、どうしたのですか?

226 名前:デフォルトの名無しさん mailto:sage [2020/08/06(木) 22:38:17.00 ID:8sSWlLgK.net]
>>221
呼んでねえよハゲ消えろ

227 名前:蟻人間 mailto:sage [2020/08/06(木) 23:02:55.51 ID:mzjhTFla.net]
お題: 点結びパズルという簡単なパズルがある。紙の上にたくさんの点があり、それぞれの点の近くに番号が書かれていて、
番号の順に点を結べば、図案が浮かび上がるというものだ。
以下の手順に従ってモノクロPNG画像(300dpi前後)として与えられた点結びパズルを自動的に解くプログラムを作れ。画像処理。

(1) OCR技術や深層学習などにより、画像上の一文字が2mm以上6mm以下のアラビア数字(複数)を読み取り、数字の位置と数字の対を返す関数を作れ。数字の30度以上の回転は考える必要はない。
(2) 点結びパズルの点は直径0.5mm以上3mm以下の黒い丸い点だと仮定して、点と数字を関連付けるアルゴリズムを考案せよ。
ただし、数字に近い点が複数ある場合は「スマートに」割り振ること。
(3) 画像に実際に線分を描画して点結びパズルを回答するプログラムを作れ。
点と数字以外の枠線やタイトルなどは印刷されていないと仮定してもよい。

228 名前:デフォルトの名無しさん mailto:sage [2020/08/07(金) 00:08:41.77 ID:TzYKRTqH.net]
よく、ラズパイコンテストでやってる

水槽の中の金魚に、エサをやる装置とか

229 名前:デフォルトの名無しさん mailto:sage [2020/08/07(金) 11:29:33 ID:uQ4nbdFf.net]
債務が多い

230 名前:デフォルトの名無しさん [2020/08/07(金) 12:51:36 ID:lb7vo/Jy.net]
お題
文字列を大文字小文字を区別せずにソートして()でグルーピングしてください

入力: D a B c d c C A E c e B b
出力: (a A) (B B b) (c c C c) (D d) (E e)



231 名前:デフォルトの名無しさん [2020/08/07(金) 13:43:57.69 ID:uQ4nbdFf.net]
>>226 js
const inputStr = "D a B c d c C A E c e B b"
const expectedStr = "(a A) (B B b) (c c C c) (D d) (E e)"

const charVal = c => c.toUpperCase().charCodeAt()

function groupCharSort(str) {
const chars = str.split(" ")
const groups = {}
chars.forEach(c => {
const cv = charVal(c)
if (!groups[cv]) groups[cv] = []
groups[cv].push(c)
})
return Object.values(groups).sort((g1, g2) => charVal(g1[0]) - charVal(g2[0])).map(cs => `(${cs.join(" ")})`).join(" ")
}

const resultStr = groupCharSort(inputStr)

console.log("out :" + resultStr)
console.log("expect:" + expectedStr)
console.log(resultStr == expectedStr)

232 名前:デフォルトの名無しさん [2020/08/07(金) 13:48:23.69 ID:uQ4nbdFf.net]
const inputStr = "D a B c d c C A E c e B b"
const expectedStr = "(a A) (B B b) (c c C c) (D d) (E e)"

const charVal = c => c.toUpperCase().charCodeAt()

function groupCharSort(str) {
const chars = str.split(" ")
const groups = []
chars.forEach(c => {
const cv = charVal(c)
if (!groups[cv]) groups[cv] = []
groups[cv].push(c)
})
return groups.filter(Boolean).map(cs => `(${cs.join(" ")})`).join(" ")
}

const resultStr = groupCharSort(inputStr)

console.log("out :" + resultStr)
console.log("expect:" + expectedStr)
console.log(resultStr == expectedStr)


sort いらなかった

233 名前:デフォルトの名無しさん mailto:sage [2020/08/07(金) 14:51:48.30 ID:5vmbSLbR.net]
>>226 Ruby
# その 1
def igrouping( str )
gList = {}
str.split.each{|ch|
k = ch.downcase
gList[ k ] ||= []
gList[ k ] << ch
}
gList.keys.sort.map{|k| '(' + gList[ k ].join(' ') + ')' }.join(' ')
end

instr = 'D a B c d c C A E c e B b'
puts "入力: #{instr}"
puts "出力: #{igrouping( instr )}"

234 名前:デフォルトの名無しさん mailto:sage [2020/08/07(金) 14:52:06.69 ID:5vmbSLbR.net]
>>226 Ruby
# その 2
def igrouping( str )
i = 0
'(' + str.split.sort_by{|x| [ x.downcase, i += 1 ] }.join(' ').gsub( /(\w) (?!\1)/i ){"#{$1}) (#{$2}"} + ')'
end

instr = 'D a B c d c C A E c e B b'
puts "入力: #{instr}"
puts "出力: #{igrouping( instr )}"

235 名前:デフォルトの名無しさん mailto:sage [2020/08/07(金) 16:23:53.54 ID:uQ4nbdFf.net]
<<=って演算子ほしいな

236 名前:デフォルトの名無しさん mailto:sage [2020/08/07(金) 19:28:59 ID:P4+Ga4Bm.net]
>>226 Ruby

$><<gets.split.group_by{|c| c.ord % 32}.sort.map{|a| "(#{a.last.join ' '})"}.join(' ')


# => (a A) (B B b) (c c C c) (D d) (E e)

237 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 00:04:29 ID:b55CcwAR.net]
JavaScript では、Lodash を使うけど、
やっぱり、Ruby の方が、メソッドチェーンできるから良い

Lodash ではたまに「インスタンス.メソッド」の形にならない関数がある。
関数(オブジェクト)の形式

そこで、メソッドチェーンが途切れて、配列が実体化されてしまうから、
サイズと大きいと、ヤバイ

238 名前:デフォルトの名無しさん [2020/08/08(土) 00:46:24.94 ID:R/FWJxxqi]
>>226 C++
https://wandbox.org/permlink/WHokmEEX0tp8dRgo

C++で無理やりメソッドチェーンしてみた

239 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 07:24:36.17 ID:u/td9dv4.net]
lodash破壊的変更の関数あるの地味に謎だよな
一応 lodash/fpもあるけど

240 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 07:26:45.92 ID:u/td9dv4.net]
いや _.chainの話か
一瞬非推奨の流れ来たときから使ってないわ
メソッドチェーン嫌いではないけど



241 名前:デフォルトの名無しさん [2020/08/08(土) 09:18:46 ID:b55CcwAR.net]
>>226
Elixir

input_str = "D a B c d c C A E c e B b"

list = input_str
|> String.split # 文字列を空白で分割して、配列化する
|> Enum.group_by( &String.downcase/1 ) # 小文字へ変換して、グループ化する
|> Map.values # 値を取り出す
|> Enum.map( fn list -> Enum.join( list, " " ) end ) # 各要素を空白でつなげて、1つの文字列にする
|> Enum.map( fn str -> "(" <> str <> ")" end ) # 文字列を、( ) で囲む

# IO.inspect list

Enum.join( list, " " ) # 各要素を空白でつなげて、1つの文字列にする
|> IO.puts

242 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 14:04:33 ID:JvTsLjL+.net]
>>226
Python3
https://ideone.com/6VvEbi

全然短くならなかったんだけど皆どういう脳みそしてるの

243 名前:デフォルトの名無しさん [2020/08/08(土) 14:58:00 ID:gFRxrH0y.net]
>>226
perl

$input = "D a B c d c C A E c e B b";
map{push @{$h{uc $_}}, $_}(split / /, $input);
print map{map{"(".(join" ", @$_).")"}$h{$_}} sort{uc $a cmp uc $b} keys %h;


>>238
オブ脳ならぬラムダ脳なんだろうなぁ
同値でグループ化、代表元でソート、出力、これを関数でやってる

それかワンライナーへの偏執的な愛

244 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 15:53:05 ID:xsg1wzC9.net]
>>226 Ruby

gets.split.group_by(&:upcase).sort.map{|_,v|$><<"(#{v*' '}) "}

245 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 16:11:32.49 ID:yUCBpeXj.net]
>>238
一般論としてデータの処理と最後の文字列の組み立てを一緒にやらない方がいい
今どきPC上ならメモリーは潤沢にあるので
・グルーピングの処理してから
・各グループを文字列化
・さらにその文字列を順次出力
とした方がわかりやすいと思う
https://ideone.com/Tsio0O

246 名前:デフォルトの名無しさん [2020/08/08(土) 17:07:51.92 ID:HH2BebFt.net]
>>238
Pythonだとどうしても短くはならないな。
https://ideone.com/iFc6eL
groupbyのところは、defaultdictで書く方法もあるけど大差なし。

247 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 21:09:30.55 ID:JvTsLjL+.net]
>>239
Rubyの人もワンライナーだな
Rubyってショートコーディングに向いてるのかな?

>>241,238
なるほど

248 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 21:20:24 ID:bf+w2Xl6.net]
code golfなら基本はperlで、次点がRubyじゃないですかね

249 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 21:56:24 ID:JvTsLjL+.net]
>>244
そういうものなのね

250 名前:231 mailto:sage [2020/08/08(土) 22:49:25 ID:b55CcwAR.net]
関数型・メソッドチェーンなら、Ruby・Elixir。
長く、チェーンできるから

Elixir では関数の第一引数を、前のチェーンからの戻り値として渡せる

str = "a b c"

# 文字列を空白で分割して、配列化する
IO.inspect String.split( str )

str
|> String.split
|> IO.inspect

出力は、どちらも
["a", "b", "c"]



251 名前:231 mailto:sage [2020/08/08(土) 22:54:29 ID:b55CcwAR.net]
基本的に、Ruby・Elixir みたいに、
メソッドチェーンで、英語のように、左から右へ読めないとダメ

Python の内包表記みたいなのは、可読性が悪い

252 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 23:09:35.53 ID:n6UBlQy6.net]
ざっくりとした見た目しか気にしないのでパイプライン演算子と区別がつかないrubyガイジなのであったw

253 名前:デフォルトの名無しさん [2020/08/08(土) 23:14:07.63 ID:ifN2bgU4.net]
>>185
Java
https://paiza.io/projects/__QcFHuBny33chXSMMTA4Q

254 名前:デフォルトの名無しさん [2020/08/08(土) 23:32:15 ID:ifN2bgU4.net]
>>226
Java
https://paiza.io/projects/20JVV_t6hmPUha0B9AuKOA

255 名前:デフォルトの名無しさん [2020/08/09(日) 00:15:33.89 ID:cPfQFxYQ8]
Ruby上達したら便利そう
理想的なスクリプト言語だな

256 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 00:17:54.90 ID:/K790vfJ.net]
javaでもStream使うと意外と少なくかけるんだな
utilが充実してるな

257 名前:デフォルトの名無しさん [2020/08/09(日) 00:24:15.31 ID:cPfQFxYQ8]
これとかすげえ
https://www.youtube.com/watch?v=pgAHW8OpcTY

258 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 00:41:46.15 ID:uywZ9h5A.net]
>>185
Python3
https://ideone.com/1aordC

259 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 02:47:46 ID:Mt0Kh35r.net]
>>226
c#
using System;
using System.Linq;
class Program
{
static void Main(string[] args)
{
var input = "D a B c d c C A E c e B b";

foreach (var itm in input.Split(" ").GroupBy(p => p.ToUpper()).OrderBy(p => p.Key))
{
Console.Write("(" + string.Join(" ", itm) + ") ");
}


260 名前: }
}
[]
[ここ壊れてます]



261 名前:デフォルトの名無しさん [2020/08/09(日) 04:58:28 ID:bQgrv4ZF.net]
>>226
Kotlin
https://paiza.io/projects/zR3XGW4DaUAMXfqNq1oZ8A

262 名前:デフォルトの名無しさん [2020/08/09(日) 16:07:42 ID:HZ7sqguG.net]
お題
文字列abcdeを右に2つ回転するとdeabcとなる
文字列abcdeを左に2つ回転するとcdeabとなる

2つの文字列を入力として受け取り
2つの文字列が一致するか、または、文字列を回転させて一致した場合はtrueを返してください
さもなくばfalseを返してください

入力: abcde deabc
出力: true

入力: abcde cdeba
出力: false

263 名前:デフォルトの名無しさん [2020/08/09(日) 16:42:31.20 ID:/K790vfJ.net]
>>257 js

const isRotateStr = (a, b) => (a + a).indexOf(b) != -1

console.log(isRotateStr("abcde", "deabc"))
// true

console.log(isRotateStr("abcde", "cdeba"))
// false

264 名前:デフォルトの名無しさん [2020/08/09(日) 16:56:20.10 ID:DzMx1xPb.net]
問題として狙ってたかしらんけど、いきなり簡単な解法来ちゃったな。

265 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 16:59:23.64 ID:Uo9rXbdx.net]
aaとaaaを比較したらtrueになっちゃうね
文字サイズを最初にチェックすればいいかな?

266 名前:253 mailto:sage [2020/08/09(日) 19:01:45.47 ID:UiQUiAYf.net]
>>226 Perl5

push(@{$h{uc$_}}, $_) for qw{D a B c d c C A E c e B b};
print map{"(@{$h{$_}}) "} sort keys %h;

実行結果

~ $ perl 18_221_NCS_sort_grp.pl
(a A) (B B b) (c c C c) (D d) (E e)

267 名前:253 mailto:sage [2020/08/09(日) 19:17:23 ID:A1LNtpwx.net]
>>257 Perl5

use feature qw{signatures say};
sub strot_cmp($a, $b) {
 say "入力 $a $b";
 say "出力 ", "$a$a" =~ /$b/ ? 'true' : 'false';
}
strot_cmp qw{abcde deabc};
strot_cmp qw{abcde cdeba};

実行結果
~ $ perl 18_249_strot_cmp.pl
The signatures feature is experimental at 18_249_strot_cmp.pl line 2.
入力 abcde deabc
出力 true
入力 abcde cdeba
出力 false

268 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 20:09:27.60 ID:sb6ynJ/q.net]
Jニキも披露してくれよ

269 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 22:00:05.82 ID:BOQzPYI8.net]
>>226 octave
https://ideone.com/qHkxnH

>>257 octave
https://ideone.com/oKqnrA

270 名前:253 mailto:sage [2020/08/09(日) 22:27:07 ID:iNMqPGBy.net]
>>261 それだと「文字列を回転させて一致」のみならず「含まれている」場合もtrueになってしまうので修正

>>257 Perl5
use feature qw{signatures say};
sub strot_cmp($a, $b) {
 say "入力 $a $b";
 @a = "$a$a" =~ /^(.*)($b)(.*)$/;
 say "出力 ", (@a and "$a[2]$a[0]" eq $b) ? 'true' : 'false';
}
strot_cmp qw{abcde deabc};
strot_cmp qw{abcde cdeba};
strot_cmp qw{aaaaa aaa};

実行結果
~ $ perl 18_249_strot_cmp.pl
The signatures feature is experimental at 18_249_strot_cmp.pl line 2.
入力 abcde deabc
出力 true
入力 abcde cdeba
出力 false
入力 aaaaa aaa
出力 false



271 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 22:40:05 ID:/K790vfJ.net]
octave文法好みだけど結構古い言語なんだな

272 名前:253 mailto:sage [2020/08/09(日) 23:21:31.30 ID:dFp53gtH.net]
>>226 Python3

s = "D a B c d c C A E c e B b".split();
d = {}
for c in s:
  u = c.upper()
  if u in d: d[u] += ' ' + c
  else: d[u] = c
ks = sorted(d.keys())
print(' '.join(map(lambda x: '(%s)' % d[x], ks)))

実行結果
~ $ py 18_221_NCS_sort_grp.py
(a A) (B B b) (c c C c) (D d) (E e)

273 名前:デフォルトの名無しさん [2020/08/09(日) 23:56:04.43 ID:DzMx1xPb.net]
Perlだとこの程度でも正規表現使わないといかんのか?

274 名前:253 mailto:sage [2020/08/10(月) 00:02:07 ID:5Aj+dIHX.net]
>>267 を少し簡略化

>>226 Python3

s = "D a B c d c C A E c e B b".split();
d = {}
for c in s:
  u = c.upper()
  d[u] = d[u]+' '+c if u in d else c
print(' '.join(map(lambda x: '(%s)' % d[x], sorted(d.keys()) )))

275 名前:253 mailto:sage [2020/08/10(月) 00:03:02 ID:5Aj+dIHX.net]
>>268
substrとかでも書ける

276 名前:253 mailto:sage [2020/08/10(月) 01:07:06.98 ID:mTkq56mc.net]
>>268
>>265は一致する場合に対応するようあせって書いた面があり
正規表現を使うのはやりすぎ感があったのは確かなので
顕に正規表現を使わずに書きを考えてみた。
もっとも簡素な書き方として思いついたのがsplitで三分割して
前後の余った文字列を連結したらそれも一致するかなので

>>257 Perl5
use feature qw{signatures say};
sub strot_cmp($a, $b) {
 say "入力 $a $b";
 @a = split "$b", "$a$a", 3;
 say "出力 ", ("$a[2]$a[0]" eq $b) ? 'true' : 'false';
}
strot_cmp qw{abcde deabc};
strot_cmp qw{abcde cdeba};
strot_cmp qw{aaaaa aaa};

…でもsplitも実は正規表現で分離する機能を持つので、起きていることは実は>>265と一緒なんだよね

277 名前:253 mailto:sage [2020/08/10(月) 01:18:32.03 ID:mTkq56mc.net]
>>271 ゴメン、$a[2]$a[0]はbug、訂正

>>257 Perl5
use feature qw{signatures say};
sub strot_cmp($a, $b) {
 say "入力 $a $b";
 @a = split $b, "$a$a", 3;
 say "出力 ", ("$a[1]$a[0]") eq $b ? 'true' : 'false';
}
strot_cmp qw{abcde deabc};
strot_cmp qw{abcde cdeba};
strot_cmp qw{aaaaa aaa};

278 名前:253 mailto:sage [2020/08/10(月) 01:58:56.02 ID:5YDTUTIu.net]
>>272 ゴメン
× @a = split $b, "$a$a", 3;
○ @a = split $b, "$a$a", 2;

279 名前: mailto:sage [2020/08/10(月) 02:53:12.35 ID:JYoLJZbs.net]
>>257 C
https://mevius.5ch.net/test/read.cgi/tech/1434079972/68

280 名前:デフォルトの名無しさん [2020/08/10(月) 05:44:26 ID:SKFyjjt9.net]
お題:
Brainfuck実行環境を作成し,以下のhello.bfを読み込み実行してください

入力: https://github.com/pablojorge/brainfuck/blob/master/programs/hello.bf
出力: "Hello World!"



281 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 08:49:19.32 ID:SwBLGnEH.net]
>>275 Ruby

require 'open-uri'
str = open('https://raw.githubusercontent.com/pablojorge/brainfuck/master/programs/hello.bf').read

M = 256
i = p = s = 0
h = Hash.new(0)
m = [0] * M
while i < str.length
  case str[i]
  when ?+ then m[p] += 1
  when ?- then m[p] -= 1
  when ?[ then h[s += 1] = i
  when ?] then m[p].zero? ? s -= 1 : i = h[s]
  when ?> then p += 1
  when ?< then p -= 1
  when ?. then $><<m[p].chr
  when ?, then m[p] += $<.getc.ord
  end
  i += 1
end

# => Hello World!

282 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 08:49:26.47 ID:OSJh6/O/.net]
>>275 Ruby
https://ideone.com/A0JIsc

283 名前:デフォルトの名無しさん [2020/08/10(月) 17:10:10.24 ID:Z7zFlWuQ.net]
>>257
Kotlin

簡単なやり方は出尽くしたのであえてグルグル回すだけのIteratorを作成した。

https://paiza.io/projects/TxupVLPTStBv7o1MiTuDEQ

284 名前:デフォルトの名無しさん [2020/08/10(月) 17:10:16.38 ID:SKFyjjt9.net]
>>275 C++
https://ideone.com/Lpmngq

285 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 18:01:14 ID:Z7zFlWuQ.net]
>>275
Kotlin

とりあえず簡単そうだったので Kotlin へのコンバータを作った(コンバータなのでKotlinのソースを出力するだけ)。
実行したい場合はその出力を Kotlin コンパイラに読ませてコンパイルしてから Java VM で動かす必要がある。

https://paiza.io/projects/q8vkgGoAei9W2gfLA4xP4Q

こちらの Linux 環境でコマンドラインの kotlinc を使ってやった時はこうやった。(BF2Kotlin.kt がコンバータ。hello.bf はダウンロードしたプログラム)

$ kotlinc BF2Kotlin.kt
$ kotlin BF2KotlinKt < hello.bf > hello.kt
$ kotlinc hello.kt
$ kotlin HelloKt
Hello World!

286 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 18:43:36.36 ID:TsKVv45J.net]
>>257
Python3
https://ideone.com/DvaLMh

287 名前:デフォルトの名無しさん [2020/08/10(月) 21:10:04.86 ID:EfqLUS40.net]
>>257 Python3
def f(a, b): return len(a) == len(b) and a in b + b

288 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 22:32:27 ID:tDeKMBiv.net]
>>257 c
https://ideone.com/BcT5su

289 名前:デフォルトの名無しさん [2020/08/10(月) 23:41:40.77 ID:SKFyjjt9.net]
>>257 C++
https://ideone.com/p6Y7W4

290 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 23:46:58.70 ID:lJp+wmfa.net]
bfってループの入れ子できたっけ?



291 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 23:47:11.22 ID:SwBLGnEH.net]
>>285
できる

292 名前:272 mailto:sage [2020/08/11(火) 01:47:49 ID:RwCZynCZ.net]
>>275
Kotlin

これはインタープリタ版。

https://paiza.io/projects/J-pCgNSAEcATixwsNPmyGQ

293 名前:デフォルトの名無しさん mailto:sage [2020/08/11(火) 01:50:50.24 ID:RwCZynCZ.net]
>>285
知らんけど >>287 は出来るように作った。
>>280 のやつはコンバータだが Kotlin が出来るので出来る。(というか出来ないように作る方が面倒かな?)

294 名前:デフォルトの名無しさん mailto:sage [2020/08/11(火) 07:40:40.35 ID:RSsrE9PW.net]
>>257
>>281をリファクタリング
https://ideone.com/gR6WqL

295 名前:デフォルトの名無しさん [2020/08/11(火) 14:40:27.33 ID:psN1NwFJ.net]
こんなに暑いと座禅プログラムで涼みたい。

296 名前:デフォルトの名無しさん [2020/08/12(水) 10:55:20.81 ID:WiVroiaz.net]
警策を上から振り下ろす動作の機械を作り、そこにマイコンを接続。更に行ったり
来たりするルンバのようなものの上にそれを乗せ、そこにもマイコンを接続。
そのマイコンのコントロールプログラムを作成。

297 名前:デフォルトの名無しさん [2020/08/12(水) 11:07:50.98 ID:WiVroiaz.net]
既にこんなの作ってる人が居た。

座禅で動いたら棒で叩かれるやつを全自動化する
https://dailyportalz.jp/kiji/zazen-bou-automation

298 名前:デフォルトの名無しさん [2020/08/12(水) 16:50:07.72 ID:xjprAYba.net]
令和のコペルニクス
https://youtu.be/7DbdPKWhrpY

299 名前:デフォルトの名無しさん [2020/08/12(水) 19:58:36.03 ID:j5y8ZKQl.net]
お題
Brainfuckのの'+','-','.'の 3つの命令のみで
特定の文字列を表示するBrainfucの
ソースコードを生成するプログラム。

300 名前:デフォルトの名無しさん mailto:sage [2020/08/12(水) 20:07:13.01 ID:kGuev0jH.net]
>>294 Ruby

puts "Hello, World!\n".codepoints.unshift(0).each_cons(2).map{|a, b| '%s.' % ((b > a ? ?+ : ?-) * (b - a).abs)}*''

# =>
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
+++++++++++++++++++++++++++++.+++++++..+++.[略]



301 名前:デフォルトの名無しさん mailto:sage [2020/08/12(水) 23:55:21 ID:WiVroiaz.net]
差分出すっていうと ADPCM の圧縮を思い出すな。

302 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 01:08:54.66 ID:TUx4JMNp.net]
>>294
Perl5

プログラムの構造は >>295 と同じだがワンライナー。
行単位で標準入力から入力して標準出力に出力する。入力の最後の改行は削除している。行ごとに直前の文字は0にリセットしている。
見易くするために '.' の後には改行を出力している。

以下は Linux のシェルのコマンドラインで実行して abc と Hello, world. を入力した時のコピペ。

$ perl -ne 'BEGIN{$o=0}chomp;for(split //){$c=ord($_);print((($o < $c ? "+" : "-") x abs($o - $c)) . ".\n");$o=$c}$o=0'
abc
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
+.
+.
Hello, world.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
+++++++++++++++++++++++++++++.
+++++++.
.
+++.
-------------------------------------------------------------------.
------------.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
--------.
+++.
------.
--------.
------------------------------------------------------.
$

303 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 01:49:54 ID:CZu90IWX.net]
>>294 Ruby
"Hello World!\n".codepoints.inject(''){|r,c| r << '+' * c + '.[-]' }

304 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 03:32:09 ID:CZu90IWX.net]
>>294 Ruby
"Hello World!\n".codepoints.map{|c| '+' * c + '.' }.join( '[-]' )

305 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 05:51:07.18 ID:CZu90IWX.net]
>>294
>>298,299 は出題条件の「'+','-','.'の 3つの命令のみ」を忘れてましたご免なさい

306 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 06:48:39.25 ID:9ZM4Lmsz.net]
>>294 Ruby

gets.each_char{|c|d=$.-$.=c.ord;$><<(d<0? ?+*-d:?-*d)+?.}

307 名前:デフォルトの名無しさん [2020/08/13(木) 12:37:03.85 ID:8zEuDtsy.net]
なるほどbrainfuckでは[-]で現在指してるメモリの値を0クリアできるのか

308 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 01:20:11 ID:CuxcYYZ5.net]
お題:変数a, b, cを32ビット符号付き整数の最大値で初期化、または代入せよ。

octave
https://ideone.com/62dSzC

ada95
https://ideone.com/26IGLZ

309 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 03:17:07 ID:cCFmHkiX.net]
>>303 Ruby
# 初期化だけ
a = b = c = 2**31 - 1

# 初期化して表示
p *(a,b,c = [2**31-1] * 3) #=> 2147483647\n2147483647\n2147483647\n

310 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 07:01:38 ID:cCFmHkiX.net]
>>303 Ruby
お題とずれるけど INT32_MAX, INT32_MIN を普通の演算以外で作ってみた

# 定数 0,1 から INT32_MAX, INT32_MIN
[~0].pack('l').unpack('L').first >> 1 #=> 2147483647
[~0].pack('l').unpack('N').first >> 1 #=> -2147483648

# 定数 1 から INT32_MAX, INT32_MIN
[~1].pack('l<').unpack('b*').pack('B*').unpack('l>').first #=> 2147483647
[1].pack('l<').unpack('b*').pack('B*').unpack('l>').first #=> -2147483648



311 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 08:01:01.07 ID:sgFs/qSh.net]
>>303 JavaScript
a=b=c=-1>>>1

312 名前:デフォルトの名無しさん [2020/08/14(金) 08:17:19.00 ID:jifd8sPx.net]
>>303 C++
int32_t max = 1 << 31;
int32_t min = ~max;

313 名前:デフォルトの名無しさん [2020/08/14(金) 08:18:37.41 ID:jifd8sPx.net]
あ maxとminが逆だった

314 名前:デフォルトの名無しさん [2020/08/14(金) 08:20:39.60 ID:jifd8sPx.net]
しかもお題と関係ない スマソ

315 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 08:21:04.21 ID:hpI++Bi7.net]
>>303 Python では整数に制限がないからnumpyで、

import numpy as np
a=b=c=np.iinfo(np.int32).max

316 名前:デフォルトの名無しさん [2020/08/14(金) 08:38:19 ID:jifd8sPx.net]
>>303 C++(訂正)
#include <iostream>
#include <tuple>

int main() {
int32_t max = ~(1 << 31);
const auto [a, b, c] = [&]() { return std::tie(max, max, max); }();
std::cout << a << std::endl;
std::cout << b << std::endl;
std::cout << c << std::endl;
}

317 名前:デフォルトの名無しさん [2020/08/14(金) 09:05:58 ID:jifd8sPx.net]
const auto [a, b, c] = std::tie(max, max, max);
これだけでよかったorz

318 名前:デフォルトの名無しさん [2020/08/14(金) 14:02:54 ID:9qHjnK+i.net]
お題:任意文字列を含むビットコインアドレスを生成するスクリプト

BitCoinDescriptionAddress

1BitCoinDescriptionAddressadTvGDH

319 名前:デフォルトの名無しさん [2020/08/15(土) 16:58:24 ID:gFfdk9Ij.net]
>>303
Kotlin 及び Kotlin script

普通にただ Int.MAX_VALUE を代入するだけだとつまらないので List 使ってまとめて代入。

val (a, b, c) = listOf(Int.MAX_VALUE, Int.MAX_VALUE, Int.MAX_VALUE)

この形式は実際には a に List のインスタンスの component1() メソッドを実行して結果を代入、
b に component2() の結果を代入、c に component3() の結果を代入という具合に componentN()
のメソッドを呼び出しているだけだ。(コンパイラが自動でそういう風にしてくれる。但し定数の代入
だったら最終的にはうまい事最適化してくれてただの値の代入になっているんじゃないかと思う)。

それで、List インターフェースには component5() までしかないのでそのままだと 5 個の変数にしか
代入できない。しかし自分で下記のように component6() という拡張関数を作れば 6 個目の変数への
代入ができるようになる。

fun <T> List<T>.component6() = get(5)

val (a, b, c, d, e, f) = listOf(Int.MAX_VALUE, Int.MAX_VALUE, Int.MAX_VALUE, 1, 2, 3)

これで f には 3 が代入される。

まあしかしこのような形式でまとめて複数の変数を初期化をするのは変数が多くなればなるほど
見辛くなってどれがどれに代入されるか分かり辛くなるのであまりお勧めする気は起きない。

320 名前:295 mailto:sage [2020/08/15(土) 17:28:56 ID:nnj+MvqH.net]
>>303 octave
https://ideone.com/FgfsWd
単に[a, b, c] = deal(intmax)でよかった



321 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 17:57:15 ID:uqmyrozg.net]
お題
長さNの順列を全列挙してください

入力: N
出力: N!行の1からNの整数を用いた順列


入力: 3
出力:
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

322 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 18:04:12.38 ID:WnA8LB9O.net]
>>316 Ruby

[*1..gets.to_i].permutation{|a| puts a*' '}

323 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 18:07:06.59 ID:nnj+MvqH.net]
>>316 octave
https://ideone.com/dC1LGs
f = @(n) perms(1:n);
f(3)

324 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 19:24:16.43 ID:4GsEJ4Sf.net]
お題
HTMLドキュメントをwebブラウアザ上に表示するプログラムを作りなさい。

内容は、html、head、meta、title、body、h1 を含み、
UTF-8で表示するものとする、

Hello World!

325 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 20:07:59.51 ID:nR02Shr3.net]
お題: 整数の0,1を真偽値のfalse,trueに変換しなさい

326 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 20:22:45.39 ID:BUqVCKAW.net]
>>319 Ruby
require 'webrick'

BrowserPath = 'C:/Program Files/Mozilla Firefox/firefox.exe'

srv = WEBrick::HTTPServer.new( {BindAddress: '127.0.0.1', Port: 55080} )
trap("INT"){ srv.shutdown }

srv.mount_proc('/') do |req, res|
html = <<_EOT_
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Title</title></head>
<body>
<h1>Hello World!</h1>#{Time.now.strftime('%y/%m/%d %T')}<br></body></html>
_EOT_
res.body = html.encode( Encoding::UTF_8 )
res['Content-Type'] = 'text/html'
end

Thread.new { sleep 1; system( %Q{"#{BrowserPath}" 127.0.0.1:55080/} ) }

srv.start

327 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 20:34:31.85 ID:BUqVCKAW.net]
>>320 Ruby
def i2b( x )
if x.is_a?( Integer )
return false if x == 0
return true if x == 1
end
x
end

[ 'foo', 7, 1, 1.0, [], true, false, 0, {} ].each{|x|
puts "%5p : %5p" % [x, i2b( x )]
}
# =>
"foo" : "foo"
7 : 7
1 : true
1.0 : 1.0
[] : []
true : true
false : false
0 : false
0 : false
{} : {}

328 名前:314 mailto:sage [2020/08/15(土) 20:37:12.09 ID:BUqVCKAW.net]
>>322
0 : false
が一行余分に付いてしまった

329 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 20:49:55 ID:WnA8LB9O.net]
>>320 Ruby

n.nonzero?

330 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 20:59:34.51 ID:nnj+MvqH.net]
>>320 ocaml
https://ideone.com/nSKbMo
let f = function 0 -> false | 1 -> true
let () = Printf.printf "%B %B" (f 0) (f 1)

>>320 c++
https://ideone.com/Dm4QrP
#include <iostream>
#include <iomanip>
int main() {




331 名前:std::cout << std::boolalpha << 0 << !!0 << 1 << !!1 << std::endl;
return 0;
}
[]
[ここ壊れてます]

332 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 21:22:21.80 ID:v9cGseLQ.net]
>>320
0, 1以外の時の挙動が書いてない
単体テストできねーだろ、やり直し!

333 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 23:19:07 ID:gFfdk9Ij.net]
>>320
Kotlin 及び Kotlin Script

まず、こういう拡張関数を定義しておく。

fun Int.toBoolean() = this != 0

この後は Int 型のインスタンスに対して .toBoolean() で 0 なら false, 0 以外なら true が返る。


0.toBoolean() は false になる。
1.toBoolean() は true になる。
x.toBoolean() は x の型が Int で 0 なら false, 0 以外なら true になる。x がその他の型だとコンパイルエラー。

334 名前:デフォルトの名無しさん mailto:sage [2020/08/16(日) 02:10:15.75 ID:aQEvXwVj.net]
>>316 C
https://ideone.com/1EStFG

335 名前:デフォルトの名無しさん [2020/08/16(日) 10:54:19.77 ID:DGzsHTxH.net]
Python

>>320
bool(n)

>>316
from itertools import permutations
N = 3
print([x for x in permutations(range(1, N+1))])

336 名前:デフォルトの名無しさん [2020/08/16(日) 11:17:36 ID:x8ZjthFZ.net]
>>316 C++
https://ideone.com/vnmcwl

337 名前:デフォルトの名無しさん [2020/08/16(日) 19:28:34.07 ID:Stgr85a5.net]
>>316
Kotlin
https://paiza.io/projects/m-rh9LUdWqgBDV_7xXtTdA

なんとなく以前作ったような気もするがまた作った。

338 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/08/16(日) 19:41:54 ID:GwA/W8AI.net]
お題: 浮動小数点数の区間演算の加減乗除(+、-、*、/)を実現しなさい。開区間は丸カッコを、閉区間は角カッコを使う。
区間はカッコで囲まれた数の対で表すものとする。ここで対の最初の要素は対の最後の要素以下とする。

例)
[1, 3) + 2 → [3, 5).
[2, 8] - [1, 2] → [0, 7].
(-3, 2] * (1, [2, 3)) → (-9, 6).

339 名前:デフォルトの名無しさん mailto:sage [2020/08/16(日) 19:47:13.56 ID:WQRWSQYc.net]
>>332
ほんとクソだなお前
なんで数と区間が何の説明もなく比較可能な状態になってんだよ
教養レベルの位相と集合の知識身に付けてから出直せハゲ

340 名前:蟻人間 mailto:sage [2020/08/16(日) 19:54:55.84 ID:GwA/W8AI.net]
>>333
入力の計算式において単一の数は同等の閉区間と見なすことにする。
2 → [2, 2].



341 名前:デフォルトの名無しさん mailto:sage [2020/08/16(日) 19:59:26.75 ID:WQRWSQYc.net]
>>334
任意の区間に対してどのように順序を定義して全順序集合を構成するのか考えてから言えよクソ雑魚が

342 名前:デフォルトの名無しさん mailto:sage [2020/08/16(日) 20:01:44.11 ID:5GlLVozn.net]
そもそも 2 と [2, 2] が同じだと思ってる時点でやばいよ
ペアノ系で 0 = 1 って言ってるようなもんだぞ

343 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/08/16(日) 20:08:52 ID:GwA/W8AI.net]
>>335
任意の[x, y]についてx<=yと仮定する。

[a, b] + [c, d] == [a+c, b+d].
[a, b] - [c, d] == [a-d, b-c].
[a, b] * [c, d] == [min(a*c, b*c, a*d, b*d), max(a*c, b*c, a*d, b*d)].
[a, b] / [c, d] == [min(a/c, b/c, a/d, b/d), max(a/c, b/c, a/d, b/d)].

344 名前:デフォルトの名無しさん mailto:sage [2020/08/16(日) 20:11:24.43 ID:WQRWSQYc.net]
>>337
順序の定義しろっつってんだろクソが
「(1, [2, 3))」かつ「対の最初の要素は対の最後の要素以下とする」って言ってるってことは
[1, 1] <= [2, 3) なんだろ?
任意の区間の間で矛盾なく順序を定義しろや

345 名前:蟻人間 mailto:sage [2020/08/16(日) 20:24:24.91 ID:GwA/W8AI.net]
>>338
すみません。カッコの入れ子はややこしいので止めます、、、

というのは簡単だが、あえて考える。

b<=cならば、間違いなく[a, b] <= [c, d]は真。
d<aならば、[a, b] <= [c, d]は

346 名前:U。
それ以外は[a, b] <= [c, d]の論理値は不定とし、実行時エラーを発生させる。
[]
[ここ壊れてます]

347 名前:デフォルトの名無しさん mailto:sage [2020/08/16(日) 20:32:34 ID:WQRWSQYc.net]
>>339
完全律すら成り立たない順序ってなんだよ
「カッコの入れ子はややこしい」とかそういうレベルじゃねえんだよ

だいたい [a, b] - [a, b] = [a - b, b - a] != 0 ってクッソきもいんですけど
お前群論なめてんのか

348 名前:デフォルトの名無しさん mailto:sage [2020/08/16(日) 20:34:23 ID:1lLvvYB6.net]
計算の順番を変えたりするだけで簡単に全部エラーにできるから流石にお粗末だね

349 名前:デフォルトの名無しさん mailto:sage [2020/08/16(日) 20:50:12.97 ID:5EzRC1Sr.net]
>>339
死ねカス

350 名前:蟻人間 mailto:sage [2020/08/16(日) 20:54:18.06 ID:GwA/W8AI.net]
>>340

> だいたい [a, b] - [a, b] = [a - b, b - a] != 0 ってクッソきもいんですけど

[a - b, b - a] はゼロを中心とした区間の誤差範囲を表してるから間違いではない。計算機の内部には群論が成り立たない汚い演算もある。



351 名前:デフォルトの名無しさん mailto:sage [2020/08/16(日) 20:57:11.13 ID:rY4w2Ca/.net]
まーたスレタイからズレてるよ
問題に不備があったなら取り下げて勉強し直してこい
群論を教えるスレじゃない
何があえて考えてみるだ

352 名前:デフォルトの名無しさん mailto:sage [2020/08/16(日) 21:13:43.55 ID:WQRWSQYc.net]
where 0 < a < b
0 = 0 * [0, 1]
= ([a, b] + [-a, -b]) * [0, 1]
= [a, b] * [0, 1] + [-a, -b] * [0, 1]
= [0, b] + [-b, 0]
= [-b, b]
!= [0, 0] = 0

矛盾
死ね
消えろ

353 名前:蟻人間 mailto:sage [2020/08/16(日) 21:16:32.00 ID:GwA/W8AI.net]
>>345
0 < a < bのときは、[-a, -b]は定義されない。

354 名前:デフォルトの名無しさん mailto:sage [2020/08/16(日) 21:29:26.85 ID:WQRWSQYc.net]
>>346
順序の定義が矛盾してるんだから[-a, -b]は定義可能であっても良い
本当頭わりいな

355 名前:デフォルトの名無しさん mailto:sage [2020/08/16(日) 21:34:29.96 ID:1lLvvYB6.net]
[0, 1]*[0, 1] = [0, 1]
<=> [0, 1]*([0, 1] - 1) = 0
<=> [0, 1]*[-1, 0] = 0
<=> [-1, 0] = 0
流石にひどいって

356 名前:蟻人間 mailto:sage [2020/08/16(日) 21:48:28.85 ID:GwA/W8AI.net]
加法
(1) 交換法則
(2) 結合法則
(3) 単位元の存在
(4) 逆元の存在
乗法
(5) 交換法則
(6) 結合法則
(7) 分配法則

357 名前:蟻人間 mailto:sage [2020/08/16(日) 22:04:28.19 ID:GwA/W8AI.net]
逆元がないから、減法が壊れてる。
区間に逆元があるように減法を定義することはできない。

すみません、取り下げます。

358 名前:デフォルトの名無しさん mailto:sage [2020/08/16(日) 22:08:12.76 ID:WQRWSQYc.net]
>>350
それ以前の問題だっつーのアホ
任意の数 a, b に対して容易に a = b が成立するクソ

359 名前:デフォルトの名無しさん mailto:sage [2020/08/16(日) 22:16:18.77 ID:UYHP6Cr3.net]
問題を解くスキル<<<<<解ける問題を作るスキル
だったりするかも

360 名前:デフォルトの名無しさん [2020/08/16(日) 22:26:48.34 ID:Nztll5gc.net]
>>316
Java
https://paiza.io/projects/mS3LllUfo8J5zcCeI_m8qQ



361 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/08/16(日) 22:46:06 ID:GwA/W8AI.net]
やり直し。

お題: 区間と演算子によって構成される計算式が入力として与えられる。下記に従って浮動小数点数の区間に対する二項演算(+、-、*、/)を実現し、計算後の区間を出力しなさい。入力される区間は閉区間のみとする。

閉区間は角カッコで囲まれた浮動小数点数の対で表すものとする。ここで対の最初の要素は対の最後の要素以下とする。すなわち[a, b]という式があればa<=bでなければならない。

式が正当でないか、ゼロ除算があれば、実行時エラーを発生させること。

演算の定義:
[a, b] + [c, d] := [a+c, b+d].
[a, b] - [c, d] := [a-d, b-c].
[a, b] * [c, d] := [min(a*c, b*c, a*d, b*d), max(a*c, b*c, a*d, b*d)].
[a, b] / [c, d] := [min(a/c, b/c, a/d, b/d), max(a/c, b/c, a/d, b/d)].

例)
[1, 3] + [2, 2] → [3, 5].
[2, 8] - [1, 2] → [0, 7].
[-3, 2] * [1, 3] → [-9, 6].

362 名前:デフォルトの名無しさん mailto:sage [2020/08/16(日) 22:58:27.46 ID:bYLilpPQ.net]
つーか
boost::numeric::interval
とかいう実装があってな
あながちおかしな話ではない

かと言って
そんな車輪の再生産みたいなお題を受けたい気はしないのだが

363 名前: mailto:sage [2020/08/16(日) 23:34:04.85 ID:kJzMyvlv.net]
>>316 C
https://ideone.com/wbwxg3

364 名前:253 mailto:sage [2020/08/16(日) 23:50:47.82 ID:G5r8RAij.net]
>>316 Perl5

use Data::Dump 'dump';
sub fn {
 my ($le, $pv, @ri) = @_;
 defined $pv ? map {[$pv, @$_]} fn([], @$le, @ri) : ([])
  ,
 @ri ? fn([@$le, $pv], @ri) : ()
}
$N = 3;
@a = 1..$N;
print dump(fn [], @a);


実行結果
$ perl 18_308_N_permutation.pl
([1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1])

365 名前:デフォルトの名無しさん [2020/08/17(月) 01:49:55.07 ID:Nup7rIuH.net]
前の書き方だとやる気が出ないみたいなので再掲

お題 任意文字列を含む有効なビットコインアドレスを生成するにはどうすればいいか

ビットコインアドレスの形式は
[プレフィックス 1バイト] [本体データ 160ビット] [チェックサム 4バイト]
をbase58(58進数)で表現したもの

プレフィックスは0x00とする
チェックサムはプレフィックス+本体データをsha256に二回かけた後の先頭4バイト

詳細
https://www.tottemoyasashiibitcoin.net/entry/2018/02/04/165300

例:
1BitCoinDescriptionAddressadTvGDH
1MayukoMuraokaXXXXXXXXXXXXXXX5f8QC

これはどっちも有効なビットコインアドレスになってる
https://chainflyer.bitflyer.com/Address/1BitCoinDescriptionAddressadTvGDH
https://chainflyer.bitflyer.jp/Address/1MayukoMuraokaXXXXXXXXXXXXXXX5f8QC

366 名前:デフォルトの名無しさん mailto:sage [2020/08/17(月) 06:10:10.64 ID:sRZ0bbBO.net]
>>354
消えろカス

367 名前:デフォルトの名無しさん mailto:age [2020/08/17(月) 08:34:59.13 ID:4e6PsksO.net]
>>359
お前うざいよ

368 名前:デフォルトの名無しさん mailto:sage [2020/08/17(月) 09:10:13 ID:CGaaR/Ic.net]
どうすればいいか?ってのがよくわからない

369 名前:デフォルトの名無しさん mailto:sage [2020/08/17(月) 09:11:51.56 ID:CGaaR/Ic.net]
入力と出力をはっきりさせてほしい
それとも取引所の仕様を理解しろって話なの?

370 名前:デフォルトの名無しさん [2020/08/17(月) 11:17:26.81 ID:2KNIyB/f.net]
ブルートフォースアタックしか思い浮かばない。



371 名前:デフォルトの名無しさん [2020/08/17(月) 18:12:59.56 ID:Nup7rIuH.net]
入力が任意文字列で出力がそれを含む有効なビットコインアドレス
例にあるやつだとMayukoMuraokaが任意文字列の部分
XXX…っていうのはただの本体データ160bitのあまりスペースを埋めてるだけだからなんでもいい
それに対応して最後のチェックサムも任意性がある
直感だとブルートフォースが必要そうだけど実際は単純なやり方でできる

372 名前:デフォルトの名無しさん [2020/08/17(月) 19:37:06.53 ID:4e6PsksO.net]
秘密鍵でデコードできなくてもいんでしょ?
じゃあbase58で表されたバイト値と文字列を変換するだけじゃん

373 名前:デフォルトの名無しさん mailto:sage [2020/08/17(月) 19:45:01.16 ID:Nup7rIuH0.net]
基本的にはそれだけのこと
実際の手順を考えるとちょっとややこしいことがあるくらい
ということで実装してみよう

374 名前:デフォルトの名無しさん mailto:sage [2020/08/17(月) 22:43:06.44 ID:sRZ0bbBO.net]
>>360
お前がうぜえよ死ね

375 名前:デフォルトの名無しさん [2020/08/17(月) 22:47:24.50 ID:4e6PsksO.net]
>>367
お前が死ね

376 名前:デフォルトの名無しさん mailto:sage [2020/08/17(月) 22:50:53.21 ID:3fwftKf8.net]
よし俺がしぬよ

377 名前:デフォルトの名無しさん mailto:sage [2020/08/17(月) 22:53:16.60 ID:UMcd904E.net]
夏だなあ

378 名前:デフォルトの名無しさん [2020/08/17(月) 22:56:52 ID:4e6PsksO.net]
>>369
じゃあ俺が死ぬよ

379 名前:デフォルトの名無しさん mailto:sage [2020/08/17(月) 22:57:17 ID:3fwftKf8.net]
お題: 『死』を表現せよ

380 名前:デフォルトの名無しさん mailto:sage [2020/08/17(月) 22:57:32 ID:3fwftKf8.net]
>>371
どうぞうどうぞ



381 名前:デフォルトの名無しさん mailto:sage [2020/08/17(月) 22:58:07 ID:sRZ0bbBO.net]
>>371
じゃあ死ねよ

382 名前:デフォルトの名無しさん [2020/08/17(月) 23:05:20 ID:4e6PsksO.net]
>>374
全然おもんないやんけ
もう一回チャンスをやろう

383 名前:デフォルトの名無しさん [2020/08/17(月) 23:05:35 ID:4e6PsksO.net]
じゃあ俺が死ぬよ

384 名前:デフォルトの名無しさん [2020/08/17(月) 23:05:59 ID:4e6PsksO.net]
くるよくるよ

385 名前:デフォルトの名無しさん [2020/08/17(月) 23:06:13 ID:4e6PsksO.net]
ドキドキ

386 名前:デフォルトの名無しさん [2020/08/17(月) 23:39:35 ID:4e6PsksO.net]
逃げたか

387 名前:デフォルトの名無しさん [2020/08/17(月) 23:39:58 ID:4e6PsksO.net]
笑いから逃げるな

388 名前:デフォルトの名無しさん mailto:sage [2020/08/18(火) 00:15:03.77 ID:/+dAg+CW.net]
お題: 二人の煽り耐性から「死ね」と言い合うプログラム

煽り耐性 0.1〜1
死ねと言い返す確率 (1-煽り耐性) * 100%
最初に死ねと言うのはA
入力 {Aの煽り耐性} {Bの煽り耐性}

> 0.1 0.8
A「死ね」
B「死ね」
A「死ね」

389 名前:デフォルトの名無しさん mailto:sage [2020/08/18(火) 01:25:39.14 ID:IZwRntbA.net]
if (>>381{A}%3 ==0.1&&0.8<<373{B}) print "オモロー" & "アキラ" *100% ;

390 名前:デフォルトの名無しさん mailto:sage [2020/08/18(火) 01:35:33.42 ID:Vl5MoMXT0.net]
>>358 js

const input = "programmingodaisure"

let tmp_str = input;
let tmp_hex = new Uint8Array();

do {
tmp_str += "X";
tmp_hex = [0x00, ...Base58.decode(tmp_str)];
} while (tmp_hex.length < 25)

const prefix_and_data = tmp_hex.slice(0, -4);

const doubleSha256 = sha256.digest(sha256.digest(prefix_and_data))
const checkSum = doubleSha256.slice(0, 4);

const result_hex = new Uint8Array([...prefix_and_data, ...checkSum]);
const result_str = Base58.encode(result_hex);

console.log(result_str);

→ "1programmingodaisureXXXXXXXZHx9sj"

https://chainflyer.bitflyer.jp/Address/1programmingodaisureXXXXXXXZHx9sj

BASE58とSHA256のライブラリ
https://cdn.jsdelivr.net/npm/base-58@0.0.1/Base58.min.js
https://cdn.jsdelivr.net/npm/js-sha256@0.9.0/src/sha256.min.js



391 名前:デフォルトの名無しさん [2020/08/19(水) 16:18:46 ID:ltFkDVN7.net]
>>372

#!/bin/sh
rm $0

392 名前:デフォルトの名無しさん mailto:sage [2020/08/19(水) 18:40:23.70 ID:d4bqPFA7.net]
「生」の読みはたくさんあるのに、
「死」の読みはひとつだけ。
示唆に富んでいる。

393 名前:デフォルトの名無しさん [2020/08/19(水) 18:45:07.34 ID:OrygHj4v.net]
略して示唆トン。

394 名前:デフォルトの名無しさん mailto:sage [2020/08/20(木) 11:35:09.25 ID:nWR09WFB.net]
>>257
Elixir

# 蓄積変数 set は、すべての文字列の集合。abcde, bcdea などの5つ。
# word は、1文字ずらした文字列

src_word = 'abcde'

%{ set: set } = Enum.reduce_while( 1..length( src_word ), %{ set: MapSet.new, word: src_word }, fn _count, acc ->

[ head | tail ] = acc.word
next_word = tail ++ [ head ] # 1文字ずらす
acc = %{ acc | word: next_word }

if MapSet.member?( acc.set, next_word ) do
{ :halt, acc } # 既に存在すれば、break
else
acc = %{ acc | set: MapSet.put( acc.set, next_word ) }
{ :cont, acc } # ループを続ける
end
end )

# IO.inspect set

# 文字列が、集合の中に含まれているか?
[ 'deabc', 'cdeba' ]
|> Enum.map( fn str -> MapSet.member?( set, str ) end )
|> IO.inspect # [true, false]

395 名前:デフォルトの名無しさん mailto:sage [2020/08/23(日) 18:52:15.52 ID:kIX3/Jw/.net]
お題:
縦H、横Wの迷路が与えられます。
スタートからゴールに至る道順の個数を求めてください。

迷路は通路から通路へ、上下左右の4方向へのみ移動できます。
ただし、一度通った通路を引き返すような道順は無効です。
また、スタートとゴールは通路です。

1行目に迷路の高さと幅を表す整数H、Wが与えられます。
2行目からH行にわたって、迷路を表す長さWの文字列が与えられます。
文字列は 'S' 'G' '.' '#' の文字のみからなり、それぞれスタート、ゴール、通路、壁です。

例1:
入力:
5 5
S....
##.#.
...#.
##.#.
....G
出力:
2
例2:
入力:
5 5
S....
##.#.
...#.
...#.
....G
出力:
12

396 名前:デフォルトの名無しさん [2020/08/24(月) 04:30:51.55 ID:qrCNAVcy.net]
>>388 C++
https://ideone.com/Omaaxj

397 名前:デフォルトの名無しさん mailto:sage [2020/08/24(月) 11:49:18.16 ID:2DIU31aQ.net]
>>388 C++
https://wandbox.org/permlink/H36ha1xPEFeE4KXQ

398 名前:蟻人間 mailto:sage [2020/08/29(土) 20:44:46.53 ID:GYyhmMZY.net]
お題: ロシアンルーレット。

リボルバーを回しますか? (Y/n) Y
1回目: 不発
リボルバーを回しますか? (Y/n) Y
2回目: 不発
リボルバーを回しますか? (Y/n) n
3回目: バーン!

399 名前:デフォルトの名無しさん [2020/08/29(土) 21:04:26.78 ID:KxRf/0sH.net]
>>391
仕様がわからない

400 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/08/29(土) 21:07:51 ID:GYyhmMZY.net]
ロシアンルーレット
https://ja.m.wikipedia.org/wiki/%E3%83%AD%E3%82%B7%E3%82%A2%E3%83%B3%E3%83%AB%E3%83%BC%E3%83%AC%E3%83%83%E3%83%88

回転式拳銃(リボルバー)
https://ja.m.wikipedia.org/wiki/%E5%9B%9E%E8%BB%A2%E5%BC%8F%E6%8B%B3%E9%8A%83



401 名前:蟻人間 mailto:sage [2020/08/29(土) 21:24:48.99 ID:GYyhmMZY.net]
>>391-392 こんな感じか?

最初にリボルバーを回します。
(弾丸の位置を設定)
こめかみor天井?(K/t) K
1回目: 不発
もう一度リボルバーを回しますか? (Y/n) Y
(弾丸を回転)
こめかみor天井?(K/t) K
2回目: 不発
もう一度リボルバーを回しますか? (Y/n) n
こめかみor天井?(K/t) K
3回目: バーン!
あなたの負けです。

402 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/08/29(土) 22:00:32 ID:GYyhmMZY.net]
えっ、拳銃見たことないの?

403 名前:デフォルトの名無しさん mailto:sage [2020/08/29(土) 22:14:20.91 ID:bYj4gZFd.net]
銃の弾数と空砲/実包の割合とか
オートマとリボルバーどっちかとか特定してからにしてくれ

404 名前:デフォルトの名無しさん mailto:sage [2020/08/29(土) 22:51:06 ID:yG/yQHuO.net]
jsインタラクティブ入力に弱い

405 名前:デフォルトの名無しさん [2020/08/29(土) 23:12:55 ID:yG/yQHuO.net]
>>391

https://repl.it/@vip0/bullet#index.js

// 0-5
const rand6 = () => Math.floor(Math.random() * 6);

const gun = (() => {
let pos = 0;
const shuffle = () => (pos = rand6());
shuffle();
const shut = () => pos-- === -1
return { shuffle, pos, shut }
})()

// mock 1/2 rand
const readDoShuffleAsync = () => {
const y = Math.random() >= 0.5
console.log(y ? "y" : "n")
return y
}

let i = 1;
while (true) {
console.log("リボルバーを回しますか?");
if (readDoShuffleAsync()) gun.shuffle()
const bomb = gun.shut();
console.log(`${i}回目: ${bomb ? "バーン!" : "不発"}`);
i++;
if (bomb) break
}

406 名前:デフォルトの名無しさん mailto:sage [2020/08/29(土) 23:34:19.24 ID:2f/XylsB.net]
VSCode の拡張機能、Quokka.js を使えば?
変数を書くだけで、内容が表示される

var a = 1
a // 1 と表示される

407 名前:デフォルトの名無しさん mailto:sage [2020/08/29(土) 23:41:03.13 ID:yG/yQHuO.net]
swift playgroundとかjestのinlineSnapshotみたいな感じか
使うときがあるか微妙

408 名前:デフォルトの名無しさん [2020/08/30(日) 01:02:17.18 ID:xjthqQ7x.net]
お題
nを受け取って1からnまでインクリメントされた配列を返してください
インクリメントするごとに値の数だけ配列に値を追加してください


入力: 1
出力: [1]

入力: 3
出力: [1, 2, 2, 3, 3, 3]

409 名前:デフォルトの名無しさん [2020/08/30(日) 01:33:41.99 ID:xjthqQ7x.net]
お題
配列をソートする関数を受け取って安定ソートか否かを判定する
プログラムを作成してください

410 名前:デフォルトの名無しさん mailto:sage [2020/08/30(日) 06:49:46 ID:a0VCHWdX.net]
お題: splitを実装せよ(ただし組み込みやライブラリのsplitは使ってはならない)

例:
>> split('abc:def:ghi', ':')
>> ['abc', 'def', 'ghi']



411 名前:デフォルトの名無しさん [2020/08/30(日) 08:02:58.80 ID:Ui9A3dkW.net]
>>401 J
f =: #~ @: >: @ i.

412 名前:デフォルトの名無しさん mailto:sage [2020/08/30(日) 09:40:37.84 ID:rD3R6mry.net]
>>401 Ruby

(0..3).each{|n| p (1..n).reduce([]){|s, a| s + [a] * a}}

# =>
[]
[1]
[1, 2, 2]
[1, 2, 2, 3, 3, 3]


>>403 Ruby

p 'abc:def:ghi'.scan(/[^:]+/) # => ["abc", "def", "ghi"]

413 名前:デフォルトの名無しさん mailto:sage [2020/08/30(日) 09:41:22.98 ID:ka/TVb/i.net]
>>401 octave
https://ideone.com/wQ0EMk
f = @(n) repelem(1:n, 1:n);
f(3)

414 名前:デフォルトの名無しさん mailto:sage [2020/08/30(日) 09:43:25.32 ID:pWMgwPJi.net]
>>403
JS

let minSplit = (string, separator) => {
let array = [];
let splitter = (st, sp) => {
let pos = st.indexOf(sp);
if (pos == -1) {return [st,void(0)]} else {return [st.slice(0,pos),st.slice(pos+1)]}
}
while (true) {
if (string.length == 0) {array.push(string); break}
let temp = splitter(string, separator)
if (temp[1] == void(0)) {array.push(temp[0]); break}
else {array.push(temp[0]); string = temp[1]}
}
return array
}

let minSplit2 = (string, separator) => {
let reg = new RegExp(`[^(${separator})]+${separator}?`, "g");
return `${string} `.match(reg).map(x=>x.slice(0,-1))
}

415 名前:デフォルトの名無しさん mailto:sage [2020/08/30(日) 17:51:57.01 ID:9TpSDH8X.net]
>>403 octave
f = @(s, d) arrayfun(@(b, e) {s(b:e)}, [1 find(s == d) + 1], [find(s == d) - 1 numel(s)]);
f('abc:def:ghi', ':')

416 名前:400 mailto:sage [2020/08/30(日) 18:29:58 ID:9TpSDH8X.net]
一応url
https://ideone.com/Ni9DPI

417 名前:デフォルトの名無しさん [2020/08/30(日) 18:55:27.84 ID:uG01djUi.net]
>>403 js
const replaceAll = (s, from, to) => s.replace(new RegExp(from, "g"), to)
const split = (str, sep) => JSON.parse(`["${replaceAll(str, sep, '","')}"]`)

split('abc:def:ghi', ':')
// [ 'abc', 'def', 'ghi' ]
ずるいしダブルクォート対応できてないけど思いつき

418 名前:デフォルトの名無しさん mailto:sage [2020/08/30(日) 19:52:13.41 ID:KMqOjvFr.net]
>>403 Ruby
# セパレーターの仕様が文字か文字列か分からなかったので文字列にした
def split( str, sep )
res = []
(str + sep).scan( /(.*?)#{Regexp.escape(sep)}/ ){ res << $1 }
res
end

split('abc:def:ghi', ':') #=> ["abc", "def", "ghi"]

419 名前:デフォルトの名無しさん [2020/08/30(日) 19:55:11.73 ID:OKCM85cL.net]
>> 393 C++
https://ideone.com/ztBnmn

>> 394 C++
https://ideone.com/8YhzWh
合ってるか分からない
(とりあえずバブルソートが安定だからそれと比較した)

>> 395 C++
https://ideone.com/lmYLkx

420 名前:デフォルトの名無しさん mailto:sage [2020/08/30(日) 23:05:46 ID:HaB2mhSL.net]
>>401 C++
https://wandbox.org/permlink/LxzMc7UHa1lbhcX1

コンパイル時にできる



421 名前:デフォルトの名無しさん [2020/08/30(日) 23:23:11.11 ID:OKCM85cL.net]
operator[]がconstexprなのはC++17以降らしいね

422 名前:デフォルトの名無しさん [2020/08/31(月) 00:36:58 ID:Sr2UUXBk.net]
宇宙創生から現在まで【宇宙の歴史?(過去編)】
https://www.youtube.com/watch?v=1qUrdcRkRLc
期待値が無限大な賭け(サンクトペテルブルクのパラドックス)
https://www.youtube.com/watch?v=B__gzT-rQjw
もしも生徒が全員予備校講師だったら
https://www.youtube.com/watch?v=Lk
eが超越数であることの証明
https://www.youtube.com/watch?v=_DJfeP0cmI8
【受験生へ】勉強のモチベーションをあげる3つの方法
https://www.youtube.com/watch?v=4MAPBivBEhM
線を描くだけ!万能視覚的かけ算【インド式計算】
https://www.youtube.com/watch?v=Sj6Y43D76GA
全受験生が理解するべき!偏差値とは何か
https://www.youtube.com/watch?v=Xt7VN0xCbt8
楽しいことを増やそう!科学の眼鏡を

423 名前:ゥけた1日とは【ヨビノリたくみ特別公演】
https://www.youtube.com/watch?v=u5al7kwy64k
数学の魅力とは?中田敦彦と人気教育系YouTuberヨビノリたくみ先生が初コラボ
https://www.youtube.com/watch?v=qxiAyyotAM0
[]
[ここ壊れてます]

424 名前:デフォルトの名無しさん [2020/08/31(月) 08:12:50.04 ID:o+KAewBM.net]
>>401 Ruby
def f(n)
(1..n).map{|v| [v]*v}.flatten
end

425 名前:デフォルトの名無しさん mailto:sage [2020/08/31(月) 09:50:22 ID:3l02ZOhc.net]
>>404
何やってんのか分かんねぇ…

426 名前:デフォルトの名無しさん mailto:sage [2020/08/31(月) 12:53:04.32 ID:DeTlQxvW.net]
f#(@:m:@ )顔文字にしか見えん

427 名前:デフォルトの名無しさん [2020/08/31(月) 13:15:43 ID:0jcGZySh.net]
\(._. \)

428 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/08/31(月) 13:37:09 ID:tSOV4fJk.net]
お題: 覆面算パズルをランダムに自動生成せよ。

単語は大文字のアルファベットのみとする。
各単語は自然数を表している。
単語の各文字は数字を表している。
各単語の先頭はゼロではない。
同じ文字は同じ数字が入る。文字が違えば、数字も違う。
各単語は、3文字以上6文字以下とする。
答えは一つでなければいけない。
今回は、簡単な足し算のみとする。

例)
SEND+MORE=MONEY.
BASE+BALL=GAMES.

単語リスト:https://gist.github.com/deekayen/4148741

429 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/08/31(月) 13:41:36 ID:tSOV4fJk.net]
お題:覆面算パズルを解くプログラム。

例)
SEND+MORE=MONEY
→9567+1085=10652.

BASE+BALL=GAMES
→7483+7455=14938.

430 名前:デフォルトの名無しさん mailto:sage [2020/08/31(月) 14:49:18.65 ID:7ZWcUsrI.net]
>>401
Elixir

# 再帰で、蓄積リスト・ary に、連結していく

defmodule MyList do
def add( num ), do: _add( num, [ ] )

defp _add( 0, ary ) do
ary
end

defp _add( num, ary ) when num > 0 do
_add( num - 1, List.duplicate( num, num ) ++ ary )
end
end

ary = MyList.add 3
IO.inspect ary #=> [1, 2, 2, 3, 3, 3]



431 名前:蟻人間 mailto:sage [2020/08/31(月) 16:10:16.99 ID:lWn/zYPT.net]
>>421, >>420の順に解いてね。

ヒント要る?

432 名前:蟻人間 mailto:sage [2020/08/31(月) 16:12:08.02 ID:lWn/zYPT.net]
ヒント: 各文字を変数とした連立方程式。

433 名前:蟻人間 mailto:sage [2020/08/31(月) 16:24:48.19 ID:lWn/zYPT.net]
文字の数が少ないんだから、ブルートフォースでも解けるか。。。

434 名前:デフォルトの名無しさん mailto:sage [2020/08/31(月) 18:26:24.52 ID:qQr3mFGF.net]
間違えてなければO(10!)のはずだから充分多いのでは

435 名前:デフォルトの名無しさん mailto:sage [2020/08/31(月) 18:26:56.47 ID:qQr3mFGF.net]
ごめん10!はめちゃくちゃ小さかった

436 名前:デフォルトの名無しさん mailto:sage [2020/08/31(月) 18:43:24.02 ID:hr5jjNmH.net]
この手の問題は総当りしたほうが速いことすらある

437 名前:デフォルトの名無しさん mailto:sage [2020/08/31(月) 19:18:49 ID:J48xi6fS.net]
しかもとっさにcombination用意できなければ(vimなどで)for文10個書いたほうが早いまである

438 名前:デフォルトの名無しさん [2020/08/31(月) 19:23:55 ID:fdwPQ6pV.net]
覆面算を制約論理プログラム iZ-Cを使って解きます。の記事があります。
https://sunasunax.hatenablog.com

439 名前:デフォルトの名無しさん [2020/08/31(月) 21:02:28 ID:Sr2UUXBk.net]
デキる人ほどフリーランス化する?★働き方改革
https://www.youtube.com/watch?v=ALflcwYOJtQ
年収890万円以下は社会のお荷物★騙される労働者
https://www.youtube.com/watch?v=CAp-ZrJpF54
騙されたくなかったら勉強しろ★他人のルールは損をする
https://www.youtube.com/watch?v=s176O6qKuPw
底辺の99%は一生底辺★10年後が見えない同僚たち
https://www.youtube.com/watch?v=4Mfiwn2sPD8
稼ぎたければ働くな★4千万円ぽっちも稼げないのはなぜ?
https://www.youtube.com/watch?v=Fi7bILN4wes
サラリーマン思考では儲からない理由
https://www.youtube.com/watch?v=iW6oAo0q0ZI
で、無職は稼いでるの?★YouTube収益はアホにも分かりやすい
https://www.youtube.com/watch?v=md0WPAsfarY
「で、年収は?」と聞くバカとは合わない社長業
https://www.youtube.com/watch?v=nEELEUhBLDk

440 名前:253 mailto:sage [2020/08/31(月) 21:47:00.41 ID:Mm8nXRhv.net]
>>401 Perl5

use feature qw{signatures};
sub f($n) {
 $n ? (f($n-1), ($n) x $n) : ()
}
@a = f(3);
print "@a\n";


実行結果
~ $ perl 18_393_inc_ary.pl
The signatures feature is experimental at 18_393_inc_ary.pl line 2.
1 2 2 3 3 3



441 名前:253 mailto:sage [2020/08/31(月) 21:54:06.64 ID:pmRcaHIk.net]
>>401 Perl5、単にmapで値個数要素のリストに展開

$n = 3;
@a = map{($_) x $_} 1..$n;
print "@a\n";


j実行結果
~ $ perl 18_393_inc_ary_map.pl
1 2 2 3 3 3

442 名前:デフォルトの名無しさん mailto:sage [2020/08/31(月) 23:33:38 ID:0jcGZySh.net]
>>401
Kotlin
https://paiza.io/projects/A_eQfaut9aEoIRjfwbkN8Q

443 名前:デフォルトの名無しさん mailto:sage [2020/09/01(火) 00:01:02 ID:1mY8ta+4.net]
>>401
C
https://paiza.io/projects/wwsivStn5Eq4vN7-XA5ShQ

444 名前:デフォルトの名無しさん mailto:sage [2020/09/01(火) 00:18:24 ID:vTrOzHSW.net]
>>401
python
lambda x: [int(i) for i in "".join(f"{y}"*y for y in range(1,x+1))]

445 名前:デフォルトの名無しさん [2020/09/01(火) 14:16:37.60 ID:3qKfeSqF.net]
全く知らない構文の言語でカンでいじっても構文エラーも止められずに
動かない機械ガチャガチャしてるだけ感すごいよな

446 名前:蟻人間 mailto:sage [2020/09/01(火) 18:47:08.83 ID:4meeAMMW.net]
お題: テキストファイル「input.txt」の中の" dot "を"."に置換し、さらに" at "を"@"に置換したときに、RFCに従ったメールアドレスになる部分文字列を抽出し、そのメールアドレスのリストを改行区切りで出力せよ。

447 名前:デフォルトの名無しさん [2020/09/01(火) 18:47:54.44 ID:Y09tsFBY.net]
>>401 Ruby
def f(n)
(1..n*(n+1)/2).map{|x| ((x*2)**0.5+0.5).to_i}
end

448 名前:デフォルトの名無しさん [2020/09/01(火) 18:48:39.88 ID:PZXbhIm5.net]
>>438
テスト用のinput.txtちょーだい!

449 名前:蟻人間 mailto:sage [2020/09/01(火) 18:54:57.84 ID:4meeAMMW.net]
>>440
「これはテキトーなテキストデータである。
例えば
user at example dot com
とか
user at example dot co dot jp
とか
katayama dot hirofumi dot mz at example dot net
とかあるでしょ。
詐欺メールに引っ掛からないためには、URLのドメインを確認することが一番。
google.com
google.co.jp
まあ、いろいろあるっしょ。」

450 名前:デフォルトの名無しさん [2020/09/01(火) 18:57:45.00 ID:PZXbhIm5.net]
>>441
あざーす!



451 名前:デフォルトの名無しさん mailto:sage [2020/09/01(火) 19:10:04.73 ID:y/wdSyKD.net]
>>438
Mail::RFC822::Address: regexp-based address validatio
www.ex-parrot.com/~pdw/Mail-RFC822-Address.html

452 名前:蟻人間 mailto:sage [2020/09/01(火) 20:18:24.49 ID:4meeAMMW.net]
ヒント: 文字列置換と正規表現

453 名前:デフォルトの名無しさん [2020/09/01(火) 22:43:25 ID:PZXbhIm5.net]
>>438
Java
https://paiza.io/projects/50iQ0JnPk_R404qr8Db80w

454 名前:デフォルトの名無しさん [2020/09/01(火) 22:55:31.34 ID:PZXbhIm5.net]
>>401
Java
https://paiza.io/projects/qDtcIJeOUdsMkEIxaXEf9w

455 名前:253 mailto:sage [2020/09/02(水) 00:54:35.54 ID:GpxOT2yi.net]
>>401 Python3

(n, a) = (3, [])
for i in range(1, n+1):
  a.extend([i] * i)
print(a)


実行結果
~ $ python 18_393_incary.py
[1, 2, 2, 3, 3, 3]

456 名前:デフォルトの名無しさん [2020/09/02(水) 23:08:34.85 ID:KTyhBksd.net]
>>402
Java
https://paiza.io/projects/PGljCEpf6PlEcYw0xzNBVQ

457 名前:デフォルトの名無しさん [2020/09/02(水) 23:31:10.43 ID:KTyhBksd.net]
>>403
Java
https://paiza.io/projects/nGioH2f50H9y8EHZkISTOg

458 名前:デフォルトの名無しさん [2020/09/03(木) 16:10:13.26 ID:dE9fk8zR.net]
>>403 Ruby

def f(s,d)
eval("['"+s.gsub(d,"','")+"']")
end
p f("1 2 3 4"," ")

実行結果
["1", "2", "3", "4"]

459 名前:蟻人間 mailto:sage [2020/09/03(木) 19:41:51.27 ID:0EoV326K.net]
お題: バイナリファイルを読み込んで各バイトの各ビットについて、上位ビットから順に、ゼロをシフトJISの半角カナの「タ」に、いち(1)を同じくの「ヒ」に変換する変換器。

460 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/09/03(木) 19:46:20 ID:0EoV326K.net]
>>451
追記。逆変換器も作って動作することを確認せよ。



461 名前:デフォルトの名無しさん mailto:sage [2020/09/03(木) 21:11:58.06 ID:97aiR77+.net]
>>451 Ruby
Fpath = 'test.bin'
File.open( Fpath, 'wb' ){|fh| fh.write "Hello word\n" }

Tbl10 = "\xC0\xCB".force_encoding(Encoding::BINARY)
tb = (0..255).to_a.map{|x| ('%08b' % x).tr( '10', Tbl10 ) }
buff = File.open( Fpath, 'rb' ).each_byte.map{|x| tb[x] }
puts buff.join().encode( Encoding::UTF_8, Encoding::CP932 )

print buff.map{|x| x.tr( Tbl10, '10' ).to_i(2).chr }.join

#=> ヒタヒヒタヒヒヒヒタタヒヒタヒタヒタタヒタタヒヒヒタタヒタタヒヒヒタタヒタタタタヒヒタヒヒヒヒヒヒタタタヒタタタヒタタヒタタタタヒタタタヒヒタヒヒタタヒヒタヒヒヒヒヒヒタヒタヒ
#=> Hello word

462 名前:デフォルトの名無しさん mailto:sage [2020/09/03(木) 23:01:51.02 ID:ZdR77D/Z.net]
>>450

f("'", ?,)
# =>SyntaxError: (eval):1: unterminated string meets end of file
[''']
   ^
(eval):1: syntax error, unexpected end-of-input, expecting ']'

463 名前:253 mailto:sage [2020/09/04(金) 00:01:38 ID:7q8p4uRD.net]
>>451 Perl5

print map{qw(ヒ タ)[$_]} map{split '', sprintf '%08b', ord} split'','Hello word';

実行結果
~ $ perl 18_443_タヒ.pl
ヒタヒヒタヒヒヒヒタタヒヒタヒタヒタタヒタタヒヒヒタタヒタタヒヒヒタタヒタタタタヒヒタヒヒヒヒヒヒタタタヒタタタヒタタヒタタタタヒタタタヒヒタヒヒタタヒヒタヒヒ

464 名前:デフォルトの名無しさん [2020/09/04(金) 00:03:39 ID:0wfgbo8M.net]
>>452
Java
https://paiza.io/projects/w8Q5NbodI6iRfjcBWA1Nqg

465 名前:253 mailto:sage [2020/09/04(金) 00:04:27 ID:gbrpP/bR.net]
>>455
>>452 逆変換機もか…忘れてた
まいいや

466 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 14:52:11.79 ID:Wl7qFIBb.net]
>>451
Elixir。CP932 が無いので、途中までしか出来ません!

# 8桁・2進数・0埋め

_ = 'abc'
|> Enum.map( fn char -> :io.format( "~8.2.0B", [ char ] ) end )

# 01100001_01100010_01100011

467 名前:デフォルトの名無しさん [2020/09/04(金) 23:27:10.30 ID:1jfeDIRi.net]
>>451
POSIX sh

変換 (https://paiza.io/projects/Yk6wcUtik7BZZ0AHspdZFw?language=bash)
for _b in $(od -v -A n -t d1); do
printf '%b' \
"\\$(( $_b & 128 ? 300 : 313 ))" \
"\\$(( $_b & 64 ? 300 : 313 ))" \
"\\$(( $_b & 32 ? 300 : 313 ))" \
"\\$(( $_b & 16 ? 300 : 313 ))" \
"\\$(( $_b & 8 ? 300 : 313 ))" \
"\\$(( $_b & 4 ? 300 : 313 ))" \
"\\$(( $_b & 2 ? 300 : 313 ))" \
"\\$(( $_b & 1 ? 300 : 313 ))"
done

逆変換 (https://paiza.io/projects/AN6vfPgtdJODnYL9jW8MDQ?language=bash)
od -v -A n -t o1 |
fold -b -w 32 |
while read _b8 _b7 _b6 _b5 _b4 _b3 _b2 _b1; do
printf '%b' "\\$((
($_b8 == 300 ? 200 : 0) +
($_b7 == 300 ? 100 : 0) +
($_b6 == 300 ? 40 : 0) +
($_b5 == 300 ? 20 : 0) +
($_b4 == 300 ? 10 : 0) +
($_b3 == 300 ? 4 : 0) +
($_b2 == 300 ? 2 : 0) +
($_b1 == 300 ? 1 : 0) ))"
done

468 名前:253 mailto:sage [2020/09/04(金) 23:39:14.02 ID:tinAGSqp.net]
>>451>>452 Perl5、バイナリコード(ln)を含むデータをファイルから読み込み、変換》逆変換

undef $/; # slurp
$s = <>;

@b = map{qw(ヒ タ)[$_]} split'', unpack 'B*', $s;
print @b, "\n";

%h = qw(ヒ 0 タ 1);
$t = pack 'B*', join '', map{$h{$_}} @b;
print $t;



実行結果

$ od -xc Hello_world_ln.txt
0000000 6548 6c6c 206f 6f77 6c72 0a64
H e l l o w o r l d \n

$ cat Hello_world_ln.txt
Hello world

$ perl 18_443_444_ヒタ.pl < Hello_world_ln.txt
ヒタヒヒタヒヒヒヒタタヒヒタヒタヒタタヒタタヒヒヒタタヒタタヒヒヒタタヒタタタタヒヒタヒヒヒヒヒヒタタタヒタタタヒタタヒタタタタヒタタタヒヒタヒヒタタヒタタヒヒヒタタヒヒタヒヒヒヒヒヒタヒタヒ
Hello world

469 名前:デフォルトの名無しさん [2020/09/05(土) 15:41:23.97 ID:dAk5cbFF.net]
お題

UTF-8 は以下のように、先頭ニブル・4ビットで、1〜4バイト文字を判別しています。
この法則を使って、この文字列のバイト数を求めよ

あaθ💀xΩ死🄫

1バイト文字: 0000〜0111: 0〜7

多バイト文字の2バイト目以降
1000〜1011: 8〜11(8〜B)

2バイト文字: 1100〜1101: 12〜13(C〜D)
3バイト文字: 1110: 14(E)
4バイト文字: 1111: 15(F)

Unicode
https://seiai.ed.jp/sys/text/csd/cf14/c14a070.html

470 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 15:42:06.74 ID:gCThzAly.net]
お題:
左から右へ、1から10までの番号が付いたマスが順番に隙間なく並んでいます。
今日、訪問者N人があなたに会いにやってきます。各訪問者i(1≦i≦N)は時刻TiにマスPiを訪れます。
ここで、あなたが時刻TiにマスPiに居たのならば「訪問者iは満足した」とします。
最大で何人の訪問者を満足させられるか求めてください。
制約:
最初、時刻は0とする。
あなたは最初、マス1にいる。
あなたは隣り合うマスへの移動手段しか持たない。
1マス移動した場合にも、移動せずに現在マスに留まった場合にも時間1を消費する。
Ti == Tj で Pi == Pj ならば i == j
1≦N ≦10^5
1≦Ti≦10^5
1≦Pi≦10
入力:
N
T1 P1
T2 P2
...
TN PN
出力:
(最大で何人を満足させられるか)
例1:
入力:
5
5 4
2 3
3 2
3 4
4 4
出力:
4



471 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 15:55:10.03 ID:gCThzAly.net]
前回のお題はC++の方からしか回答を頂けなかったので、他の言語の方も考えていただけると嬉しいです

472 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 17:01:13.99 ID:4vfoT7Xn.net]
Tが10^5のそれぞれのマスにいたときの点数を求める(客がいた場合1、いなかったら0)
Tが10^5-1のときのマスの点数を求める(そこに客がいたなら1、いなかったら0
更にそこから次の時間に移動可能なマスの最大の点数のものを加える)
Tが1までくり返す
これで良さそうな気がするけど書くのがめんどくさい

473 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 17:35:24.39 ID:s0GYNWbk.net]
>>461
「この文字列の文字数を求める」んじゃないの?
バイト数だったらUTF-8だろうがSJISだろうが関係なく,
バイトの個数を数えればいいだけになってしまうが……。

474 名前:デフォルトの名無しさん [2020/09/05(土) 18:43:21.60 ID:EHHCviTW.net]
文字コードまわりの難しさにぶつかったことないから何が何やら

475 名前: []
[ここ壊れてます]

476 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 19:37:20.09 ID:PsWvtVS4.net]
>>461 Ruby
文字数とバイト数を適当に出力
require "cgi"
require "cgi"
str = CGI.unescapeHTML( "あaθ💀xΩ死🄫" )
sbs = str.bytes
i = n = 0
while i < sbs.size
case sbs[i] >> 4
when 0..7; i += 1
when 8..11; warn "Error"
when 12,13; i += 2
when 14; i += 3
when 15
case sbs[i] & 0xF
when 0..7; i += 4
when 8..11; i += 5
when 12,13; i += 6
else warn "Error"
end
end
n += 1
end
puts "#{n} chars\n#{str.size} chars"
puts "#{str.force_encoding( Encoding::BINARY ).size} bytes\n#{sbs.size} bytes"
puts str.bytes.map{|x| '%02X' % x }.join(' ')
#=>
8 chars
8 chars
20 bytes
20 bytes
E3 81 82 61 CE B8 F0 9F 92 80 78 CE A9 E6 AD BB F0 9F 84 AB

477 名前:デフォルトの名無しさん [2020/09/05(土) 19:47:45.16 ID:EHHCviTW.net]
普通に処理系がchar配列にしたときサイズを入れてくれるからそれでわかっちゃうw

478 名前:453 mailto:sage [2020/09/05(土) 21:41:42 ID:dAk5cbFF.net]
書いてある条件だけで、求めて下さい!

他の方法では、簡単すぎるので

479 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 21:46:41 ID:qef5ttAc.net]
それだったら宿題スレで頼みなよ

480 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 22:24:40.63 ID:s0GYNWbk.net]
>>469
もう一度訊くけど,
ほんとに「バイト数」を求めたいの?

だったら
$ echo ' あaθ💀xΩ死🄫 ' | wc -c
これで一瞬だけど。

文字数なら,UTF-8を扱える言語で数えるか,
POSIX shでやるなら……面倒だな……。
https://gist.github.com/cmplstofB/0b0ce2bf052b3bb64d091fc83504fc32#file-u8dec-sh
こういうの使えばいいかな。
なお,wc -mはPOSIXでは必ずしも
UTF-8文字列を扱えるとは既定されていないので今回の目的には適さない。



481 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 22:25:44.48 ID:s0GYNWbk.net]
>>462
これ結構難しい。
まず普通に算法を考える段階で行き詰まってるw
頭悪いな〜

482 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 22:49:41.81 ID:BjVkDMA6.net]
>>462 C
https://ideone.com/X5mYh3

483 名前:253 mailto:sage [2020/09/06(日) 00:11:00 ID:Lo+HJN6n.net]
>>388 Perl5

($H, $W) = split' ',<DATA>; @a = map{[split/\s*/]} <DATA>;
for $h (0..$H-1) { for $w (0..$W-1) {
 $c = $a[$h][$w];
 $S = "$h,$w" if $c eq 'S'; $G = "$h,$w" if $c eq 'G';
 if ($c ne '#') {
  $e{($h-1).",$w $h,$w"}++ if $h and $a[$h-1][$w] =~ /[.SG]/;
  $e{"$h,".($w-1)." $h,$w"}++ if $w and $a[$h][$w-1] =~ /[.SG]/;
 }}}
use feature qw{current_sub say}; no warnings 'experimental';
sub {
 my $p = @_[-1];
 for my $q (map{s/ *$p *//; $_} grep{/$p/} keys %e) {
  if ($q eq $G) { $h{"@{[@_, $q]}"}++ }
  else { __SUB__->(@_, $q) unless grep{/$q/} @_ }
 }
}->($S);
say scalar keys %h;
__DATA__
5 5
S....
##.#.
...#.
...#.
....G


実行結果
~ $ perl 18_380_maze_paths.pl
12

484 名前:253 mailto:sage [2020/09/06(日) 00:30:27 ID:WEZ/j7UH.net]
>>474
今思うとエッジの表現は無向ではなく二重の有効グラフにしたほうが簡潔なコードになったかもしれない
まぁいいや…二度書く気は起きない…

485 名前:デフォルトの名無しさん [2020/09/06(日) 00:34:53.48 ID:T9SJW9BR.net]
>>403
Kotlin
https://paiza.io/projects/N9X2CVAQj3NJ0RXPrk7i0g

区切りは文字列で指定出来るとか、大文字小文字無視とか、最大分割数を決められるだとか、色々と機能を追加してしまった。

486 名前:デフォルトの名無しさん [2020/09/06(日) 03:34:19.13 ID:0eLnTbkJ.net]
お題
4999の逆数を小数点 以下48桁まで求める。

487 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 07:27:16.04 ID:+WaXk/Ri.net]
>>477 例外だけどbcコマンド
scale=48
1/4999
.000200040008001600320064012802560512102420484096

488 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 08:14:24.88 ID:CxoRMtYI.net]
>>477 Ruby

puts ('%0.49f' % (1r/4999)).chop

# => 0.000200040008001600320064012802560512102420484096

489 名前:デフォルトの名無しさん [2020/09/06(日) 09:37:57.61 ID:yqdZF37w.net]
>>461 C++
https://ideone.com/uulTGM

490 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 10:17:30.08 ID:uXWEOXeO.net]
>>462 C++
https://wandbox.org/permlink/TMrsTWgUWvzHktjh



491 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 10:30:03.37 ID:r+7yP+3C.net]
>>473
>>474
これって二つとも総当たりで解いてる?
そうすると最悪3^(10^5)くらいの回数廻さないといけなくない?

492 名前:デフォルトの名無しさん [2020/09/06(日) 10:58:30.52 ID:5MBR0P77.net]
1京くらいのループで解けるなら実用性はかろうじてある
競技性は無い

493 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 11:04:38.70 ID:OF7UMaiS.net]
最悪でも2^n組みしかなくね

494 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 11:07:12.07 ID:uXWEOXeO.net]
>>473 はlast_time(10^5)回のループの中でCOL(10)回ループ入れてるし、10^6では?

495 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 11:29:22.40 ID:r+7yP+3C.net]
>>484
いや,総当たりなら,3^(10^5)。
時刻が1--10^5までの間に,
「留まる」「右/左に移動する」の計3通りを
互いに独立に(以前の行動に影響されずに)
行うから。

書いていて思ったけど,端に居るときは
行動可能性が2通りに減るけど,
それでも2^N通りでは済まない。

496 名前:253 mailto:sage [2020/09/06(日) 12:24:42.87 ID:cAaPNRIA.net]
>>482

>>474>>388への回答なので
その計算量の推定議論には該当しません

497 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 12:31:12.27 ID:OF7UMaiS.net]
>>486
1人が満足することで1点得るとする
点数の最大値は入力されたnの数しかないからn点で
それぞれについて1点得るか得ないかの2^nしかない
あとはそれを実現できるか移動があるかどうかが焦点になる
なので全移動経路を総当りする必要性はない

498 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 13:12:26.24 ID:GcXxHJb3.net]
>>477 C++
#include <iostream>
int main(){
const int d = 4999;
int n = 1;
std::cout << "0b0.";
for( int i = 1; i <= 48; ++ i ){
n <<= 1;
if( n >= d ){
n -= d;
std::cout << '1';
} else {
std::cout << '0';
}
}
std::cout << std::endl;
return 0;
}
// STDOUT
0b0.000000000000110100011100000111010100101011010001

499 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 13:48:19.34 ID:r+7yP+3C.net]
>>488
I see! Thanks.

500 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 15:12:48.21 ID:JPL9qi8o.net]
>>488
2^nも必要ないよ
それぞれの時刻でホストが取れる状態はどのマスにいるかということだけ
だから時刻xマスの数が全状態数



501 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 15:20:10 ID:JPL9qi8o.net]
でその状態数の方が全経路数より圧倒的に少ないので
経路に沿ってではなくて状態について解いていく

502 名前:デフォルトの名無しさん [2020/09/06(日) 16:31:54 ID:SNogxihD.net]
>>477
Java
https://paiza.io/projects/h9FWf0PGwBt60EOR_U48YA

503 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 16:34:17 ID:r+7yP+3C.net]
>>491
ん?
ホストは隣合うマスにしか移動できないから,
単純にその場面での状態を考えるだけでは駄目なんでは?

504 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 16:57:26.53 ID:JPL9qi8o.net]
だから遡って計算していくときは隣り合うマスの結果しか参照しないよ

505 名前:デフォルトの名無しさん [2020/09/06(日) 17:01:50 ID:SNogxihD.net]
>>461
Java
https://paiza.io/projects/IpbujQ_C5ZYHEAYAbnRtzQ

506 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 17:02:55 ID:JPL9qi8o.net]
>>473のコードは多分バグがある気がする

51行目と57行目を
a = score[j-1] + bit_test(timeline + i, j);
a = score[j+1] + bit_test(timeline + i, j);
こう変えて
43行目を
for(i = last_time-1; i >= 0; i--){
こうするのが正しいと思う

507 名前:253 mailto:sage [2020/09/06(日) 18:02:02 ID:EhLQImvS.net]
>>462 Perl5、人の訪問を待ち受け得るすべての場合を愚直に総当りで最大満足数を探す

$T = <DATA>;
use feature qw{signatures say}; no warnings 'experimental';
chomp $T;
push @{$p{$$_[0]}}, $$_[1] for map{[split' ']}<DATA>;
use List::Util 'max';
sub f($t, $p, $s) {
 if ($t++ < $T) {
  if (0 < $p and $p < 11) {
   $s++ if grep/$p/, @{$p{$t}};
   $s += max(f($t, $p-1, $s), f($t, $p, $s), f($t, $p+1, $s))
  }
  return $s
 }
0
}
say f(0, 1, 0);
__DATA__
5
5 4
2 3
3 2
3 4
4 4

~ $ perl 18_454_N_vztr.pl
4

508 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 18:12:25.67 ID:OF7UMaiS.net]
>>462
python
https://ideone.com/5qz7G8
満足させる人数の多い順から実現可能か探索する
既に不可能だと分かっている移動が含まれる場合は直ちに打ち切る

509 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 18:13:41.84 ID:65q5IvB9.net]
>>498
perl読めないから間違ってたらごめんだが、
11
3 2
2 3
3 4
4 4
5 4
4 7
5 7
6 7
7 7
8 7
7 10
の入力で20を返してくる。(答えは5)

510 名前:253 mailto:sage [2020/09/06(日) 18:20:26.24 ID:EhLQImvS.net]
>>500
はい、バグってました。投稿してから気がついた
時間あったら直します



511 名前:253 mailto:sage [2020/09/06(日) 19:04:52.54 ID:EhLQImvS.net]
>>498 Perl5、>>497 のBug Fix、同じ所を何度も通るので漸化式かメモ化使って動的計画法で解けるようにできるかもしれない

use feature qw{signatures say}; no warnings 'experimental';
$T = <DATA>; chomp $T;
push @{$p{$$_[0]}}, $$_[1] for map{[split' ']}<DATA>;
use List::Util 'max';
sub f($t, $p) {
 my $s = 0;
 if ($t <= $T) {
  if (0 < $p and $p < 11) {
   $s++ if grep{$_ eq $p} @{$p{$t}};
   $t++;
   $s += max(f($t, $p-1), f($t, $p), f($t, $p+1));
  }
 }
 $s
}
say f(0, 1);
__DATA__
11
3 2
2 3
3 4
4 4
5 4
4 7
5 7
6 7
7 7
8 7
7 10

512 名前:253 mailto:sage [2020/09/06(日) 19:13:46.76 ID:EhLQImvS.net]
>>502 誤記スマソ
× >>497 のBug Fix
>>498 のBug Fix

513 名前:465 mailto:sage [2020/09/06(日) 20:59:44 ID:I1QXsub5.net]
>>497
ご指摘の通りバグってたので再投稿します。
https://ideone.com/VxDLwz

やりたかったことは>>464が言っていることと全く同じです。
イメージとしてはhttps://imgur.com/j0azhSf.jpg (※お題を考えたい人は閲覧注意)
>>473のコードは大抵の場合なぜかうまくいくコードのようです。

514 名前:253 mailto:sage [2020/09/06(日) 21:09:12 ID:loE/lDca.net]
>>462 Perl5、>>502 を動的計画法で解くように改良(但し再帰呼び出しを使っているので10^5など規模が大きい問題を解くなら下から上に計算してくる単純ループに書き換えた方が良い)

no warnings 'experimental';
use feature qw{signatures say};
$T = <>;
chomp $T;
push @{$p{$$_[0]}}, $$_[1] for map{[split' ']}<>;
use List::Util 'max';
sub f($t, $i) {
 my $s = 0;
 if (0 < $i and $i < 11) {
  return $m[$t][$i] if defined $m[$t][$i];
  $s++ if grep{$_ == $i} @{$p{$t}};
  $s += max(f($t+1, $i-1), f($t+1, $i), f($t+1, $i+1))
   if $t < $T;
  $m[$t][$i] = $s;
 }
 $s
}
say f(0, 1);

515 名前:253 mailto:sage [2020/09/06(日) 21:11:43.16 ID:loE/lDca.net]
>>505 の実行結果

~ $ cat 18_454_ex1.txt
5
5 4
2 3
3 2
3 4
4 4
~ $ cat 18_454_ex1.txt | perl 18_454_N_vztr_DP_rec.pl
4
~ $ cat 18_454_ex2.txt
11
3 2
2 3
3 4
4 4
5 4
4 7
5 7
6 7
7 7
8 7
7 10
~ $ cat 18_454_ex2.txt | perl 18_454_N_vztr_DP_rec.pl
5

516 名前:253 mailto:sage [2020/09/07(月) 00:59:21.14 ID:5qB4CD7g.net]
>>477 Perl5、小数点以下48桁で「丸め」

use bignum(p=>-48);
print 1/4999, "\n";


実行結果
$ perl 18_468_1_4999-48p.pl
0.000200040008001600320064012802560512102420484097

517 名前:453 mailto:sage [2020/09/07(月) 18:47:15.23 ID:IF51aHwX.net]
>>461
Elixir

ary = for << byte <- "あaθ💀xΩ死🄫" >> do # 1バイトずつ、ループ
<< nibble::size( 4 ), _::size( 4 ) >> = << byte >> # 先頭の4ビット

case nibble do
n when n in 0..7 -> 1
n when n in 8..11 -> 0
n when n in 12..13 -> 2
14 -> 3
15 -> 4
end
end

res = Enum.reject( ary, fn n -> n == 0 end ) # 0 を削除する
IO.inspect res
# [3, 1, 2, 4, 1, 2, 3, 4]

IO.puts( length res ) # 8文字
IO.puts( Enum.sum res ) # 20バイト

518 名前:デフォルトの名無しさん [2020/09/08(火) 01:49:37.96 ID:L2ZCtfX62]
副業、大手も制度着々…コロナ禍、働き手は空き時間活用
https://www.itmedia.co.jp/business/articles/2009/07/news111.html
富士通「年収3500万円」の衝撃 ソニー、NECも戦々恐々の「グローバル採用競争」
https://www.itmedia.co.jp/business/articles/2008/21/news031.html
東大の起業ラッシュは本物か、大学発ベンチャー数日本一の実力
https://business.nikkei.com/atcl/NBD/19/special/00448/
AI研究の第一人者、東大・松尾研でも起業ラッシュ
https://business.nikkei.com/atcl/gen/19/00158/051900002/?i_cid=nbpnb_arc
失敗は認める、多数決はダメ。拡大する「社会起業家集団」の作り方
https://newswitch.jp/p/23033
新卒“即”起業せよ。社会起業家への最短距離に挑む若者たち
https://newswitch.jp/p/23020
人々の共感を得られないと潰される時代。
https://news.yahoo.co.jp/articles/37aef71415e8181ce8451e27feb3983bf1f6f9cd
ゼロから起業するよりも事業承継(小さな会社の買収)が圧倒的に有利である3つの理由
https://honsuki.jp/pickup/17323.html
「エース人材だって起業OK」、NECは挑戦者が集う場をつくる
https://business.nikkei.com/atcl/gen/19/00106/012900003/
NECなど「出向起業」 大企業人材、起業しやすく
https://www.nikkei.com/article/DGXMZO61733720Q0A720C2TJ1000/

519 名前:デフォルトの名無しさん [2020/09/08(火) 22:13:29.34 ID:r41CjiKh.net]
>>169
Java
https://paiza.io/projects/PnHRZftzs0HY5QfVuWDFxQ

520 名前:253 mailto:sage [2020/09/08(火) 23:15:40.17 ID:TMzoRSJV.net]
>>462 go 動的計画法

package main
import ( "fmt" )
var m [][]int
func v(t int, p int) int {
 if 1 <= p && p <= 10 { return m[t][p] }; return 0 }
func max3(n1 int, n2 int, n3 int) int {
 n := n1; if n < n2 { n = n2 }; if n < n3 { n = n3 }; return n }
func main() {
 var n, t, p, i, T int
 fmt.Scan(&n)
 var a [][]int = make([][]int, n)
 for i=0; i<n; i++ {
  fmt.Scanf("%d %d", &t, &p)
  a[i] = []int{ t, p }
  if t > T { T = t }
 }
 m = make([][]int, T+1)
 for t=0; t<=T; t++ {
  m[t] = make([]int, 11)
  for p=1; p<=10; p++ { m[t][p] = 0 }
 }
 for i=0; i<n; i++ { m[a[i][0]][a[i][1]] = 1 }
 for t=T-1; 0<=t; t-- {
  for p=1; p<=10; p++ {
   m[t][p] += max3(v(t+1, p-1), v(t+1, p), v(t+1, p+1))
  }
 }
 fmt.Println(m[0][1])
}



521 名前:253 mailto:sage [2020/09/08(火) 23:16:27.70 ID:TMzoRSJV.net]
>>511 の実行結果

~ $ cat 18_454_ex1.txt
5
5 4
2 3
3 2
3 4
4 4
~ $ cat 18_454_ex1.txt | go run 18_454_N_vztr_DP.go
4
~ $ cat 18_454_ex2.txt
11
3 2
2 3
3 4
4 4
5 4
4 7
5 7
6 7
7 7
8 7
7 10
~ $ cat 18_454_ex2.txt | go run 18_454_N_vztr_DP.go
5

522 名前:253 mailto:sage [2020/09/09(水) 09:03:14 ID:GqQ7+Mc6.net]
>>462 Python3

n = int(input())
a = [list(map(int, input().split())) for i in range(n)]
T = max([a[i][0] for i in range(n)])
m = [[0] * 11 for t in range(T+1)]
for i in range(n):
   m[a[i][0]][a[i][1]] = 1
def v(t, p):
  return m[t][p] if 0 < p and p < 11 else 0
for t in reversed(range(T)):
  for p in range(1, 11):
    m[t][p] += max(v(t+1, p-1), v(t+1, p), v(t+1, p+1))
print(m[0][1])


実行結果 (>>512 と同じテキストファイル 18_454_ex1.txt, 18_454_ex2.txt を入力に使用)
~ $ cat 18_454_ex1.txt | python 18_454_N_vztr_DP.py
4
~ $ cat 18_454_ex2.txt | python 18_454_N_vztr_DP.py
5

523 名前:253 mailto:sage [2020/09/09(水) 09:34:15.87 ID:GqQ7+Mc6.net]
>>513
  for p in range(1, 11):
    m[t][p] += max(v(t+1, p-1), v(t+1, p), v(t+1, p+1))

  for p in range(1, 11):
    if t+1 < p: continue
    m[t][p] += max(v(t+1, p-1), v(t+1, p), v(t+1, p+1))
とか書くと、右上三角の不要な計算を省けるが10^5などtが大きいと大勢に影響はないな…

524 名前:デフォルトの名無しさん [2020/09/10(木) 01:27:25.37 ID:8z9ZctT6.net]
>>358
Java
https://paiza.io/projects/o_tTbIG0iHXwP75rs5ayzQ

525 名前:453 [2020/09/10(木) 16:14:51.93 ID:ypm5ktrY.net]
お題

>>461
のルールに基いて、以下の3つの10進数のバイト列を、先頭(1バイト目)からチェックしていく時、
最初にルール違反となるのは、何バイト目か

129 130
120 169
240 159 146 206 184

526 名前:デフォルトの名無しさん [2020/09/10(木) 22:23:57.36 ID:8z9ZctT6.net]
>>516
Java
https://paiza.io/projects/CZXrL_xceE8JIzpnqc9uCA

527 名前:デフォルトの名無しさん mailto:sage [2020/09/12(土) 21:24:36.97 ID:2KEhs3KT.net]
お題:自然数nが現れる九九の表の最小サイズを求めよ

octave
https://ideone.com/JyIBOD

528 名前:デフォルトの名無しさん [2020/09/13(日) 00:20:13.60 ID:OR+CcCGz.net]
>>518
Java
https://paiza.io/projects/brUcg8fsPPrD3ERaUkVOUA

529 名前:デフォルトの名無しさん [2020/09/13(日) 00:35:46.34 ID:42xWDo9L.net]
>>518
Kotlin
https://paiza.io/projects/SEi0xU2p5t0WDBvQdAUh3A

良いアルゴリズムが思いつかなかったのでほとんど力技。

530 名前:蟻人間 mailto:sage [2020/09/13(日) 22:12:25.49 ID:p9JSm0uj.net]
お題: 「ジャンケンすたじあむ オンライン」というソーシャルゲームのウェブサイト、もしくはソフトウェアパッケージを制作・運営せよ。

ジャンケンをしたい人が集まって、ひたすらジャンケンをして、勝ち数を競うというソーシャルゲーム。

ジャンケン試合は2人組になり、お互いに出す手を事前に申告し、両者が申告したところでシステムが自動で勝敗を判定する。



531 名前:デフォルトの名無しさん mailto:sage [2020/09/13(日) 22:17:50.99 ID:phcl8RYj.net]
>>521
消えろ

532 名前:デフォルトの名無しさん [2020/09/13(日) 22:22:25.86 ID:lu6eiMc4.net]
動的計画法ってちゃんと勉強しないとなかなか思いつかないよな

533 名前:デフォルトの名無しさん mailto:sage [2020/09/14(月) 12:06:08.48 ID:u8/qg5cq.net]
>>518
Haskell

f x = head [ d | d <- [(ceiling $ sqrt $ fromInteger x)..], mod x d == 0]
main = mapM_ print [(x,f x) | x<-[100..130]]

534 名前:蟻人間 mailto:sage [2020/09/14(月) 14:12:59.44 ID:/Fwk/gkb.net]
お題: 沖縄の名物「シークワーサー」のことが書かれた記事のUTF-8日本語テキストファイル「input.txt」がある。
しかし、記事の執筆に多数の編集者が関わったため、シークワーサーの表記がぶれていることが分かった(次のリンクを参照)。

https://ja.m.wikipedia.org/wiki/%E3%82%B7%E3%83%BC%E3%82%AF%E3%83%AE%E3%83%BC%E3%82%B5%E3%83%BC

表記のぶれを「シークワーサー」に表記を統一したテキストファイル「output.txt」を出力せよ。

535 名前:デフォルトの名無しさん [2020/09/14(月) 17:05:19.85 ID:xV8mpaUY.net]
エンジニアが書いてるならシークワーサだな
間違いない

536 名前:蟻人間 mailto:sage [2020/09/14(月) 17:29:10.23 ID:yesAwSRz.net]
>>525 input.txtの中身:

「シークヮーサーは、別名シイークワシャーと呼ばれ、シークヮーサーの香りがするシークヮーシャーのような柑橘系の果物である。シィークアーサーはアーサー王とは関係がないと思われる。」

537 名前:デフォルトの名無しさん mailto:sage [2020/09/14(月) 18:00:53.92 ID:wBiJ2Dx0.net]
"/シ(?:イ?ー|ィー?)ク[アワァヮ]ー?(?:サ|シャ)ー?/シークヮーサー/g"

538 名前:蟻人間 mailto:sage [2020/09/14(月) 20:32:57.79 ID:/Fwk/gkb.net]
お題: お使いのプログラム言語で、COBOLに負けない最強の通貨型を設計せよ。

任意の桁数の10進整数を扱えること。
任意の有効桁数の10進小数を扱えること(10進浮動小数点数)。
加減乗除、剰余、任意桁での切り捨て・切り上げ・四捨五入が可能。
10進数表記で入出力できること。
比較的高速に演算できること。

539 名前:蟻人間 mailto:sage [2020/09/14(月) 20:55:28.62 ID:/Fwk/gkb.net]
1÷3をどう扱うかという問題があるようだ。

540 名前:デフォルトの名無しさん [2020/09/14(月) 21:04:18.95 ID:I0h6BMX6.net]
割り算するときに桁数していするだけっしょ



541 名前:デフォルトの名無しさん [2020/09/14(月) 21:07:19.27 ID:I0h6BMX6.net]
蟻人間さんにお題:銀行丸めを整数型のみを使用して実装してください

542 名前:デフォルトの名無しさん mailto:sage [2020/09/14(月) 21:08:24.84 ID:SHGAz9ig.net]
>>526


543 名前:デフォルトの名無しさん mailto:sage [2020/09/14(月) 21:24:52.09 ID:6FD493+N.net]
昔から思っているんだけど、分数で持っていて最後に一回だけ割り算するんじゃなんでいけないのかな?

544 名前:デフォルトの名無しさん mailto:sage [2020/09/14(月) 21:26:17.95 ID:6FD493+N.net]
昔から思っているんだけど、分数で持っていて最後に一回だけ割り算するんじゃなんでいけないのかな?

545 名前:デフォルトの名無しさん mailto:sage [2020/09/14(月) 21:49:38.28 ID:SHGAz9ig.net]
分子や分母に分数が入ってきた場合
精度の面で面倒なことになるぞ

546 名前:蟻人間 mailto:sage [2020/09/14(月) 23:12:41.48 ID:yesAwSRz.net]
>>532

https://ideone.com/sRja3A
今日はここまで。

547 名前:デフォルトの名無しさん mailto:sage [2020/09/14(月) 23:41:27.65 ID:5nyvo7WN.net]
>>537
一生ここまでにしろ

548 名前:デフォルトの名無しさん [2020/09/15(火) 00:21:13.43 ID:2J2Mo0F/.net]
>>525

sed -r 's/シ([イィ]ー?|ー)ク[アァワヮ]ー?(サ|シャ)ー/シークワーサー/g'

-r は拡張正規表現を使うオプション。
これで >>527 の文を変換するとこうなる。

「シークワーサーは、別名シークワーサーと呼ばれ、シークワーサーの香りがするシークワーサーのような柑橘系の果物である。シークワーサ ーはアーサー王とは関係がないと思われる。」

549 名前:蟻人間 mailto:sage [2020/09/15(火) 02:31:45.89 ID:39uvi0pE.net]
現実問題では、long double型で十分な精度が出るから、独自の浮動小数点数は必要なさそう。

残りは四捨五入とか銀行丸めなどの端数処理。

550 名前:デフォルトの名無しさん mailto:age [2020/09/15(火) 09:10:08.88 ID:gc4PCUOV.net]
工エエェェ(´д`)ェェエエ工



551 名前:デフォルトの名無しさん mailto:sage [2020/09/15(火) 14:07:27.97 ID:2J2Mo0F/.net]
bc コマンド使えば良い。
他の言語から使いたい場合はライブラリをリンクするか、またはこっそり裏で fork(), exec() してパイプで繋いで計算させるw

552 名前:蟻人間 mailto:sage [2020/09/15(火) 21:40:23.58 ID:9dtbuAF3.net]
>>537
https://github.com/katahiromz/Currency
今日はここまで。足し算、引き算、掛け算を実装。
銀行丸めはもうちょっと待ってね。

553 名前:デフォルトの名無しさん mailto:sage [2020/09/15(火) 21:59:54.94 ID:ky+PawN1.net]
>>543
誰も待ってないから一生滞ってろ

554 名前:蟻人間 mailto:sage [2020/09/15(火) 22:50:58.78 ID:i370J0Ri.net]
>>544
スレチ

555 名前:蟻人間 mailto:sage [2020/09/15(火) 22:54:46.37 ID:i370J0Ri.net]
>>544
とりあえずまあソースコードを読んで頂いてクレヨン。

556 名前:デフォルトの名無しさん mailto:sage [2020/09/15(火) 22:56:56.50 ID:ky+PawN1.net]
ここはお前の日記帳じゃねぇっての
スレチはお前

557 名前:デフォルトの名無しさん mailto:sage [2020/09/16(水) 10:06:16.52 ID:eJDvfDFO.net]
ぶぶ漬けどうぞと言われて、美味しくいただいてさらに食レポまで始めてるような状態かな

558 名前:デフォルトの名無しさん mailto:age [2020/09/16(水) 21:28:53.90 ID:XXyygoNj.net]
嫌味なことするなよ

559 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 00:07:22.39 ID:jOQPl4C7.net]
京都のおっかさんも口あんぐりやで

560 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 01:09:05.65 ID:FJaokp+J.net]
>>529 Python decimal でできるだろ。

https://docs.python.org/ja/3/library/decimal.html



561 名前:デフォルトの名無しさん [2020/09/17(木) 07:37:06.63 ID:Lu9ZyyRf.net]
お題: (複数行のバックグラウンド、座標テキスト、座標)から合成テキストを返す関数を作れ
座標テキストとバックグラウンドは同じサイズ(とりあえず横4縦3とする)

background
┏┓┏┓
┃┗┛┃
┗━━┛

座標テキスト
ab23
9014
8765

座標が
0なら
┏┓┏┓
┃*┛┃
┗━━┛
6なら
┏┓┏┓
┃┗┛┃
┗━*┛
11なら
┏*┏┓
┃┗┛┃
┗━━┛
あまり綺麗な実装が出来なかったから問題にした https://repl.it/@vip0/analogclock#index.js

562 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 08:03:03.74 ID:dVFtUKnH.net]
>>552 Ruby
def analogClockStr( h, bg, positions )
(clockStr = bg.dup)[ positions.index( h.to_s(16) ) ] = '*'
clockStr
end

background = '
┏┓┏┓
┃┗┛┃
┗━━┛
'.strip.freeze

positions = '
ab23
9014
8765
'.strip.freeze

puts analogClockStr( 0, background, positions )
puts analogClockStr( 6, background, positions )
puts analogClockStr( 11, background, positions )

563 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 08:08:23.20 ID:Lu9ZyyRf.net]
げっ確かに行ごとにreplace必要ないじゃん
何やってんだ俺
ありがとう

564 名前:デフォルトの名無しさん [2020/09/17(木) 13:17:16.17 ID:GTUBgTcD.net]
>>552
問題の意味がわからない。

565 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 13:30:29.78 ID:/h1W7gqa.net]
>>552
くだらない質問スレか初心者質問スレ行け

566 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 13:34:08.96 ID:Lu9ZyyRf.net]
ほんとにどの問題よりもクソみたいな問題だと思っています
本当にすいませんでした

567 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 13:42:30.73 ID:Lu9ZyyRf.net]


568 名前:セ私は純粋にプログラミングが好きで
全く質問したかったわけじゃないのはわかってほしい
二次配列じゃないと処理できないものだと勘違いしていたのが甘いしシンプルにしすぎて問題が破綻してしまった
[]
[ここ壊れてます]

569 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 13:48:33.25 ID:Lu9ZyyRf.net]
純粋にここにいる人たちが解法として書くコードは好きだし
たまに驚くべき角度から解を出す人もいるしマイナーなアルゴリズムも知れて尊敬してる
今回もスマートなコードが見れるんじゃないかと純粋に期待して問題にしてみたんだ
スレも今流れ遅かったし

570 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 13:50:39.09 ID:Lu9ZyyRf.net]
しかしお前らは牙を向いた
純粋に問題作成初心者の心を無碍にして
鋭い刃のような言葉を投げつけてきた
お前らは今日から敵とみなす

あばよ😎✋絶望しな



571 名前: mailto:sage [2020/09/17(木) 19:40:19.09 ID:+AujTTfU.net]
>>560
奏ちゃん「自意識過剰なんじゃないですか?」

572 名前:デフォルトの名無しさん [2020/09/17(木) 22:33:12.99 ID:H8Ldt8Jg.net]
お題:文字列の末尾の数字をインクリメントしてください

入力
IB0AAYR8ZZcUXLxKmL1ow8RxZAAUCS1j6pYOJo9n52mwITWoimM3UArCpKAGzSRZrA1vUpAerENynuJXTYuJb9HlO9NZvHdpFvCMsThVOnxhgx3T5jCfRhanH4bJJOvjoaTMdixKg4TC90zOCwyeVKJ62KAgv47P72sfPsQaH8jaG8yWnqbwtyv0OeKZa7qISm6g2MHrOlNb8RVzt36jau1hYCqKuuUBGLGuFToYptzqjkfdAoxAqqmeQO7PVcUS
出力
IB0AAYR8ZZcUXLxKmL1ow8RxZAAUCS1j6pYOJo9n52mwITWoimM3UArCpKAGzSRZrA1vUpAerENynuJXTYuJb9HlO9NZvHdpFvCMsThVOnxhgx3T5jCfRhanH4bJJOvjoaTMdixKg4TC90zOCwyeVKJ62KAgv47P72sfPsQaH8jaG8yWnqbwtyv0OeKZa7qISm6g2MHrOlNb8RVzt36jau1hYCqKuuUBGLGuFToYptzqjkfdAoxAqqmeQO8PVcUS

573 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 22:56:25.54 ID:ockp6LF+.net]
>>562 vim

?\d<CR><C-a>

574 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 23:01:20.65 ID:ockp6LF+.net]
>>562 Ruby

$><<gets.sub(/\d+(?=\D+$)/, &:succ)

# => IB0AAYR8ZZcUXLxKmL1ow8RxZAAUCS1j6pYOJo9n52mwITWoim
M3UArCpKAGzSRZrA1vUpAerENynuJXTYuJb9HlO9NZvHdpFvCMsThVOn
xhgx3T5jCfRhanH4bJJOvjoaTMdixKg4TC90zOCwyeVKJ62KAgv47P72sfP
sQaH8jaG8yWnqbwtyv0OeKZa7qISm6g2MHrOlNb8RVzt36jau1hYCqKuu
UBGLGuFToYptzqjkfdAoxAqqmeQO8PVcUS

575 名前:デフォルトの名無しさん [2020/09/18(金) 01:44:05.02 ID:hhldwLbP.net]
>>562
Perl

コマンドラインで以下のように入力後に標準入力から文字列を読ませると標準出力に出力される。

perl -pe 's/(\d+)(\D+)$/($1+1).$2/ge'

あるいはファイルに内容を入れておいてそのファイルを指定する。

576 名前:デフォルトの名無しさん mailto:sage [2020/09/18(金) 03:22:29.90 ID:Pz26zoiQ.net]
js
window.prompt().replace(/\d(?=\D+$)/,i=>i*1+1)

577 名前:デフォルトの名無しさん mailto:sage [2020/09/18(金) 06:23:31.29 ID:QICqPxzN.net]
>>565
行末が数字のときに対応できない
perl -pe 's/(\d+)(\D*)$/($1+1).$2/e'
のほうがよくないかな

578 名前:デフォルトの名無しさん mailto:sage [2020/09/18(金) 06:53:31.48 ID:5l49iFOd.net]
>>520
その場合の良いアルゴリズムって
「素因数分解を早く解くアルゴリズム」
よね。
それがもし思いついたらフィールズ賞ものではw

579 名前:デフォルトの名無しさん [2020/09/18(金) 21:10:31.47 ID:JxxZTRpA.net]
>>562
Java
https://paiza.io/projects/X0KHD9cQEH8LTka6nmDd_w

580 名前:デフォルトの名無しさん [2020/09/18(金) 21:36:05.11 ID:JxxZTRpA.net]
>>553
Java
https://paiza.io/projects/ka8qfAJFIag1eovg263vzg



581 名前:デフォルトの名無しさん mailto:sage [2020/09/18(金) 21:54:28.27 ID:WsEcPr9A.net]
>>562
haskell

theStr = "B0AAYR8ZZcUXLxKmL1ow8RxZAAUCS1j6pYOJo9n52mwITWoimM3UArCpKAGzSRZrA1vUpAerENynuJXTYuJb9HlO9NZvHdpFvCMsThVOnxhgx3T5jCfRhanH4bJJOvjoaTMdixKg4TC90zOCwyeVKJ62KAgv47P72sfPsQaH8jaG8yWnqbwtyv0OeKZa7qISm6g2MHrOlNb8RVzt36jau1hYCqKuuUBGLGuFToYptzqjkfdAoxAqqmeQO7PVcUS"

f x = let
(a,b) = span (\x-> (x<'0') || (x>'9')) $ reverse x
c = show $ (+1) $ read $ return $ head b
in reverse $ a++c++(tail b)

main = do
print $ f theStr

582 名前:デフォルトの名無しさん [2020/09/18(金) 23:21:52.09 ID:hhldwLbP.net]
>>567
そうだった。 + じゃなくて * だったな。

583 名前:253 mailto:sage [2020/09/18(金) 23:34:45.95 ID:/yEGF/vF.net]
>>568
素因数分解まで行かない。
素でなくてもいいので因数のうちイチバン大きいもの。
なんかいい解法見つけられないか、考えているけどいまのところ見出せていない

584 名前:253 mailto:sage [2020/09/18(金) 23:36:27.35 ID:/yEGF/vF.net]
いや、違うな…
因数のうちイチバン大きいものでは、ダメだわ

585 名前:デフォルトの名無しさん [2020/09/19(土) 00:05:40.30 ID:HLFklpM8.net]
>>562
C

https://paiza.io/projects/IEDhYc83EDXZuCbsxf_QUg

正規表現を使わずに行末から一文字づつ行頭に向かって検索してやっている。

586 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 00:59:21.89 ID:HX0Lirqs.net]
√n以上の最小の約数

587 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 12:14:05.54 ID:iLwsU5Ay.net]
初出題
数学板の問題より

5つのサイコロの1〜6の面がそれぞれ赤白黄青緑にそれぞれ

["byrbwg", "yrgwbb", "gbrwwy", "gyrbww", "gbrybw"]

と塗り分けられている
この状態では1-6を天地の軸として2〜5の側面にはそれぞれ

["yrbyb","rgrrr","bwwby","wbwwb"]

となっている
それぞれのサイコロを適当に回転させて全ての側面にrwybgがちょうど一回ずつとなるようにしたい
そのような回転の組み合わせは何通りか
本質的に同じものを重複して数えるのを避けるために最初のサイコロの回転は
・動かさない
・1→2,2→3,3→1,4→6,5→4,6→5
・1→3,2→1,3→2,4→5,5→6,6→4
の3つのうちどれかのみを許すとする
(出力)
["yrbgbw","gbybrw","bgwryw","bygwwr","bwrygb"]
["yrbgbw","gbybrw","wywrgb","rwgwyb","bgrywb"]
["rbywgb","gyrbbw","wwgyrb","ygbrww","brwgyb"]
["rbywgb","wybrbg","wwgyrb","wgrbwy","brwgyb"]

588 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 15:12:41.86 ID:BWMKzapi.net]
https://rio2016.5ch.net/test/read.cgi/math/1598637093/133-
わけわからん問題文にするなよ・・・

589 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 16:07:21.18 ID:wSOXcncc.net]
全然違って草

590 名前:デフォルトの名無しさん [2020/09/19(土) 16:29:35.90 ID:HLFklpM8.net]
>>577
君が何を言わんとしているのかが全くわからない。



591 名前:253 mailto:sage [2020/09/19(土) 17:15:41.66 ID:6KnxgpBj.net]
>>518 Perl5、>>576にヒントを貰った通り√を使ってnaiveに書くと…

use POSIX 'ceil';
for $n (81, 87, 91) {
 $r = ceil sqrt $n;
 for ($r..$n) {
  $i = $_;
  last until $n % $_;
 }
 print "$n => $i\n"
}

実行結果
~ $ perl 18_509_99_naive.pl
81 => 9
87 => 29
91 => 13

計算量の少ないもう少しカッチョイイ方法を見出せればなぁ…

592 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 21:37:57.70 ID:HX0Lirqs.net]
>>577です
やはりちょっと伝わらないですね
>>577
は取り下げます

593 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 21:39:46.15 ID:HX0Lirqs.net]
>>581
計算量減らすなら√n以下の最大の約数d求めてn/dを出力すれば計算量は減るな

594 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 21:40:46.29 ID:wSOXcncc.net]
減るというかそもそも計算量が同じというか

595 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 21:46:21.17 ID:HX0Lirqs.net]
イヤnが素数の場合に√nから上むきに探索すると計算量はnになるけど下向きなら√nになる
√n以上の約数と√n以下の約数は同数だけど整数そのものは下側には√nしかなく、上にはn-√nあるので下向きに探していった方が速い

596 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 00:25:54.87 ID:ZGoKBb8Y.net]
ポラード・ロー法使えばもっと計算量は減る
素数判定と組み合わせればモンテカルロ法ではなくラスベガス法になるから、正当性も担保される

597 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 01:39:54.18 ID:wHMtOvf4.net]
素因数分解利用するなら素因数分解そのものが手早くできてもダメでしょ?
それを何個か使って最も√nに近いもの探すのはかなり難しいんじゃなかったっけ?
つまり素因数分解n=Πpi^eiが与えられたとして、つぎは
0≦xi≦eiを動かすときΣxi log(pi) が1/2 log(n)に最も近くなるものを決定しなければならない
コレなんか名前ついてる問題で指数オーダーのアルゴリズムしか見つかってないんじゃなかったっけ?
素因子の数はlog(n)のオーダーで増えていくから、結局exp(c log(n)) のオーダーになって、cがどれくらいに収められるか、そもそも指数オーダー必要なのかも未解決なんじゃなかったっけ?

598 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 06:22:49.81 ID:OZ4qNDWZ.net]
>>585
素数判定はそもそも計算量少ない

599 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 10:19:03.22 ID:mk/D54YH.net]
>>588
√n以上の最小の約数をdとして上むき探索に必要な時間はすうがく/d-√n\、下向き探索のそれは\√n-n/d/ (/〜\と\〜/はfloorとceiling)
差は/d-√n\-\√n-n/d/ =\d+n/d-2√n/はam≧gmと\〜/の広義単調性から0以上で上むき探索は素数であるか否かに限らず常に計算量は同じかそれ以上
素数であるか予備検査しても結局上向きに探索したら計算量は同じ以上かかる

600 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 10:50:48.99 ID:g28HruB5.net]
あ、間違えた
上向き探索の探索量はd-/√n\+1=/d-√n+1\で/~\はceiling
下向き探索の探索量は\√n/-n/d+1=\√n-n/d+1/で\~/はfloor
まぁ常に上向きの方が計算量は増える
まぁもちろんnをまともに素因数分解して>>587みたいな方法で√nオーダーより真に早いのがあるなら上向きも下向きもないけど、もうそこまで行ったら研究者レベルの話でしかない気がする



601 名前:デフォルトの名無しさん [2020/09/20(日) 11:23:17.24 ID:MLu0Cj9r.net]
>>559-560
短いこの間でダークサイドに堕ちてて草

602 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 11:58:05.82 ID:FaUtZa6z.net]
>>591
お詫び→弁解→言い訳→逆ギレ
冷静に書いてたつもりが書いてくうちに興奮して見事なコンボを決めたようだ

603 名前:デフォルトの名無しさん [2020/09/20(日) 12:47:09.77 ID:MLu0Cj9r.net]
感情豊かでかわいいw

604 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 12:59:00.77 ID:wHMtOvf4.net]
気分を変えてまた数学板より

自然数nに対して格子点の集合{(a,b) | a,bは1〜nの整数}の中の相異なる4点の組みで同一円周上に並ぶものの個数を数え上げよ
n:1〜8では
[0,1,14,194,826,2491,6364,14564]
のハズ

605 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 13:05:52.02 ID:wHMtOvf4.net]
>>594
ちなみにn=3の場合の14個は
1×1の正方形:4個
2×2の正方形:1個
√2×√2の正方形:1個
2×1の長方形:4個
4辺が1,1,√2,2√2の等脚台形:4個
の14個

606 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 18:36:43.29 ID:XyOg3AIQ.net]
>>594
https://ideone.com/L3IoWm
{0,1,14,184,762,2257,5704,13040}と出たんだが
どっちが合ってる?

607 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 18:44:44.75 ID:XyOg3AIQ.net]
一直線上にある4点の組を余分に数えたところ >>594 の解と一致した
https://ideone.com/GUZoZL

608 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 18:56:48.73 ID:wHMtOvf4.net]
あ、ホントだ失礼しました

609 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 19:10:27.22 ID:wHMtOvf4.net]
[0,1,14,184,762,2257,5704,13040]
が正解ですね

https://ideone.com/YULQQ4

610 名前:デフォルトの名無しさん [2020/09/20(日) 22:46:33.41 ID:9sb+TTLg.net]
>>594
問題がわからない。



611 名前:デフォルトの名無しさん mailto:sage [2020/09/21(月) 00:11:09.46 ID:ZXxiMs6i.net]
>>600
n=3だと

●●◯ ◯●● ◯◯◯ ◯◯◯
●●◯ ◯●● ●●◯ ◯●●
◯◯◯ ◯◯◯ ●●◯ ◯●●

●◯● ◯◯◯ ●●◯ ◯●●
●◯● ●◯● ◯◯◯ ◯◯◯
◯◯◯ ●◯● ●●◯ ◯●●

●●◯ ◯●● ◯◯● ●◯◯
◯◯● ●◯◯ ◯◯● ●◯◯
◯◯● ●◯◯ ●●◯ ◯●●

●◯● ◯●◯
◯◯◯ ●◯●

612 名前:
●◯● ◯●◯

の14通り
[]
[ここ壊れてます]

613 名前:デフォルトの名無しさん mailto:sage [2020/09/21(月) 11:36:08.07 ID:VFD1LGbi.net]
>>594のお題は、
平面上に4点を選んだとき、その4点をすべて含む円周が存在する場合としない場合がある
xy平面上に、x,yの各座標が1〜nの整数であるような、互いに異なる点を4つ選んだとき、4点すべてを含む円周が存在するものがいくつあるか?
n=1〜8についてそれぞれ数え上げよ
(註:n=1のときは異なる4点を選べないので、解は0でよい)

ってことでいいかな?

614 名前:デフォルトの名無しさん mailto:sage [2020/09/21(月) 13:45:14.08 ID:tVxoOCVr.net]
>>601
n=4 のときの184通り
imgur.com/GNuPa4z.png

615 名前:デフォルトの名無しさん mailto:sage [2020/09/21(月) 14:54:29.54 ID:/KyZWHiy.net]
>>603
正解だと思う
おそらくn=9までは

[0,1,14,184,762,2257,5704,13040,25996]

今作ってるのはC[n^2,4]を全数検査してるのでO(n^8)で計算量増えるので二桁以上はしんどいorz

616 名前:デフォルトの名無しさん [2020/09/22(火) 00:03:46.43 ID:jIz1rAqD.net]
誰かフォルダにパスワード駆ける方法教えてくれ

617 名前:253 mailto:sage [2020/09/22(火) 02:15:18.79 ID:jDcMk3G3.net]
対象性を考慮する以外の計算量の削減手段はないのかねこの手の問題は
解決すべき課題は計算量の削減ばかりではないだろうけれどさ

618 名前:デフォルトの名無しさん mailto:sage [2020/09/22(火) 09:28:15.64 ID:yucbsR+t.net]
まぁ何に重きを置くかですな
数学板でこの手のプログラムが必要になるのは誰も答え持ってなくて、一応答えは出てるけど確認したいときとか
その時は速度より“確実に正しい”事の方が重要になる
この場合も対称性やら、明らかに無駄な可能性を排除すれば速度は上がるけど“確実に正しい”のかは怪しくなってしまう
実務でプログラム使う人もその辺のtpoは意識してるのでは?、
コード汚くても高速な奴も募集中

619 名前:デフォルトの名無しさん mailto:sage [2020/09/22(火) 11:56:55.93 ID:LgsCAwYw.net]
>>603に挙げられている184通りのうち、その3/4にあたる138通りが、直径が√10のものである
そのうち、円の中心が図の中央にあるものは、候補となる点が8個あるので、8C4 = 70 通りある。
図の中央から(±1,0)または(0,±1)ずれたものは、候補となる点が6個なので4×(6C4)=60通り
図の中央から(±2,0)または(0,±2)ずれたものが、候補となる点が4個なので4×(4C4)=4通り
図の中央から(±1,±1)ずれたものが、候補となる点が4個なので4×(4C4)=4通り
合わせて 70+60+4+4=138 通りと数え上げることができる

図の中央を基準にすることができるものばかりとは限らないところには注意が必要だが
総当たりよりは効率化が見込めると思われる。

620 名前:253 mailto:sage [2020/09/28(月) 22:51:28.57 ID:mT2w1+AU.net]
>>518 Python3, >>585を参考に計算量を√nに減らした解法

import math
for n in [81, 87, 91, 13]:
  s = math.sqrt(n)
  f = n
  for i in reversed(range(2, 1 + math.floor(s))):
    q, m = divmod(n, i)
    if m == 0: f = q; break
  print(n, '=>', f)


実行結果
~ $ python 18_509_99_rootn.py
81 => 9
87 => 29
91 => 13
13 => 13

もっとスマートな解法を考えていると双曲線を意識した解法を意識してしまうが、
簡単には解けない数学の問題に突き当たると思う



621 名前:253 mailto:sage [2020/09/28(月) 22:53:47.02 ID:mT2w1+AU.net]
>>609
× 意識した解法を意識してしまうが、
○ 意識した解法を思い浮かべてしまうが、

622 名前:デフォルトの名無しさん mailto:sage [2020/09/29(火) 18:23:40.44 ID:TPx3FsW2.net]
お題: バブルソートを実装せよ

623 名前:253 mailto:sage [2020/09/29(火) 23:24:18.49 ID:219xwwXO.net]
>>611
プログラミングのお題スレ Part13
mevius.5ch.net/test/read.cgi/tech/1549160513/231

624 名前:デフォルトの名無しさん mailto:sage [2020/09/30(水) 20:15:38.19 ID:rtPyMlCZ.net]
古参はここで「番兵おけやボケェ!」と言う

625 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 01:25:55.75 ID:cJ6xF5hb.net]
お題:
アッカーマン関数の引数が与えられるので、計算過程を1ステップずつ出力してください

入力:
2 1

出力:
A(2, 1)
A(1, A(2, 0))
A(1, A(1, 1))
A(1, A(0, A(1, 0)))
A(1, A(0, A(0, 1)))
A(1, A(0, 2))
A(1, 3)
A(0, A(1, 2))
A(0, A(0, A(1, 1)))
A(0, A(0, A(0, A(1, 0))))
A(0, A(0, A(0, A(0, 1))))
A(0, A(0, A(0, 2)))
A(0, A(0, 3))
A(0, 4)
5

626 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 11:20:33.49 ID:iee67Noq.net]
>>614
Haskell

astr m n = "A(" ++ m ++ "," ++ n ++ ")"
ack' 0 n = (n+1, [astr (show 0) (show n), (show $ n+1)])
ack' m 0 = let
(val, ss) = ack' (m-1) 1
in (val, (astr (show m) (show 0)) : ss)
ack' m n = let
(val1, ss1) = ack' m (n-1)
(val2, ss2) = ack' (m-1) val1
ss = [astr (show $ m-1) s | s <-ss1] ++ (tail ss2)
in (val2, (astr (show m) (show n)):ss)
ack m n = map (++"\n") $ snd $ ack' m n

main = do
[x,y]<-(return.(map read).words)=<<getLine
mapM_ putStr $ ack x y

627 名前:デフォルトの名無しさん [2020/10/01(木) 12:09:11.51 ID:OaA9a4hN.net]
Haskellでもこんな長くなるの?

628 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 12:15:24.40 ID:O+PWz9pR.net]
>>616
いや、上手な人ならもっと上手くやるはず
アホほどライブラリがあってそれ使えば楽々のハズだけど修行中の身ではこんなもんorz

629 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 14:04:34.18 ID:Am+nhG+G.net]
>>615
ちょっとチューンナップ
達人なら***とか>>>とか意味わからん演算子使ってもっとスッキリ書くんだろうけどアホほどあって使いこなせんorz

haskell
----
astr m s = "A(" ++ (show m) ++ "," ++ s ++ ")"
ack 0 n = [astr 0 $ show n, show $ n+1]
ack m 0 = (astr m $ show 0) : ack (m-1) 1
ack m n = let
ss1 = ack m (n-1)
in [astr m $ show n]
++ (map (astr (m-1)) ss1)
++ (tail $ ack (m-1) (read $ last ss1))

main = do
[x,y]<-(return.(map read).words)=<<getLine
mapM_ ((putStr).(++"\n")) $ ack x y

630 名前:蟻人間 mailto:sage [2020/10/02(金) 19:50:35.06 ID:gQLwfaGp.net]
お題: 野球のボールの動きを物理シミュレートして、ピッチャーの投げてきたボールをより遠くにかっ飛ばすバッターAIを開発せよ。



631 名前:デフォルトの名無しさん mailto:sage [2020/10/02(金) 20:54:50.29 ID:tP403VLl.net]
カーブやシュートも再現しろよ

632 名前:253 mailto:sage [2020/10/02(金) 21:41:56.95 ID:kl4hmyt8.net]
>>619

─┼─┐─┼─  /  ,.           `゙''‐、_\ | / /
  │  │─┼─/| _,.イ,,.ィ'    ─────‐‐‐  *  ←>>蟻人間
  │  |ツ │    |  |  | イン /´⌒`ヽ    // | \
                     {,    リ)  / ./ |  \
               __ /}从、 リ( /  /  |
      ,. ,. -‐===‐- `つ/ ,.イ ’^ソハノリ   / ∵|:・.
    〃〃〃〃      //ミノ__  /´   /∴・|∵’
ヽ_I__I__I__I__I_I     __ノ_/ /    ヽミ、、   .∵.;|∵’:;
ー{____,,二二二ニ) ノΘ(__   )  ゙ 、∵.;|∵’,
 /I I I I I I     .^^^'   \ !  ̄フ    ゙ 、 |∴
                   ソ  /      `
                  ノ⌒ヽ')
                / ノ/ /
               /\/ ∧/   /       ',
              / /  ノ./   ./        ',
             ノ/   ヘ__、  ./ / ̄ ̄ ̄ヽ .',
            ヘ_'_,       /  \   /  ',
                     /    \/    ',
            ゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙             ゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙

633 名前:デフォルトの名無しさん mailto:sage [2020/10/02(金) 21:46:15.88 ID:JDxjQVnw.net]
ナイス

634 名前:デフォルトの名無しさん mailto:sage [2020/10/02(金) 22:04:39.76 ID:jsz+6t1Q.net]
>>621
くっそワロタ

635 名前:253 mailto:sage [2020/10/03(土) 01:10:19.52 ID:io8Ij0O0.net]
>>614 Perl5

use feature qw{signatures say}; no warnings 'experimental';
sub A($m, $n, $l, $r) {
 say "${l}A($m, $n)$r";
 $m ? $n
  ? A($m-1, A($m, $n-1, "${l}A(".($m-1).', ', ")$r"), "${l}A(".$m.', ', ")$r")
  : A($m-1, 1, "${l}A(".($m-1).', ', ")$r") : $n + 1;
}
say A(2, 1, '', '');


実行結果
~ $ perl 18_605_Ackermann_func.pl
A(2, 1)
A(1, A(2, 0))
A(1, A(1, A(1, 1)))
A(1, A(1, A(0, A(1, 0))))
A(1, A(1, A(0, A(0, A(0, 1)))))
A(1, A(1, A(1, A(0, 2))))
A(2, A(1, 3))
A(2, A(0, A(1, 2)))
A(2, A(0, A(0, A(1, 1))))
A(2, A(0, A(0, A(0, A(1, 0)))))
A(2, A(0, A(0, A(0, A(0, A(0, 1))))))
A(2, A(0, A(0, A(1, A(0, 2)))))
A(2, A(0, A(1, A(0, 3))))
A(2, A(1, A(0, 4)))
5

636 名前:253 mailto:sage [2020/10/03(土) 01:13:51.37 ID:io8Ij0O0.net]
なんかBugってる…orz

637 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 12:07:42.48 ID:xbar0BlH.net]
>>614 perl5
https://ideone.com/pRMAjA
s///e でいける

638 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 12:20:08.70 ID:nr2+4P+J.net]
perlの正規表現マジック恐ろしや

639 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 12:37:17.41 ID:MOu6VxbM.net]
>>626
すげえな
ほとんどワンライナーだ

640 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 12:46:20.34 ID:ul2MWjNf.net]
そうなのよね
入力もらって表示→ワンステップだけ展開して戻る
の繰り返しが1番楽なんだけどなぁ



641 名前:253 mailto:sage [2020/10/03(土) 14:01:25.06 ID:5WkJC33J.net]
>>614 Perl5、>>624 を修正。 >>626 あら正規表現で書けちゃうのかイナ…
use feature qw{signatures say}; no warnings 'experimental';
sub A($m, $n) {
 $m ? $n
  ? do{ my ($m2, $n2) = ($m-1, $n-1);
     push @$l, "A($m2, "; push @$r, ')';
     say @$l, "A($m, $n2)", @$r; A($m2, A($m, $n2)) }
  : do{ my ($m2, $n2) = ($m-1, 1);
     say @$l, "A($m2, $n2)", @$r; A($m2, $n2)}
  : do{ my $s = $n + 1; say @$l, $s, @$r; pop @$l; pop @$r; $s };
}
($m, $n) = (2, 1);
say "A($m, $n)";
A($m, $n);

実行結果
$ perl 18_605_Ackermann_func.pl
A(2, 1)
A(1, A(2, 0))
A(1, A(1, 1))
A(1, A(0, A(1, 0)))
A(1, A(0, A(0, 1)))
A(1, A(0, 2))
A(1, 3)
A(0, A(1, 2))
A(0, A(0, A(1, 1)))
A(0, A(0, A(0, A(1, 0))))
A(0, A(0, A(0, A(0, 1))))
A(0, A(0, A(0, 2)))
A(0, A(0, 3))
A(0, 4)
5

642 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 18:00:38.18 ID:WWjeAKvH.net]
>>614 ocaml
https://ideone.com/dqTO60
let (>>) f g x = g (f x)
let rec a m n p =
let () = p (Printf.sprintf "A(%d, %d)" m n) in
if m = 0 then n + 1
else if n = 0 then a (m - 1) 1 p
else a (m - 1) (a m (n - 1) (Printf.sprintf "A(%d, %s)" (m - 1) >> p)) p
let () = print_int (a 2 1 print_endline)

A(2, 1)
A(1, A(2, 0))
A(1, A(1, 1))
A(1, A(0, A(1, 0)))
A(1, A(0, A(0, 1)))
A(1, A(0, 2))
A(1, 3)
A(0, A(1, 2))
A(0, A(0, A(1, 1)))
A(0, A(0, A(0, A(1, 0))))
A(0, A(0, A(0, A(0, 1))))
A(0, A(0, A(0, 2)))
A(0, A(0, 3))
A(0, 4)
5

643 名前:デフォルトの名無しさん mailto:sage [2020/10/07(水) 20:33:26.90 ID:0TsEuxhN.net]
>>614 octave
https://ideone.com/50i12U
function c = a(m, n, p)
p(sprintf('A(%d, %d)', m, n));
if m == 0
c = n + 1;
elseif n == 0
c = a(m - 1, 1, p);
else
c = a(m - 1, a(m, n - 1, @(s) p(sprintf('A(%d, %s)', m - 1, s))), p);
end
end
disp(a(2, 1, @disp));

644 名前:253 mailto:sage [2020/10/08(木) 02:27:24.66 ID:Gy7CYzaJ.net]
藻前ら、なかなかやるなー
気に入った。

645 名前:蟻人間 mailto:sage [2020/10/08(木) 13:59:34.65 ID:N89hoMl4.net]
お題: ax**2+b*x+c==0という形の二次方程式を解き、全ての実数解と実数解の個数を表示する。

646 名前:デフォルトの名無しさん mailto:sage [2020/10/08(木) 15:03:23.36 ID:eK30Q5Ei.net]
実数解はルートを含んだ形でいいのか?
あるいは小数点以下何桁まで正確に求めるのか?

647 名前:蟻人間 mailto:sage [2020/10/08(木) 15:04:48.84 ID:N89hoMl4.net]
>>635
浮動小数点数でいいよ。

648 名前:デフォルトの名無しさん mailto:sage [2020/10/08(木) 21:36:29.64 ID:Q4ykcHSC.net]
>>633
∧_∧  / ̄ ̄ ̄ ̄ ̄
( ´∀`)< オマエモナー
(    )  \_____
| | |
(__)_)

649 名前:蟻人間 mailto:sage [2020/10/09(金) 13:26:20.64 ID:pUAVGuih.net]
お題:計算ができる文章テンプレートを実装し、つるかめ算を自動生成せよ。

文章テンプレートの例:
「ツルとカメが合わせて{$(ツルの数)+$(カメの数)}います。
足の合計本数が{$(ツルの数)*2+$(カメの数)*4}本です。
カメは何匹いますか。」

変数は「$(変数名)」のように表し、その具体的な値は入力として与えられる。
計算式は{ }で囲って表す。
計算式は変数や定数、加減乗除の演算子、または丸カッコを含むことができる。

入力の例:「ツルの数=3, カメの数=4」

650 名前:デフォルトの名無しさん [2020/10/09(金) 14:02:14.80 ID:/NdRCF04.net]
>>634 js
function quadraticWithCount(a, b, c) {
const inSqrt = b ** 2 - 4 * a * c
if (inSqrt < 0) return [[], 0]
const l = - b / (a * 2)
if (inSqrt === 0) return [[l], 1]
const r = Math.sqrt(inSqrt) / (a * 2)
return [[l - r, l + r], 2]
}

console.log(quadraticWithCount(3, -2, -1))
console.log(quadraticWithCount(3, 6, 3))
console.log(quadraticWithCount(1, 2, 3))

// [ [ -0.3333333333333333, 1 ], 2 ]
// [ [ -1 ], 1 ]
// [ [], 0 ]



651 名前:蟻人間 mailto:sage [2020/10/09(金) 14:14:06.07 ID:LR5flFjI.net]
>>638
追記: パーサーを作れない人はevalを用いても構わない。

652 名前:デフォルトの名無しさん [2020/10/09(金) 14:14:59.57 ID:/NdRCF04.net]
>>634 js 改善
function quadratic(a, b, c) {
const rt = Math.sqrt(b ** 2 - 4 * a * c)
return [(-b + rt) / (2 * a), (-b - rt) / (2 * a)]
}

function quadraticReal(...abc) {
const ans = quadratic(...abc)
const [a1, a2] = ans
if (isNaN(a1)) return []
if (a1 === a2) return [a1]
return ans
}

const quadraticRealWithCount = (...abc) => addCount(quadraticReal(...abc))

const addCount = a => [a, a.length]

console.log(quadraticRealWithCount(3, -2, -1))
// [ [ 1, -0.3333333333333333 ], 2 ]
console.log(quadraticRealWithCount(3, 6, 3))
// [ [ -1 ], 1 ]
console.log(quadraticRealWithCount(1, 2, 3))
// [ [], 0 ]

653 名前:デフォルトの名無しさん mailto:sage [2020/10/09(金) 17:52:52.10 ID:gniylpO4.net]
>>638 Ruby
ツルの数 = 3
カメの数 = 4
Template =<<_EOT_
「ツルとカメが合わせて{$(ツルの数)+$(カメの数)}います。
足の合計本数が{$(ツルの数)*2+$(カメの数)*4}本です。
カメは何匹いますか。」
_EOT_

puts Template.gsub( /\{(.*?)\}/ ){ eval $1.gsub( /\$\((.*?)\)/ ){ $1 } }

654 名前:253 mailto:sage [2020/10/09(金) 22:43:14.04 ID:/QeZd0d9.net]
>>638 Perl5

use utf8;
no warnings 'utf8';
$ツルの数 = 3;
$カメの数 = 4;
print <<EOF
「ツルとカメが合わせて@{[${ツルの数}+${カメの数}]}います。
足の合計本数が@{[${ツルの数}*2+${カメの数}*4]}本です。
カメは何匹いますか。」
EOF


実行結果
~ $ perl 18_633_ツルの数+カメの数.pl
「ツルとカメが合わせて7います。
足の合計本数が22本です。
カメは何匹いますか。」

655 名前:蟻人間 mailto:sage [2020/10/09(金) 23:14:45.18 ID:LR5flFjI.net]
お題: 2つのRGBカラーが#RRGGBB形式で与えられる(RRGGBBは六桁の十六進数とする)。
2つの中間色を#RRGGBB形式で出力せよ。
可能ならばこれら3つの色をカラーバーとして表示せよ。

656 名前:蟻人間 mailto:sage [2020/10/09(金) 23:26:06.11 ID:LR5flFjI.net]
>>644
入力例1: #112233, #99AAFF
入力例2: #AD03ff, #a39e75

657 名前:デフォルトの名無しさん mailto:sage [2020/10/09(金) 23:55:14.23 ID:ACx6TREf.net]
>>644,645
自明な入力例だけを示しても、出力例も出さないと意味ないだろう。
2色の中間色ってのが曖昧じゃね?
単にR,G,Bそれぞれの平均を取るだけなのか、赤と紫の中間が赤紫になるように循環する色相で中間をとるのかとか。

658 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 02:56:37.74 ID:KFXrJR76.net]
問題が玉石混合だなぁ

659 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 07:06:51.16 ID:PdovQueR.net]
>>643
>変数は「$(変数名)」のように表し、

660 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 07:45:17.48 ID:nh4sk35x.net]
お題: 20201010と出力してください。ただしコードに使っていい数字は1のみです。



661 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 08:25:49.31 ID:qt6u2bFw.net]
>>649 python

a=1;b=a+a;c=a-a
print(b,c,b,c,a,c,a,c,sep='')
#出力20201010

662 名前:デフォルトの名無しさん [2020/10/10(土) 10:53:30.16 ID:nh4sk35x.net]
>>649 自分で js
const t = `
`.charCodeAt()
console.log(t + t + "" + (t + t) + t + t)

const m = "ϲ".charCodeAt()
console.log(m + m + "" + m)

663 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 12:06:27.17 ID:0z4oJBva.net]
>>649
js本日限定
new Date().toLocaleDateString().split(/-|\//).join``
//=> "20201010"

664 名前:デフォルトの名無しさん [2020/10/10(土) 14:54:47.61 ID:iOujIiR/.net]
>>647
×こんごう
○こんこう

665 名前:デフォルトの名無しさん [2020/10/10(土) 14:57:00.84 ID:iOujIiR/.net]
>>649
Java
https://paiza.io/projects/8QZuxNJ_iMGrfafT8HlLGw

666 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 15:40:40.94 ID:Duwb5Fsi.net]
>>654
012にOIZ使うのセンスある

667 名前:デフォルトの名無しさん [2020/10/10(土) 18:37:22.80 ID:jNM1f0U4.net]
>>649 C
https://ideone.com/5BGavX

668 名前:デフォルトの名無しさん [2020/10/10(土) 18:54:45.98 ID:V01gi3BN.net]
>>656
Windowsでもそのままでいけるのか?

669 名前:蟻人間 mailto:sage [2020/10/10(土) 19:24:31.52 ID:c6WyhNHP.net]
お題: 振動数1000Hzの音を1秒間発振せよ。

670 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 19:32:24.80 ID:53GLINoh.net]
>>649 c
https://ideone.com/DbqsXs



671 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 19:46:18.01 ID:LCYuVeVr.net]
haskell

import Data.Maybe
main = print $ product $ map ((fromJust).(flip lookup (zip ['\t'..] [1..]))) "&myC"

672 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 21:44:48.33 ID:0z4oJBva.net]
>>658 js
var ctx = new window.AudioContext
var osc = ctx.createOscillator()
osc.type = 'sine'
osc.frequency.value = 1000
osc.connect(ctx.destination)
osc.start()
osc.stop(1)

673 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 23:07:21.98 ID:t1LUP7rm.net]
>>649
haskell 改良

unicode = length . tail . (enumFromTo minBound)
main = print $ product $ map unicode "ാᝇ"

674 名前:デフォルトの名無しさん [2020/10/10(土) 23:18:40.46 ID:iOujIiR/.net]
>>644
Java
https://paiza.io/projects/taHgDigIq_C5KjS66xaCfQ
https://dotup.org/uploda/dotup.org2277678.png

675 名前:デフォルトの名無しさん mailto:sage [2020/10/11(日) 00:16:06.04 ID:6GsmNhIZ.net]
>>649 JavaScript
[1+1,1-1,1+1,1-1,1,1-1,1,1-1].reduce((acc,n)=>acc+n,'')

676 名前:デフォルトの名無しさん [2020/10/11(日) 01:54:01.50 ID:eYi6TEVp.net]
>>614
Java
https://paiza.io/projects/IVaRnsx6lYLlO1CcbniO-Q

677 名前:デフォルトの名無しさん [2020/10/11(日) 08:58:57.96 ID:luIvAMCe.net]
>>649 J
smoutput ,&":/ 'amp' i. 'papamama'

678 名前:デフォルトの名無しさん [2020/10/11(日) 11:20:41.53 ID:eXVrSXVr.net]
>>649 bash
aa=1; bb=$((aa-aa)); cc=$aa$bb$aa$bb; printf "%d" $((cc+cc)) $cc; echo

679 名前:デフォルトの名無しさん [2020/10/11(日) 17:59:24.67 ID:/6XslNRS.net]
>>638
Perl
https://paiza.io/projects/wfQXB4arB2zbu4DNYEiU5w

eval が使えて楽なので、つい。

680 名前:デフォルトの名無しさん [2020/10/11(日) 18:12:54.16 ID:eYi6TEVp.net]
>>611
Java
https://paiza.io/projects/2bTy71EhJJcVemamRx8IPA



681 名前:デフォルトの名無しさん [2020/10/11(日) 19:16:59.76 ID:/6XslNRS.net]
>>644
Kotlin
https://paiza.io/projects/O1eUwROYKRQepDq3N-VyUA

paiza.io はHTMLで出力させてブラウザに表示できるのでカラーバーも出してみました。

682 名前:デフォルトの名無しさん [2020/10/11(日) 19:36:20.38 ID:eYi6TEVp.net]
これは良いこと聞いた

683 名前:デフォルトの名無しさん [2020/10/11(日) 19:48:34.94 ID:ki6dTuuo.net]
>>649 Common Lisp (SBCL, 処理系依存)
https://ideone.com/nImAgj

684 名前:デフォルトの名無しさん mailto:sage [2020/10/11(日) 20:05:13.72 ID:FQjAt+Dq.net]
>>672
かわいい

685 名前:デフォルトの名無しさん mailto:sage [2020/10/11(日) 20:30:57.80 ID:vt3DXswM.net]
>>649 brainfuck

>+++++++[<+++++++>-]<+.--.++.--.+.-.+.-.

686 名前: mailto:sage [2020/10/11(日) 23:30:32.44 ID:A2vGg89g.net]
>>614
C(C++) https://mevius.5ch.net/test/read.cgi/tech/1434079972/70

687 名前:蟻人間 mailto:sage [2020/10/11(日) 23:57:26.40 ID:4cQ/GxGI.net]
お題: 整数0〜10の一様分布の乱数を百回発生させて、その統計結果を基に各整数を横軸、回数を縦軸とする棒グラフ(ヒストグラム)を描画し(棒の最大幅32字)、ほぼ一様であることを確かめなさい。

688 名前:デフォルトの名無しさん mailto:sage [2020/10/11(日) 23:59:14.77 ID:B+MSoWxK.net]
paiza.io は、text, html, json で出力できるのか

html も、部分的なタグだけを書いても動くのか

689 名前:蟻人間 mailto:sage [2020/10/12(月) 00:01:01.03 ID:rx5xRSFU.net]
>>676 訂正。

(誤)各整数を横軸、回数を縦軸とする棒グラフ
(正)各整数を縦軸、回数を横軸とする棒グラフ

690 名前:デフォルトの名無しさん mailto:sage [2020/10/12(月) 01:06:07.97 ID:eqKg5iqj.net]
haskell


import Data.List
import System.Random

trial records = do
x <- randomRIO (0, 1) :: IO Double
return $ (truncate $ x * 11) : records

experience = iterate (>>= trial) (return [0..10])
showrecord (x,y) = let
clsstr = id
$ reverse
$ take 2
$ ( ++ (repeat '0'))
$ reverse
$ show x
barstr = replicate y '*'
in concat [ clsstr," ", barstr,"\n"]

main = do
records <- experience !! 100
putStr $ id
$ concat
$ map showrecord
$ map (\x -> (head x, length $ tail x))
$ group
$ sort
$ records



691 名前:デフォルトの名無しさん [2020/10/12(月) 01:14:47.03 ID:hVCmG980.net]
>>649
Kotlin
https://paiza.io/projects/32aoQfPBUWZ0tnk2E5fg2g

ちょっと変わった感じにしようと思ってこうした。

692 名前:デフォルトの名無しさん [2020/10/12(月) 08:18:41.49 ID:fHHXzdlp.net]
>>676
二項分布になるんじゃないかなあ

693 名前:デフォルトの名無しさん [2020/10/12(月) 16:10:06.27 ID:Wx/lfAmjI]
「頭使えよ貧乏人」に思う、寝てても金入るシステムを作る人
https://www.youtube.com/watch?v=VEB6M_s6abs
バカ不平多し★へつらい生きてるからリストラ対象
https://www.youtube.com/watch?v=carOYI-xNoI
勝ちは偶然、負けは必然★負けて消えた人に足りなかったものは?
https://www.youtube.com/watch?v=agAQTF1OaBU&t=38s
リーダー達の給料が高いのは単純労働者じゃないから
https://www.youtube.com/watch?v=8o9il6dVXGk
できません、自信がありません、無理です★ボンクラにしたのは誰?
https://www.youtube.com/watch?v=54YNXSQsxuM
稼げない人へ★

694 名前:報商材こそ稼げない分野が分かる
https://www.youtube.com/watch?v=x_2nSmlx3og
9割の人は、ただの作業員★自学自習こそ仕事の基本
https://www.youtube.com/watch?v=vIGKDmmBJcs
サラリーマン、10年経てばボンクラ説
https://www.youtube.com/watch?v=QdfVJnVuLlY
[]
[ここ壊れてます]

695 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 15:32:12.46 ID:M1NONSBM.net]
>>658 オーディオ系はシステム依存度が高いから余りサンプルが出てこないね。 WindowsやMacOSなら簡単そうだが
1kHz の音源ファイルを使うのは違反かな?

696 名前:蟻人間 mailto:sage [2020/10/14(水) 17:27:12.50 ID:TNR/wFHW.net]
>>658 C/C++ with Win32
#include <windows.h>
int main(void)
{
Beep(1000, 1000);
}

697 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 17:57:41.59 ID:qOYZdiW9.net]
答え出てきても試しようがない

698 名前:蟻人間 mailto:sage [2020/10/14(水) 18:19:22.34 ID:TNR/wFHW.net]
>>658 Python with Windows
import winsound
winsound.Beep(1000, 1000);

699 名前:蟻人間 mailto:sage [2020/10/14(水) 18:24:27.45 ID:TNR/wFHW.net]
>>658 Python with Mac
import os
os.system('play -n synth 1 sin 1000');

700 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 18:36:34.21 ID:Azmo5ss/.net]
シェル経由でSoX playコマンド呼んでるだけやんけ
Pythonもmacも関係ねぇわ



701 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 19:17:28.35 ID:Y0U/d7P+.net]
OSにつく前置詞はwithじゃなくてonだろハゲ

702 名前:デフォルトの名無しさん [2020/10/14(水) 19:30:29.09 ID:pZU5VHHG.net]
試すと音が出て煩そうだから試す気になれない。

703 名前:蟻人間 mailto:sage [2020/10/14(水) 19:50:02.82 ID:TNR/wFHW.net]
テレビの自主規制音と同じ音だよ。
https://ja.wikipedia.org/wiki/%E8%87%AA%E4%B8%BB%E8%A6%8F%E5%88%B6%E9%9F%B3

704 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 00:45:55.69 ID:BUh584nA.net]
>>688 iOS じゃ、play コマンドがなさそうなんだよな。

705 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 01:18:37.79 ID:fqrOjoDi.net]
結局このスレで盛り上がるのは環境によらず言語によらず、でも多少は骨のあるようなお題なんだよな
へぇその言語ならそんなにキレイに書けるのかとか普段自分が使ってない言語ではどうやって実現できるのか眺めたりするのが面白い
音鳴らすなんてお題として面白いわけがない

706 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 01:40:28.46 ID:S6IC+plr.net]
ヒント:出題者

707 名前:デフォルトの名無しさん [2020/10/15(木) 11:44:28.12 ID:cDg3UiVL.net]
蟻人間さんへのお題:
文字列を受け取って、RFC 5322にしたがってSubjectヘッダを出力してください(MUST、SHOULDを満たすこと)
文字コードはUTF-8、エンコーディングはBエンコードを使用してください

708 名前:蟻人間 mailto:sage [2020/10/15(木) 13:28:00.67 ID:s1gNbcw/.net]
>>695 Python
text = 'Re: Re: This is a subject text. This is a subject text. This is a subject text.'
if text[0:4] == 'Re: ':
__while text[0:4] == 'Re: ':
____text = text[4:]
__text = 'Re: ' + text
import base64
text = 'Subject: ' + base64.b64encode(text.encode('utf-8')).decode('ascii');
ary = []
while len(text) > 78:
__ary.append(text[0:78])
__text = text[78:]
ary.append(text)
import platform
if platform.system() == 'Windows':
__for item in ary:
____print(item)
else:
__for item in ary:
____print(item, end="\r\n")

709 名前:蟻人間 mailto:sage [2020/10/15(木) 13:49:36.74 ID:IXtC9lOP.net]
>>696 訂正。

(誤) while len(text) > 78:
(正) while len(text) >= 78:

710 名前:デフォルトの名無しさん [2020/10/15(木) 14:30:46.93 ID:cDg3UiVL.net]
>>696
いろいろ違うので・・・メールのソース眺めたが良いです



711 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 19:14:52.90 ID:QzXinxJa.net]
頭の悪いお題を連投してるやつはやっぱり頭悪いんだな

712 名前:デフォルトの名無しさん [2020/10/15(木) 19:22:03.88 ID:cDg3UiVL.net]
そんなことないと思うけどな
あまり他人の悪口言わない方が良いよ

713 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 19:28:33.00 ID:QzXinxJa.net]
くっそみたいなお題延々と出し続けてウザいじゃん

714 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 19:29:59.48 ID:MTvivIgb.net]
>>638なんかはいいと思うんだけどな
eval使えないHaskellerにはいい練習問題になってる

715 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 19:38:14.90 ID:QzXinxJa.net]
ウェブアプリつくれだのGUIアプリつくれだの酷い事散々言いまくってるじゃん
◆QZaw55cn4cの方がまだマシ

716 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 19:40:03.02 ID:MTvivIgb.net]
まぁ音出せとかカラーバー出せとかはクソお題だな

717 名前:デフォルトの名無しさん [2020/10/16(金) 19:48:26.76 ID:2tllxc0n.net]
お題
自然数nを 2進数にした時、 1が連続する個数の最大値を求める。

20201016 -> 5

718 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 20:25:28.88 ID:YQH8/KbW.net]
haskell

import Data.List

maxConsOne = maximum . map length . filter ((==1).head) . group . unfoldr (\n ->if n == 0 then Nothing else Just (mod n 2, div n 2))

main = print $ maxConsOne $ 20201016
----
5

719 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 21:03:20.03 ID:a9PKFHNt.net]
>>705 ruby
f = ->(n) {n.to_s(2).chars.chunk(&:itself).map {|k, a| k == '1' ? a.size : 0}.max}

720 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 21:35:06.98 ID:XtprH8ZD.net]
>>705 JavaScript
const f = (n = 0) => Math.max(...(n.toString(2).match(/1+/g) ?? ['']).map(m => m.length))

console.log(f(20201016)) //=> 5



721 名前:253 mailto:sage [2020/10/16(金) 23:46:14.30 ID:5gS0lg4h.net]
>>705 Perl5

use List::Util max;
print max map{length} sprintf('%b', 20201016) =~ /(1+)/g;


実行結果
$ perl 18_695_bin1.pl
5

722 名前:デフォルトの名無しさん [2020/10/17(土) 00:12:43.05 ID:7ct7R1y+.net]
>>705 Ruby

p 20201016.to_s(2).split("0").max.size

723 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 00:24:53.85 ID:u2s9P3C4.net]
haskell
無名関数というインチキ使ってしまったので再挑戦バージョン

import Data.List

main = print $ maximum . map sum . group . map (flip mod 2) . takeWhile (/=0) . iterate (flip div 2) $ 20201016

724 名前: mailto:sage [2020/10/17(土) 00:46:45.25 ID:4JRxXuyk.net]
>>705
https://ideone.com/hQRZsi

725 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 01:58:38.41 ID:S6LboNFt.net]
>>705 Ruby
n = 20201016
nl = 0
while n > 0
nl = ((nc = (n.odd?)? nc + 1 : 0) > nl)? nc : nl
n >>= 1
end
puts nl

726 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 01:59:32.64 ID:u2s9P3C4.net]
>>712
125の時1になった

727 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 02:41:53.51 ID:AbkDXvLA.net]
これだからQZ

728 名前: mailto:sage [2020/10/17(土) 02:53:09.41 ID:4JRxXuyk.net]
>>705
C++: https://ideone.com/7H5HBx

>>712 にはロジックに欠陥がありました

>>714
ご指摘ありがとうございます。

729 名前:703 mailto:sage [2020/10/17(土) 09:22:46.57 ID:S6LboNFt.net]
>>714
自分の >>713
- nl = 0
+ nc = nl = 0

730 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 12:19:37.13 ID:a+zi+w45.net]
>>705 C++
https://wandbox.org/permlink/udZVzwy6pQKbcPa5



731 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 13:46:27.15 ID:eBu6AjRf.net]
>>705 C
https://ideone.com/DwvfL2

732 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 18:57:16.23 ID:S6LboNFt.net]
>>705 Ruby
n = 20201016
i = 0
while n != 0
n &= n << 1
i += 1
end
puts i

733 名前:デフォルトの名無しさん [2020/10/17(土) 19:11:03.54 ID:wXdm0x1E.net]
>>720
うまいやり方だな。それには気付かなかった。

734 名前:デフォルトの名無しさん [2020/10/17(土) 19:29:10.40 ID:wXdm0x1E.net]
>>705
Kotlin script

2進数文字列に変換してから 0 を区切り文字にして分割してその中の一番長い文字列の長さを出すというやり方。

fun max1(n: Int) = n.toString(2).split('0').map { it.length }.max()

println(max1(20201016))

これで 5 が出る。

同じやり方を perl5 で(特にモジュール使わずに)やるとこんな感じ。

perl -e '$n=20201016; $m = (sort { $b <=> $a } map { length($_) } (split /0+/, sprintf("%b", $n)))[0]; print "$m\n"'

同じく5が出る。

735 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 20:05:12.33 ID:vimxgZ9f.net]
>>705 JavaScript

let num = 20201016
let ans = num.toString(2).split`0`.sort().pop().length

console.log(ans) //=> 5

736 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 20:50:55.84 ID:w8j3NnhR.net]
>>705 octave
https://ideone.com/dO1WZp
f = @(n) max(cellfun(@numel, strsplit(dec2bin(n), '0')));
f(20201016)

737 名前:デフォルトの名無しさん [2020/10/17(土) 20:54:06.81 ID:frzgm+pU.net]
>>705
Perl
https://paiza.io/projects/VO9_CFHPOVbO5iI8uDc__A

738 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 23:22:21.08 ID:P3PLPttw.net]
いつもRubyの人からなにかしら学ぶことがある

739 名前:デフォルトの名無しさん [2020/10/18(日) 00:42:32.49 ID:nYmbGZmV.net]
ハトにエサを与えないで下さい

740 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 01:06:12.01 ID:qT62bbHa.net]
QZは自分の頭が悪いのをわざわざ周知してもらうためにクソコードを晒すのか
ドMだな



741 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 03:42:01.18 ID:DpwMGaW+.net]
>>720
なるほどな、感心した
n>>1でもいいわけだな

742 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 04:21:53.35 ID:xWXtsYNK.net]
>>710 のほうが速いと思うが

743 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 04:36:21.54 ID:F/EhVBet.net]
rubyよく分からないけど>>720の方が100倍くらいは速そうに思える

744 名前:デフォルトの名無しさん [2020/10/18(日) 05:53:44.51 ID:28u9FaXE.net]
うん。速そうだね。数値計算しかしてないし。

745 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 10:06:25.57 ID:ARbR7jXS.net]
20201016みたいに桁数が少ないならそうだけど桁数が増えるとルーブが答え×桁数回だからアルゴリズムそのものは遅い
桁数が少ないうちは内部関数しか使ってない利点で早いとは思うけど

746 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 12:07:22.14 ID:GUbLWvo/.net]
>>733

>>710,720 をベンチマークで比較してみた
https://ideone.com/t0ZYLg
https://ideone.com/DUEWmC
20201016 では 5~6倍
巨大な数だと 7000倍以上

747 名前: mailto:sage [2020/10/18(日) 15:53:00.51 ID:xUpUEWAV.net]
>>703
残念ながら、私の出題もイマイチ人気がありませんでした‥‥

748 名前:デフォルトの名無しさん [2020/10/18(日) 21:20:25.30 ID:wanN/5Zd.net]
>>695
Java
https://paiza.io/projects/frlfP3US1doeAO_HZBnLWQ

749 名前:デフォルトの名無しさん [2020/10/18(日) 21:43:52.67 ID:wanN/5Zd.net]
>>678
Java
https://paiza.io/projects/0xfQrdW_qpJoUbOO6ux6wg

750 名前:デフォルトの名無しさん [2020/10/18(日) 22:06:12.69 ID:wanN/5Zd.net]
>>676
Java
https://paiza.io/projects/x3j0kbjqsSoVGNJX5qun2g



751 名前:デフォルトの名無しさん [2020/10/18(日) 22:14:01.64 ID:wanN/5Zd.net]
>>705
Java
https://paiza.io/projects/Eo4-fSXmdnoqjyHOMsi92Q

752 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 22:45:56.62 ID:F/EhVBet.net]
>>734
x = n
while x != 0
x &= x << 1
i += 1
end
ruby知らないから適当に書いたけど
こんな感じにしないと二回目以降nが0でやってるっぽい
こうすると22倍くらいの差だった

753 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 22:54:22.98 ID:F/EhVBet.net]
連続してるビット数が多いときはこの方が速くなったけど
すごいごちゃごちゃになった

i = 0
s = 1
x = n
while x != 0
t = x & (x << s)
if t == 0 then
if s == 1 then
i += 1
break
end
s = 1
else
x = t
i += s
s = (s << 1)
end
end

754 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 22:56:30.98 ID:QW0aA1Hz.net]
>>734
GJ

755 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 06:30:07.92 ID:8QFJcUQW.net]
>>705
echo "obase=2; 20201016" | bc | sed 's/./&\n/g' | uniq -c | perl -lane 'if ($M < $F[0]) {$M = $F[0]}; END{print $M}'
5

756 名前:724 mailto:sage [2020/10/19(月) 15:26:08.35 ID:u+lqDWSF.net]
>>740
ご指摘の通りでした
https://ideone.com/DUEWmC
を修正しました

>>720 は 1の連続が多いと弱いですね

757 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 17:41:48.20 ID:Sd7Rn+fr.net]
お題
2^(1/3)を百桁表示せよ

出力
1.2599210498948731647672106072782283505702514647015079800819751121552996765139594837293965624362550941543102560356156652593990240

参考 
a(n+3) = 3*a(n+2) + 3*a(n+1) + an
a(1) = 3, a(2)=3, a(3)=15
で決まる数列について
min (a(n)/a(n+1), a(n+1)/a(n+2), a(n+3)/a(n+3) )
. < 2^(1/3)-1
. max (a(n)/a(n+1), a(n+1)/a(n+2), a(n+2)/a(n+3) )
で lim a(n)/a(n+1) = 2^(1/3)-1となる

758 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 21:36:44.38 ID:gq9726ze.net]
>>743
echo "obase=2; 20201016" | bc | sed 's/0\+/\n/g' | wc -L
でよくね?

759 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 22:00:17.27 ID:gq9726ze.net]
>>745 Bash

$ echo "scale=100;e(l(2) / 3)" | bc -l
1.25992104989487316476721060727822835057025146470150
79800819751121552996765139594837293965624362550940

760 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 22:30:56.87 ID:14xSvmON.net]
>>745 dc
dcには平方根の演算子はあるが立方根はないので
c^(1/3) = sqrt(c/sqrt(c/sqrt(c/...)))
と変形して適当に反復

100k[2z333>av/]dsaxp

1.2599210498948731647672106072782283505702514647015079800819751121552\
996765139594837293965624362550941



761 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 23:54:32.40 ID:mPlPc+C9.net]
>>745
参考を誰も参考にしてくれないのにワロタ
参考を元に作ったコード
Haskell

https://ideone.com/ywJPjx

ちなみにrubyのpi.rbが同じテクニック使ってます
そっちは定数係数でない三項間関係の漸化式パージョン

762 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 02:36:31.61 ID:gFGmv7lM.net]
>>746
たしかに

763 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 04:08:13.14 ID:Mf7a0fdE.net]
おっせえじゃん

764 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 21:07:35.93 ID:hsuNVmIy.net]
お題:ぼくがかんがえたさいきょうのちょうわへいきん
2変数調和平均 f(x, y) = 2 / (1 / x + 1 / y)
但し xまたはyがゼロの時、f(x, y) == 0
の計算を考える。
Cのdoubleに相当する精度で計算する際に、理論値(≒多倍長精度で計算したものを
double相当に丸めたもの)と一致しない割合(エラー率)をモンテカルロ法で求めよ。
x, yは、正規分布N(0, 1)の絶対値に従うものとする。

発展的なお題:
前掲の調和平均の式を変形し、エラー率の変化を調べよ。例えば、
f(x, y) = 2 * x * y / (x + y)
のエラー率は、前掲の式と比較してどうだろうか?
また、2 / (1 / x + 1 / y)よりエラー率が低い式は在るだろうか?

発展的なお題その2:
x, yがベンフォードの法則に従う場合はどうなるか。
正規分布N(0, 1)の絶対値の場合と比べて、エラー率の順位は入れ替わるだろうか?

765 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 01:17:43.95 ID:rA+WIIWx.net]
...but nobody answered

766 名前:253 mailto:sage [2020/10/23(金) 09:17:13.74 ID:7L0FHKID.net]
正規乱数をモンテカルロ法で算出して
doubleと多倍長浮動小数点でそれぞれ計差した2変数調和平均に
差がある率を求めれば良いの?
正規乱数なら書かなくともライブラリにあるんだよね。
あるいは誤り率の計算そのものにモンテカルロ法を使うようなやり方なのかな

767 名前:デフォルトの名無しさん mailto:sage [2020/10/23(金) 14:48:32.25 ID:oxO2c12D.net]
次のプリーズ

768 名前:デフォルトの名無しさん [2020/10/23(金) 20:02:36.14 ID:Vzf4XOui.net]
お題
乱数を使ってシミュレーションしてください

ジョーカーを除くトランプ52枚から1枚抜き取って箱に入れました
その後、残った51枚から3枚引いて確認したら3枚ともダイヤでした
では最初に抜き取った箱の中が1枚がダイヤである確率はいくらか?

769 名前:デフォルトの名無しさん mailto:sage [2020/10/23(金) 20:27:24.17 ID:LovVc5SM.net]
>>756 Ruby

DECK = [*0..51]

def hoge
a, *b = DECK.sample(4) until b&.all?{|v| v % 4 == 0}
a % 4 == 0
end

def fuga(n)
1.0 * n.times.count{hoge} / n
end

p fuga(1e6) # => 0.20414
p 10 / 59 # => 0.20408163265306123

770 名前:デフォルトの名無しさん mailto:sage [2020/10/23(金) 20:46:02.34 ID:LovVc5SM.net]
途中で送信してしまった

99%信頼区間は 0.20414±0.0010382 => [0.2031018, 0.2051782]
理論値は 10/49 = 0.20408163265306123



771 名前:デフォルトの名無しさん [2020/10/23(金) 20:49:11.91 ID:5NWyTruo.net]
確認前後での確率変動を出せ、っていうお題じゃねえのコレ

772 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 01:58:03.71 ID:6bv42JD2.net]
お題
ジョーカー除く52枚のカードがある
スートを表すS,H,D,Cと、A,K,Q,J,X,9,8,7,6,5,4,3,2との2文字からなる文字列でカードの柄を表すこととする。
当然ながら52枚のうちどの2枚も同じ柄でない

この一組のカードを使ってポーカーゲームをする。
すなわち、初手のカード5枚を配られたプレイヤーは、そのうち0枚以上5枚以下のカードを場に捨てて、同じ枚数のカードを残りの山札47枚から引くことができる。
このときどのカードが選ばれるかは無作為であり、プレイヤーは選択できない。

さて、プレイヤーは、初手のカード5枚に対して、最終的に手に残る5枚のカードをポーカーのルールで評価して得られる配点の期待値が最も高くなるように捨て札を決めたい。
入力としてカード5枚が与えられたとき、そのような捨て札の組み合わせを求めるプログラムを記述せよ。

ここで、ポーカーの役と配点の対応はプログラムのパラメータとして組み込んで良い。

773 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 21:09:47.85 ID:xQuuF55s.net]
>>760

// 任意の役の配点を0とする
printf(0);

774 名前:デフォルトの名無しさん [2020/10/24(土) 23:43:41.92 ID:DlOr4HzX.net]
>>756
Java
https://paiza.io/projects/rAHsohR9Q8vhh4kLZnfKAw

775 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 09:27:41.37 ID:dKQi7OF0.net]
>>760 Perl5
https://ideone.com/stLkXf

役のレートは某ゲームのものを使用

ノーペアのとき
全部変える

776 名前:謔1枚残したほうが有利という結果が出てちょっと驚いてる []
[ここ壊れてます]

777 名前:デフォルトの名無しさん [2020/10/25(日) 10:49:49.59 ID:zd7LSfWt.net]
3が1枚来てて、3が3枚残ってるなら、
・手元の3を捨てると、3が来ても何も起こらない
・手元に3を残すと、3が来るとワンペアになる

つまり、残りのカードを引けるかどうか、になる
>>756の亜種

778 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 11:44:16.63 ID:c/nOQwtG.net]
746はシミュレーションも何もただの引っ掛け問題でしょ
モンティホール問題の方が引っ掛け問としては出来が良い

779 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 12:58:23.56 ID:vQGWPLvq.net]
引っかけも何も条件付確率の初歩の初歩の問題だろ

780 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 14:14:17.31 ID:tOCt4zCM.net]
52枚トランプの束で2枚目から4枚目までがダイアであるような場合に限定してその内先頭もダイアであるような場合は全体の何バーセントかを問う問題



781 名前:742 mailto:sage [2020/10/26(月) 01:17:42.67 ID:LimhPZzI.net]
>>754
正規乱数自体は既存のライブラリで(Pythonならnumpy.random.randnとか)。
例えば、最初のお題(2/(1/x+1/y)で計算するやつ)は、34%位のエラー率になります。

782 名前:253 mailto:sage [2020/10/27(火) 00:51:04.61 ID:uqMOOUWw.net]
そうすると俺にはモンテカルロ法をわざわざ使うところが
どこかよく分からないんだよね…

783 名前:デフォルトの名無しさん mailto:sage [2020/10/27(火) 23:07:51.35 ID:9NNPSda/.net]
結局>>752は数学的にはどういう意味なんやろ
x,yがN(0,1)に従う独立確率変数、
ρ:R→RがDouble型に丸める関数(Doubleのレンジに入らない確率はほとんど0だから無視)、
h(x,y)=2xy/(x+y)
としたとき
P(ρ(h(ρ(x),ρ(y))) ≠ ρ(h(x,y))) ≒ 34%
って事?

784 名前:253 mailto:sage [2020/10/28(水) 00:01:38.74 ID:Jno143Es.net]
面白い記号だなそれ。
だが、他の人にも伝わるように書いた方が話が広がってよいよ。
どんなに数学が得意な人でも本当に優秀な人はそうすることができると思う

785 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 00:17:22.90 ID:3yQQm3er.net]
Φρズと書いてハイロウズと読みます

786 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 00:21:17.79 ID:n11gpLQR.net]
煽りでもなく素直に疑問なのだが>>770のどこら辺がわからないんだ?
正規分布の下りか?

787 名前:253 mailto:sage [2020/10/28(水) 00:30:53.43 ID:Jno143Es.net]
>>772
マジレスしようと思ったが、そういう問題じゃないんだよ
言葉で書きゃー2,3行のことなんだから
言葉で人に伝わるように書けばいいだろ


と、突き放しちゃ実も蓋も無いので少しマジレスすると
ρ:R→R が写像なのは分かる。
がしかしだ

P(ρ(h(ρ(x),ρ(y))) ≠ ρ(h(x,y))) ≒ 34%

って、お前の教室のホワイトボードじゃねんだぞ。

そんなんでどうっやって世の人と付き合ってんだか…

788 名前:253 mailto:sage [2020/10/28(水) 00:40:32.18 ID:Jno143Es.net]
大体、P()てのは何の関数だ。
どこにでもあるような関数名だが、一般的な関数か?
いや、そんなことの説明は要らない

お前の言いたいことはそんな自己流の式よりも
手短な読んで分かる日本語で書けるはずだ

いいやP()に限らない、お前のレスは一事が万事そんな感じ
一からからやり直せ
そしたら相手してやる

789 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 00:42:08.54 ID:n11gpLQR.net]
>>775
文脈から明らかにP(A)はAが起こる確率でしょうが
ちなみに俺は>>770じゃないんで

790 名前:253 mailto:sage [2020/10/28(水) 00:43:23.90 ID:Jno143Es.net]
>>776
それ関数じゃないだろ。何で関数として書くんだ。
どういう関数空間なんだ?



791 名前:253 mailto:sage [2020/10/28(水) 00:47:05.09 ID:Jno143Es.net]
簡単なことを
わざわざ難しいことのように書くのは
有能な人のすることではない

792 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 00:51:02.28 ID:n11gpLQR.net]
>>777
落ち着けよお前
P(事象A) := 事象Aが起こる確率 なんて高校数学の範疇だぞ
>>770が殊更ペダンチックには感じない

793 名前:253 mailto:sage [2020/10/28(水) 01:00:33.01 ID:Jno143Es.net]
>>779
別に落ち着いているけど
これか
https://ja.wikipedia.org/wiki/%E6%9D%A1%E4%BB%B6%E4%BB%98%E3%81%8D%E7%A2%BA%E7%8E%87
P()が確立っていつから?
俺が大学の頃まではこういう記法は見た記憶が無いんだけど

P(ρ(h(ρ(x),ρ(y))) ≠ ρ(h(x,y))) ≒ 34%

これは言葉で書いたらもっと分かりやすくならないのか?

794 名前:253 mailto:sage [2020/10/28(水) 01:15:04.26 ID:Jno143Es.net]
結局 >>770

2 / (1 / x + 1 / y)をdoubleで計算した値と倍長精度で計算したものをdouble相当に丸めたものが一致しない割合

この一行をわざわざ他の人に分かりにくい式で再度書いているだけのこと

繰り返しだし分かりにくいし
意味(doubleで計算した値と倍長精度で計算したものをdouble相当に丸めたものが一致しない割合)
が欠落している

そういうことに気づきな

795 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 01:17:27.13 ID:6h0Rpnv/.net]
多分ですけど、あなた以外はそこまでわかりにくい表現だとは感じていないのだと思いますよ

796 名前:253 mailto:sage [2020/10/28(水) 01:19:14.69 ID:Jno143Es.net]
まじかw
そしたら回答山盛りだ

お前もさんも回答よろしくな

797 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 01:20:24.09 ID:6h0Rpnv/.net]
>>752の意味するところが数学的に自明になればおのずと回答も付くでしょう

798 名前:253 mailto:sage [2020/10/28(水) 01:20:47.31 ID:Jno143Es.net]
蛇足だが、あの式で意味がわかった上で
まさか回答できなかったら、単なる無能だからな

799 名前:253 mailto:sage [2020/10/28(水) 01:27:14.39 ID:Jno143Es.net]
>>784
参考までにあなたは今までどのような回答を投稿されましたか?

800 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 01:29:09.84 ID:3yQQm3er.net]
>>771
> 面白い記号だなそれ。

で、結局面白い記号って何だったの?



801 名前:253 mailto:sage [2020/10/28(水) 01:30:24.94 ID:Jno143Es.net]
ふふ、それは
ヒ・ミ・ツ

802 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 01:43:43.54 ID:3yQQm3er.net]
教科書ないから高校数学 確率で一番上に出たやつ。
https://studysapuri.jp/contents/high/article/subject/sp/math00003.html

やっぱ高校の教科書に載ってたよなあww

仮に載ってなかったとして大学で使う書籍にもP載ってないって?w

> 俺が大学の頃まではこういう記法は見た記憶が無いんだけど

803 名前:253 mailto:sage [2020/10/28(水) 01:56:33.39 ID:Jno143Es.net]
ゆとり以降だなそりゃ

804 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 02:11:35.07 ID:d52OC3St.net]
恥の上塗りするくらいなら黙ってればいいのに

805 名前:253 mailto:sage [2020/10/28(水) 02:16:39.09 ID:FRCNqyyj.net]
じゃあ何か自慢の回答でもしてよ

806 名前:742 mailto:sage [2020/10/28(水) 05:10:48.17 ID:MEeLXnFm.net]
>>770
2/(1/x+1/y)

2*x*y/(x+y)
と変形した場合だと、36%位です(100万回試行してみた)。

807 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 06:02:02.77 ID:W3KKdO+Q.net]
>>752 C
https://ideone.com/iPEwg8
2 / (1 / x + 1 / y) のエラー率は 38.5%
2 * x * y / (x + y) のエラー率は 40.4%
と出た

808 名前:742 mailto:sage [2020/10/28(水) 12:23:39.00 ID:jim4KuYP.net]
>>794
h0の計算は、xdやxdをlong doubleにcastする感じで!
>double h0 = ( xl == 0. || yl == 0. ? 0. : 2. / (1.L / xd + 1.L / yd));

809 名前:742 mailto:sage [2020/10/28(水) 13:16:35.16 ID:jim4KuYP.net]
間違えました
double h0 = ( xd == 0. || yd == 0. ? 0. : 2. / (1.L / xd + 1.L / yd));

810 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 00:16:48.93 ID:GFOWX4AY.net]
お題:言語機能のみを使い単方向リストを実装しメソッドpush



811 名前:とpopを実装せよ
pushはリスト末尾にノードをプッシュし、popはリスト末尾からノードをポップする
ノードの持つ値は整数とする
[]
[ここ壊れてます]

812 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 00:52:01.80 ID:wtq/xrTf.net]
複数pushできるの?
popも個数指定できるの?一個ずつ?
pushの戻り値はリスト自身?入れた値?成否?

813 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 01:01:50.46 ID:GFOWX4AY.net]
>>797
>>798
pushもpopも値は1つずつ
pushの戻り値はなんでもいい

814 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 10:47:03.25 ID:jsAu6jIB.net]
>>797 js
入出力のサンプルケース書いてないやつ絶対自分はやってないだろ

class SinglyLinkedList {
push(value) {
this.head = { next: this.head, value }
}
pop() {
if (!this.head) return
this.head = this.head.next
}
str() {
let { head } = this, s = ""
while (head) {
s += head.value + ", "
head = head.next
}
return s
}
}

815 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 12:03:58.95 ID:GFOWX4AY.net]
>>800
なんで>>797,799の仕様でこんな実装になるんだ?
お題ちゃんと読んでる?

816 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 12:11:08.30 ID:moZIRBYC.net]
>>801
「言語機能のみを使い」は引っかかる表現だったけどそれのことかい?

817 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 12:16:22.08 ID:95aSRVZj.net]
オレもこの「言語機能のみを使い」がわからなかった
「ライブラリ関数使うな」か「文字列操作関数のみを使い」かどっちかかなと
わからんから様子見

818 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 12:18:16.67 ID:GFOWX4AY.net]
>>802
>>800
は787の仕様としてただしかったわ
すまんな
こっちのお題の定義があいまいすぎたらしい
言語機能は問題ない

819 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 12:21:59.18 ID:GFOWX4AY.net]
>>803
ライブラリ使うなって言いたかった
あとお題提出前の実装については>>800に比べるとかなり冗長な実装をしてある
ここに晒す気はないが

820 名前:デフォルトの名無しさん [2020/10/29(木) 12:33:09.26 ID:AOpu1Zek.net]
stdlib.h使わずに作るの?



821 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 12:36:05.93 ID:jsAu6jIB.net]
>>804
まあええわ
俺もclassは久々に使ったけどできれば使わずに実装したかったわ

822 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 12:50:57.59 ID:GFOWX4AY.net]
>>807
こっちの実装したコードに比べるとそっちのコードはえらくシンプルなんだよな
軽くショックだわ
>>801みたいな口きいてすまんかったな

823 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 13:24:14.72 ID:GFOWX4AY.net]
>>806
リスト以外の実装は自由の想定
stdio.hも使っておk

824 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 13:27:39.52 ID:GFOWX4AY.net]
>>806
C/C++などの言語はmallocなどを使っても良いことにする

825 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 15:09:10.20 ID:dNWGwdex.net]
Haskellみたいな純粋関数だとそもそも標準ライブラリだけだと“状態”を作るのも難しいんだよな
同じ表現は永遠に同じ答えを返すからスタックの“状態”を変化させるというのがそもそもできない
それをなんとかするのに“モナド”というのがあるんだけど状態を処理する“ステートモナド”は標準ライブラリではないんだよな
ほとんど“準標準”だけど

826 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 16:24:06.73 ID:95aSRVZj.net]
State モナドを“準標準”と認めてもらえるなら簡単
Haskell

import Control.Monad.State

pop :: State [a] a
pop = do
a <- get
modify tail
return $ head a

push :: a -> State [a] ()
push x = do
modify ((x :))
return ()

test = do
push 1
push 2
push 3
a <- pop
b <- pop
c <- pop
return ([a,b,c])

main = print $ evalState test []
---
出力
[3,2,1]

827 名前: mailto:sage [2020/10/29(木) 19:01:42.56 ID:7aED6VYA.net]
>>797
双方向リストの方が、後々いろいろ流用できてありがたいんですけど、それでも端方向リストでインプリしないといけないのですか?

828 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 19:02:59.18 ID:c1P6mcgH.net]
持て余すくらいなら「なるべく使わない」とか評価基準を示すだけにしとけばいいのに

829 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 19:32:46.09 ID:EQ9lcE/o.net]
>>803
全く同じこと思ってたわw

830 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 19:34:40.84 ID:EQ9lcE/o.net]
>>807
どうでもいいけどお前のIDもjsだsな



831 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 19:40:10.12 ID:Pf0NRL7D.net]
>>797 Brainfuck

push: <[>],
pop: <[>]<[-]<

832 名前:デフォルトの名無しさん [2020/10/29(木) 20:59:03.61 ID:zgfLAX1f.net]
>>797
push,popってリストじゃなくてスタックの機能じゃ?
リストにさせるなら、先頭に追加してく方が速くて楽なのに。
push xs a = a:xs
pop (x:xs) = (xs,x)
反転させたいなら最後の最後にすべきだよ。

Haskell

― 使用例用main関数
main = do pushlist <- (return.push (Cons 1 (Cons 2 Null))) 3
(poplst, popval) <- (return.pop) pushlist
print pushlist
print popval
print poplst

― ここからお題のコード(整数に限定じゃないとダメならdataのList a/Cons aのaをIntに)
data List a = Null | Cons a (List a) deriving (Show)

push xs a = xs +++ (Cons a Null)

pop xs = (myinit xs, mylast xs)

Null +++ ys = ys
(Cons x xs) +++ ys = Cons x (xs +++ ys)

myinit (Cons x Null) = Null
myinit (Cons x xs) = Cons x (myinit xs)

mylast (Cons x Null) = x
mylast (Cons _ xs) = mylast xs

833 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 21:10:47.05 ID:wtq/xrTf.net]
>>797 JavaScript
class List {
#data = []
push(n) {
this.#data = [n, this.#data]
return this
}
pop() {
const [head, tail] = this.#data
if (tail) this.#data = tail;
return head
}
toArray() { return this.#data.flat(Infinity) }
toString() { return String(this.toArray()) }
toJSON() { return this.toArray() }
}

const list = new List
list
.push(0)
.push(7)
.push(2)
console.log('文字列: ' + list) //=> 文字列: 2,7,0
console.log('JSON: ' + JSON.stringify(list))
//=> JSON: {"test":[2,7,0]}
list.pop() //=> 2
list.pop() //=> 7
list.pop() //=> 0
list.pop() //=> undefined

834 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 21:13:39.21 ID:wtq/xrTf.net]
うわ
console.log('JSON: ' + JSON.stringify({'test': list})) //=> JSON: {"test":[2,7,0]}
だった

835 名前:デフォルトの名無しさん [2020/10/29(木) 23:09:01.60 ID:MaNQDMIt.net]
>>813
お題
双方向リストをC89で実装してください

836 名前:253 mailto:sage [2020/10/29(木) 23:20:15.73 ID:UgpGZWA4.net]
>>817

837 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 23:24:39.19 ID:3o7XtB23.net]
>>797 ocaml
https://ideone.com/8ceFxk
type 'a _list = Nil | Cons of 'a * 'a _list
exception EmptyListException
let push xs x = Cons(x, xs)
let pop = function Nil -> raise EmptyListException | Cons (x, c) -> (x, c)
let rec each f = function Nil -> () | Cons (x, xs) -> f x; each f xs
let x, xs = pop (push (push (push Nil 1) 2) 3)
let () = print_int x; each print_int xs

838 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 23:26:08.36 ID:GFOWX4AY.net]
>>813
双方向書きたいってことなら書けば
お題は単方向だけど

839 名前:デフォルトの名無しさん mailto:sage [2020/10/30(金) 00:06:20.24 ID:aDtUVDPI.net]
>>812を改良?
State [Int] だとあらかじめ用意した一個のstackしか使えない
噂に聞いたことあつたST monadで複数のスタック使えるように改造
Haskell

import Control.Monad
import Control.Monad.ST
import Data.STRef

data Stack a = Empty | N { car :: a, cdr :: Stack a } deriving (Show)

push stk val = modifySTRef stk (N val)
pop stk = car <$> readSTRef stk <* modifySTRef stk cdr

main = print $ runST $

840 名前: do
sA <- newSTRef Empty
sB <- newSTRef Empty
push sA 'o' >> push sA 'o' >>push sA 'f'
push sB 'r' >> push sB 'a' >> push sB 'b'
a1<-pop sA
a2<-pop sA
a3<-pop sA
b1<-pop sB
b2<-pop sB
b3<-pop sB
return [a1,a2,a2,b1,b2,b3]
----
出力
"foobar"
[]
[ここ壊れてます]



841 名前:253 mailto:sage [2020/10/30(金) 00:07:47.66 ID:hMjmzAXb.net]
>>797 Perl5

公式マニュアルに書かれている通りsplice関数を使ってpush, popを記述できる。
 splice(@a,@a,0,$x); # push(@a, $x)
 splice(@a,-1);    # pop(@a)
なんだけどspliceを使わず言語のstatementだけでpush, pop関数を記述すると…こんな感じ

use v5.18;
use feature 'signatures';
no warnings "experimental::signatures";
sub Push($a, $x) {
 @$a = (@$a, $x);
}
sub Pop($a) {
 my @a = @$a;
 my $b = $a[-1];
 @$a = @a[0..$#a-1];
 $b;
}
my @s = (1,2,3); # test main
Push(\@s, 4);
say "@s";
my $y = Pop(\@s);
say $y;


実行結果
~ $ perl 18_787_push_pop.pl
1 2 3 4
4
1 2 3

842 名前:253 mailto:sage [2020/10/30(金) 00:09:56.81 ID:hMjmzAXb.net]
>>826
say $y;
の下に書いてあった最後の行
say "@s";
をコピペしそびれた…orz

843 名前:253 mailto:sage [2020/10/30(金) 00:22:38.86 ID:hMjmzAXb.net]
>>826 Pop関数はこっちの方がいいな、無駄なコピーもないし。

sub Pop($a) {
 my $b = @$a[-1];
 delete @$a[-1];
 $b;
}

844 名前:253 mailto:sage [2020/10/30(金) 00:32:51.98 ID:hMjmzAXb.net]
>>828 deleteは削除したスカラー値を返すわ。だから以下でいいんだ

sub Pop($a) {
 my $b = @$a[-1];
 delete @$a[-1];
}

845 名前:253 mailto:sage [2020/10/30(金) 00:34:30.90 ID:hMjmzAXb.net]
>>829 my $b = @$a[-1]; 不要だった…orz

sub Pop($a) {
 delete @$a[-1];
}

846 名前:デフォルトの名無しさん [2020/10/30(金) 00:50:28.84 ID:9RgBA+ge.net]
>>797
Java
https://paiza.io/projects/JKwjWCxSc6dHv_ItEaqwlQ

847 名前:デフォルトの名無しさん [2020/10/30(金) 02:22:50.19 ID:9RgBA+ge.net]
>>821
Java
https://paiza.io/projects/wtaAasQr_Nu5Zw2D1KoPwg

848 名前:デフォルトの名無しさん mailto:sage [2020/10/30(金) 07:07:30.18 ID:cChJ6BWU.net]
>>822
あ?

849 名前:デフォルトの名無しさん mailto:sage [2020/10/30(金) 23:30:40.86 ID:hYhF3+Ov.net]
Brainfuck読めないわ
覚えようかな

850 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 13:49:55.42 ID:QnYm1bfS.net]
お題
与えられた文字列を一文字ずつ見ていき"trick"と"treat"の5文字でどちらが先に揃うか判定してください(順序込み)
どちらもヒットしないときは考慮しなくていいです

treakOrTreat("trick or treat")
// => trick
treakOrTreat(". tr ick")
// => trick
treakOrTreat("ttrriecatk")
// => treat
treakOrTreat("tri kc eat")
// => treat
treakOrTreat("my money")
// => none



851 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 13:51:26.24 ID:QnYm1bfS.net]
>>835 js(self)
function treakOrTreat(text) {
const [tri] = /t.*r.*i.*c.*k/.exec(text) || []
const [tre] = /t.*r.*e.*a.*t/.exec(text) || []
if (!tri && !tre) return 'none'
if (!tri) return 'treat'
if (!tre) return 'trick'
return tri.length < tre.length ? "trick" : "treat"
}

852 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 14:54:50.69 ID:HHhQTZ6R.net]
関数名のミススペリングは修正していいですか

853 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 15:02:04.99 ID:QnYm1bfS.net]
ごっつtypoしてたすまんFIXME

854 名前:デフォルトの名無しさん [2020/10/31(土) 15:07:31.21 ID:DmLmDhBA.net]
>>835 Common Lisp
https://ideone.com/L8wigO

855 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 15:33:31.91 ID:I05R+wBh.net]
相変わらずキモいなあ、いつもの勝手に認定キッズ
ミュートにしてるという情報から相手が雑魚であるというぶっ飛んだ推論をする知性の欠片も持ち合わせない負け組

856 名前:デフォルトの名無しさん [2020/10/31(土) 15:36:09.16 ID:DmLmDhBA.net]
>>835 Common Lisp
https://ideone.com/qHuipq

>>839は無駄な条件判定(二つめの (null a))があったので修正

857 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 15:44:11.18 ID:pGrSKCPz.net]
>>835 JavaScript
function trickOrTreat(str = '') {
const trick = [...'trick']
const treat = [...'treat']
let result = 'none'
for (const c of str) {
if (c === trick[0]) trick.shift()
if (c === treat[0]) treat.shift()
if (!trick.length || !treat.length) {
result = trick.length ? 'treat' : 'trick'
break;
}
}
console.log(result)
}

858 名前:デフォルトの名無しさん [2020/10/31(土) 15:54:22.22 ID:i0S/O8KX.net]
>>797
C
https://paiza.io/projects/7O3xqQfCoYOhAz-48TxxWw

859 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 16:42:52.45 ID:B0ELcd4k.net]
>>835
Haskell

https://ideone.com/2Rb2sz

860 名前:デフォルトの名無しさん [2020/10/31(土) 17:10:35.46 ID:M62mfk9p.net]
>>797
Perl
https://paiza.io/projects/E1ha4EgvaVhalIRuJ_To-g



861 名前:デフォルトの名無しさん [2020/10/31(土) 17:42:14.32 ID:/zmNVLOW.net]
>>797
Kotlin
https://paiza.io/projects/mB7s1uC_4FJk1MFTDpLYsA

862 名前:デフォルトの名無しさん [2020/10/31(土) 21:33:28.24 ID:g64iH70d.net]
>>835
Java
https://paiza.io/projects/jCNOEenrSmdOMXo6Fl2wyQ

863 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 21:58:58.47 ID:t2sIU1o6.net]
>>835 Ruby
def trickOrTreat( str )
trick = str.match( /\A.*?t.*?r.*?i.*?c.*?k/ )
treat = str.match( /\A.*?t.*?r.*?e.*?a.*?t/ )
return 'none' unless trick or treat
return 'trick' unless treat
return 'treat' unless trick
return (trick[0].size < treat[0].size)? 'trick' : 'treat'
end

[ "trick or treat", ". tr ick", "ttrriecatk", "tri kc eat", "my money",
"treat or trick", "treat or trick t",
].each{|s|
puts trickOrTreat( s )
}

864 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 22:19:45.63 ID:B0ELcd4k.net]
>>844
改定
やはりHaskellerがこのお題でparsec使わないのはダメという事で

Haskell

import Text.ParserCombinators.Parsec

makeP cs = foldl1 (<>) $ map (\c -> (many $ noneOf [c]) <> (return <$> anyChar) ) cs :: Parser String

first xs ys = case (runParser (makeP xs) () "" ys) of
Left _ -> (1, 0)
Right x -> (0, length x)

trickOrTreat x = case compare (first "trick" x) (first "treat" x) of
LT -> "trick"
GT -> "treat"
otherwise -> "Happy Halloween"

main = do
mapM_ (print.trickOrTreat) ["trick or treat", ". tr ick","ttrriecatk","tri kc eat","my money"]

865 名前:デフォルトの名無しさん [2020/10/31(土) 22:49:38.34 ID:pe+8/Oyn.net]
>>835
C

#include<stdio.h>

char* trickOrTreat(char*s, char*tk, char*tt){
if(!*tk)return "trick";
if(!*tt)return "treat";
if(!*s) return "none";

if(*s == *tk)tk++;
if(*s == *tt)tt++;

return trickOrTreat(s+1, tk, tt);
}

int main(void){
char* str[] = {"trick or treat", ". tr ick", "ttrriecatk", "tri kc eat", "my money",
"treat or trick", "treat or trick t",};
const int size = sizeof(str)/sizeof(str[0]);

char tk[] = "trick";
char tt[] = "treat";

int i;
for(i=0; i<size; i++){
printf("%s\n", trickOrTreat(str[i], tk, tt));
}

return 0;
}

866 名前:253 mailto:sage [2020/10/31(土) 22:58:55.98 ID:i+h07tFB.net]
>>835 Perl5

for (<DATA>) {
 chomp;
 %h = map{$_ => [split'']} qw{trick treat};
 $k = 'none';
 for $c (split'') {
  for (keys %h) {
   $r = $h{$_};
   shift(@$r) if $c eq $$r[0];
   unless (@$r) { $k = $_; goto L }
  }
 }
L: print "$_ -> $k\n";
}
__DATA__
trick or treat
. tr ick
ttrriecatk
tri kc eat
my money

実行結果
~ $ perl 18_825_trickOrTreat.pl
trick or treat -> trick
. tr ick -> trick
ttrriecatk -> treat
tri kc eat -> treat
my money -> none

867 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 23:10:35.06 ID:8FYB/kmH.net]
>>851
なんでお前ずっとコテハンつけてんの?

868 名前:253 mailto:sage [2020/10/31(土) 23:20:38.29 ID:i+h07tFB.net]
>>852 IPアドレスがたまに変わるのと自分のレスを見分けやすくするため。固定ではなく番号はたまに変えてる
気にしないで

869 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 23:26:17.77 ID:OVAIfmUR.net]
>>797 c
https://ideone.com/9grZQe

870 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 23:27:34.12 ID:wd4K8eMC.net]
>>853
専ブラ使えばいいのに



871 名前:253 mailto:sage [2020/10/31(土) 23:32:26.70 ID:i+h07tFB.net]
>>855
IPアドレスが変わったり日にちがたった自分のレスを簡単に表示し分けられる専ブラで良いのある?
出来ればLinuxで。ちなStyleは好みではない

872 名前:253 mailto:sage [2020/10/31(土) 23:38:27.89 ID:i+h07tFB.net]
>>854
教科書に載っているようなきれいなコード書くね

873 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 23:54:01.35 ID:OVAIfmUR.net]
>>857
サンクスコ

でも、引数の評価順については正直お行儀悪いんで
勉強してるみんなはそのへん各自ぐぐってみてね

874 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 00:59:27.52 ID:KABEK1ar.net]
>>835
Ruby

text = <<'TEXT'
trick or treat
. tr ick
ttrriecatk
tri kc eat
my money
TEXT

# 配列化
Trick = "trick".chars
Treat = "treat".chars

次へ続く

875 名前:849 mailto:sage [2020/11/01(日) 01:00:32.73 ID:KABEK1ar.net]
>>859
の続き

def find_index( str, original )
idx_2 = 0

str.each_char.with_index do |char, idx| # 1文字ずつ処理する
idx_2 += 1 if char == original[ idx_2 ]
return idx if idx_2 == original.length # すべての文字が一致
end
nil
end

results = text.each_line.map do |line|
trick = find_index( line, Trick )
treat = find_index( line, Treat )

if !( trick || treat ) then "none"
elsif !trick then "treat"
elsif !treat then "trick"
elsif trick < treat then "trick"
elsif trick > treat then "treat"
else "same"
end
end

p results
#=> ["trick", "trick", "treat", "treat", "none"]

876 名前:デフォルトの名無しさん [2020/11/01(日) 01:29:12.30 ID:17LNcGyj.net]
>>835
Kotlin
https://paiza.io/projects/pLXGwy1V_3FlM4eqH2w5tg

877 名前:デフォルトの名無しさん [2020/11/01(日) 01:49:31.61 ID:17LNcGyj.net]
>>835
C
https://paiza.io/projects/hjm6unXa-mcUi6cx1mTJ9g

878 名前:838 mailto:sage [2020/11/01(日) 12:58:01.92 ID:g/v4ZA9S.net]
>>835 Ruby
正規表現を捨てて index+inject に
def trickOrTreat( str )
trick = 'trick'.chars.inject(-1){|r,ch| break r unless r = str.index( ch, r+1 ); r }
treat = 'treat'.chars.inject(-1){|r,ch| break r unless r = str.index( ch, r+1 ); r }
return 'none' unless trick or treat
return 'trick' unless treat
return 'treat' unless trick
return (trick < treat)? 'trick' : 'treat'
end

[ "trick or treat", ". tr ick", "ttrriecatk", "tri kc eat", "my money",
"treat or trick", "treat or trick t",
].each{|s|
puts trickOrTreat( s )
}

879 名前:蟻人間 mailto:sage [2020/11/01(日) 14:40:36.23 ID:wOVD56Lv.net]
お題:大阪都構想が実現すると、現在の大阪市は消滅すると予想される。都構想実現前の住所を実現後の住所に変換しなさい。

880 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 16:05:05.76 ID:+nQAPqAx.net]
次行ってみよう



881 名前:蟻人間 mailto:sage [2020/11/01(日) 16:41:27.74 ID:wOVD56Lv.net]
参考:https://www.asahi.com/articles/ASNBS733ZNBMPTIL00Q.html

882 名前:蟻人間 mailto:sage [2020/11/01(日) 16:44:49.88 ID:wOVD56Lv.net]
これも:https://maidonanews.jp/article/13879682

883 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 16:51:14.83 ID:VQGUeFT5.net]
お前らは競技プログラミングとかやってる?

884 名前:253 mailto:sage [2020/11/01(日) 16:54:48.84 ID:I8lyxV1q.net]
>>868
やろうとしたことはあるがまだ未経験
何か受験勉強みたいになっちゃってるコンテストには魅力を感じない
でも世界トップレベルは年間4000万くらい賞金稼ぐとい話をきいてそういうのにはちょっと惹かれる

885 名前:蟻人間 mailto:sage [2020/11/01(日) 17:00:25.77 ID:wOVD56Lv.net]
>>865
あんまりバカにするなよ。住所変換できないと大坂大混乱になるよ。

886 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 17:18:29.18 ID:EgIfcLXC.net]
バカにしてるのはおまえ
他所の住所変更地の状況知らんのか?50年前の住所でも年賀届くわ
数年〜十数年或いはそれ以上旧住所で配送可能。舐めすぎ

887 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 17:31:11.77 ID:+nQAPqAx.net]
>>870
ここでそのお題といても大混乱が回避できるわけでもなし
そういう問題じゃなくてそろそろ自分にいい問題作るセンスがない事自覚すべき

888 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 17:35:33.69 ID:S9fsJ+JS.net]
データ引っ張ってくるだけじゃん
ただの知識問題は悪問

889 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 18:32:31.31 ID:erpRcPg0.net]
やってみたが
競技系はプログラミングのスキル向上には役立たんよ

890 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 18:50:53.93 ID:4+fLUvoM.net]
>>867
このサイト気持ち悪いな



891 名前:蟻人間 mailto:sage [2020/11/01(日) 19:52:59.24 ID:wOVD56Lv.net]
>>875
太陽風を読めよ。

892 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 19:57:24.03 ID:wWMHVvTS.net]
>>876
消えろ

893 名前:蟻人間 mailto:sage [2020/11/01(日) 20:04:08.68 ID:wOVD56Lv.net]
>>877
お前がえろ

894 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 00:22:13.64 ID:bEILeQs7.net]
>>835 octave
https://ideone.com/BkciwT

895 名前:デフォルトの名無しさん [2020/11/02(月) 04:28:03.49 ID:2/AbCXtL.net]
>>835
Perl
https://paiza.io/projects/Ol_sOAbb2ZYW4hIDFLj2wQ

正規表現使ってみました。

896 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 04:45:05.89 ID:BfD57ecO.net]
"trick"と"treat"を受理するオートマトンを作って
入力文字列から1文字ずつ与えて状態遷移(または待機)させていく
末尾まで先に受理されたほうを答えとする
みたいなことだけ考えた

897 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 04:48:28.19 ID:BfD57ecO.net]
けど実装すると無駄にでかくなりそう

898 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 10:04:22.80 ID:/BOVDIIM.net]
オートマトンって言語でなんか表現できる構造ある?

899 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 10:41:03.91 ID:5JhQS2vf.net]
正規表現で表現できる⇔オートマトンで受理できる
でしょ?
今回なら入力xに対し出力がtrickである場合を

[^t]*t[^r]*r[^ie]*i[^ce]*c[^ke]*k.*
|[^t]*t[^r]*r[^ie]*i[^ce]*c[^ke]*e[^ka]*k.*
...
(10パターン)
....

と正規表現だけで表現できてしまう

900 名前:蟻人間 mailto:sage [2020/11/02(月) 12:23:25.05 ID:iXWhExA8.net]
お題:パラボラアンテナが理論上の焦点に電波を集めることを示しなさい。

パラボラアンテナの半径を100とし、原点を中心にx軸上に焦点が来るように配置する。x軸と平行に電波がアンテナに入ってきて、入射角と反射角が等しくなるように電波が反射する。
このとき、どの場所で反射しても、反射した電波を表す直線が理論上の焦点に十分近づくことを示せ。



901 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 12:23:58.15 ID:UfGVYnOo.net]
まじでセンスないな

902 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 12:36:09.22 ID:zo3ZJgwO.net]
パラボラアンテナの半径ってどこのことだよ

903 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 13:43:55.18 ID:gftnEWfN.net]
common lisp
https://ideone.com/GZ8Wbt
うーん微妙

904 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 14:26:45.62 ID:vIueiXdU.net]
>>835 .bat
@echo off &setlocal enabledelayedexpansion
if "%~1"=="" echo none&exit /b
set "STR=%~1"
set TRICK=trick
set TREAT=treat
set /a n=0, k=0, t=0
:WHILE
if /i "!STR:~%n%,1!"=="!TRICK:~%k%,1!" if %k% LSS 4 ( set /a k+=1 ) else echo trick&exit /b
if /i "!STR:~%n%,1!"=="!TREAT:~%t%,1!" if %t% LSS 4 ( set /a t+=1 ) else echo treat&exit /b
set /a n+=1
if not "!STR:~%n%,1!"=="" goto :WHILE
echo none&exit /b

905 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 18:10:30.68 ID:Ac4tp6ZL.net]
>>835
Haskell
https://ideone.com/wg9JbO

iimport Text.ParserCombinators.Parsec

makeP = mconcat . map ( manyTill anyChar . char )

lastInd x s = case ( runParser ( makeP x ) () "" s ) of
Left _ -> ( [ 2, 0 ] , x )
Right y -> ( [ 0, length $ x ++ y ], x )

trickOrTreat x = snd $ minimum [
lastInd "trick" x,
lastInd "treat" x,
( [1,0], "Happy Halloween" ) ]

main = mapM_ ( print . trickOrTreat ) [
"trick or treat",
". tr ick",
"ttrriecatk",
"tri kc eat",
"my money" ]

906 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 19:01:54.49 ID:hORytTpS.net]
>>835
#include <stdio.h>
#include <string.h>

static void
tot (char *p)
{
int i = 0, j = 0;
if ((p = strchr (p, 't')) && (p = strchr (p + 1, 'r')))
while (*++p && !(*p == "ick"[i] && ++i == 3) && !(*p == "eat"[j] && ++j == 3)) ;
printf ("%s\n", (i == 3) ? "trick" : ((j == 3) ? "treat" : "none"));
}

int
main ()
{
tot ("trick or treat");
tot (". tr ick");
tot ("ttrriecatk");
tot ("tri kc eat");
tot ("my money");
}

907 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 19:55:30.38 ID:0Q72CsT7.net]
お題
アスペクト比X:Y、L[inch]のディスプレイの
幅Wと高さHをcm単位でそれぞれ求めよ

[入力]
X Y L

[出力]
W H ※cm単位で小数第1位まで出力

[例]
16 9 40
=> 88.6 49.8

64 27 29
=> 67.9 28.6

3 4 10.2
=> 15.5 20.7

908 名前:869 mailto:sage [2020/11/02(月) 20:41:57.79 ID:PEXljxha.net]
>>835 octave
https://ideone.com/TknUHT
・残り文字数数える関数fがガバガバだったので修正

909 名前:デフォルトの名無しさん [2020/11/02(月) 20:50:30.27 ID:LqVECFSh.net]
>>892
Java
https://paiza.io/projects/k8RErATdGPNrkP2gRrOmSw

910 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 20:55:38.75 ID:UfGVYnOo.net]
>>892
実用的じゃん



911 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 21:39:44.31 ID:PEXljxha.net]
>>892 octave
https://ideone.com/un3EHy

912 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 22:00:22.68 ID:PEXljxha.net]
>>892 octave
https://ideone.com/kETWpz
・若干の変更

913 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 22:02:25.78 ID:i1cL0pVh.net]
>>885
消えろ

914 名前:デフォルトの名無しさん [2020/11/02(月) 22:12:37.48 ID:2/AbCXtL.net]
>>892
Perl
https://paiza.io/projects/3i_gH0-CGf93OpsUWJzFVg

915 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 23:19:41.46 ID:ZpVsHyOp.net]
>>892 JavaScript
const f=(x, y, l) => [x, y].map(i => (i * 2.54 * l / Math.sqrt(x ** 2 + y ** 2)).toFixed(1))
console.log(...f(16, 9, 40))
console.log(...f(64, 27, 29))
console.log(...f(3, 4, 10.2))

916 名前:デフォルトの名無しさん mailto:sage [2020/11/03(火) 00:18:12.81 ID:1BjkDVvF.net]
>>892

Hadkell

cmpin =2.54
r10 = (/10).fromInteger.round.(*10)
toWH (x, y, sz) = let
arg = atan2 y x
diag = sz * cmpin
in ( r10 $ (cos arg) * diag , r10 $ (sin arg) * diag )

main = mapM_ ( print . toWH) [
(16, 9, 40),
(64,27,29),
(3,4, 10.2) ]

917 名前:デフォルトの名無しさん mailto:sage [2020/11/03(火) 01:33:31.56 ID:psuX0FGw.net]
お題
{1,2,3,4,5,6,7,8}
を幾つかの共通部分を持たない空でない集合にわけるやり方を完全列挙
例えば
{1,6}+{2,8}+{3,4,5,7}

{2,8}+{1,6}+{3,4,5,7}
は同じやり方になるので二重カウントしないこと

918 名前:デフォルトの名無しさん mailto:sage [2020/11/03(火) 02:32:26.13 ID:yN+x511c.net]
>>902
[1..8]は流石にtoo large
haskell

import Data.List

parts [] = [ [ ] ]
parts [x] = [ [ [x] ] ]
parts ( x : xs ) = [ (x : ys) : zs |
ys <- subsequences xs,
zs <- parts $ xs \\ ys ]

main = do
print $ parts [2,3]
print $ parts [1,2,3]
print $ length $ parts [1..8]
----
[[[2],[3]],[[2,3]]]
[[[1],[2],[3]],[[1],[2,3]],[[1,2],[3]],[[1,3],[2]],[[1,2,3]]]
4140

919 名前:デフォルトの名無しさん mailto:sage [2020/11/03(火) 08:10:12.54 ID:WKYb8LN0.net]
>>903
きれいだな

920 名前:デフォルトの名無しさん mailto:sage [2020/11/03(火) 09:07:39.02 ID:psuX0FGw.net]
A:={1,2,3,4,5,6,7,8};
A_1:={A};
A_2:={ {a,b} \subset 2^A | a+b=A,~a+~b=A };
A_3:={ {a,b,c} \subset 2^A | a+b+c=A,~a+~b+~c=A };
A_4:={ {a,b,c,d} \subset 2^A | a+b+c+d=A,~a+~b+~c+~d=A };
A_5:={ {a,b,c,d,e} \subset 2^A | a+b+c+d+e=A,~a+~b+~c+~d+~e=A };
A_6:={ {a,b,c,d,e,f} \subset 2^A | a+b+c+d+e+f=A,~a+~b+~c+~d+~e+~f=A };
A_7:={ {a,b,c,d,e,f,g} \subset 2^A | a+b+c+d+e+f+g=A,~a+~b+~c+~d+~e+~f+~g=A };
A_8:={ {a,b,c,d,e,f,g,h} \subset 2^A| a+b+c+d+e+f+g+h=A,~a+~b+~c+~d+~e+~f+~g+~h=A};
B:=A_1+A_2+A_3+A_4+A_5+A_6+A_7+A_8;
count[expand B];

1:{{1},{2},{3},{4},{5},{6},{7},{8}}
2:{{1},{2},{3},{4},{5},{6},{7,8}}
3:{{1},{2},{3},{4},{5},{7},{6,8}}
4:{{1},{2},{3},{4},{5},{8},{6,7}}
5:{{1},{2},{3},{4},{5},{6,7,8}}
6:{{1},{2},{3},{4},{6},{7},{5,8}}
7:{{1},{2},{3},{4},{6},{8},{5,7}}
8:{{1},{2},{3},{4},{6},{5,7,8}}
9:{{1},{2},{3},{4},{5,6},{7,8}}
10:{{1},{2},{3},{4},{7},{8},{5,6}}
11:{{1},{2},{3},{4},{7},{5,6,8}}
12:{{1},{2},{3},{4},{5,7},{6,8}}
...中略....
4135:{{2,7,8},{1,3,4,5,6}}
4136:{{3,7,8},{1,2,4,5,6}}
4137:{{4,7,8},{1,2,3,5,6}}
4138:{{5,7,8},{1,2,3,4,6}}
4139:{{6,7,8},{1,2,3,4,5}}
4140:{{1,2,3,4,5,6,7,8}}



921 名前:デフォルトの名無しさん mailto:sage [2020/11/03(火) 09:10:16.73 ID:psuX0FGw.net]
美しさだけなら某集合論用処理系に勝る
ものはないと思うが....
>>901の短時間回答能力とHaskelの潜在能力は
驚嘆すべきかも

922 名前:デフォルトの名無しさん mailto:sage [2020/11/03(火) 09:15:47.91 ID:psuX0FGw.net]
間違ってたときのコード貼ってしまったw
~a+~b=A
とかは要らなかったw
a+b=A
とかだけでよかった
a \cup bが普通の和集合ね。

923 名前:デフォルトの名無しさん mailto:sage [2020/11/03(火) 21:04:35.96 ID:eC8ouzxK.net]
>>892 bat
:: 引数は整数限定。結果は少数第2位を四捨五入。0〜0.04の時のみ少数第2位まで表示
:: 少し大き目の値を与えるとoverflow
@echo off &setlocal enabledelayedexpansion
set /a "x=%1*100, y=%2*100, z=0, d=%3*254, s=x*x+y*y, a=s>>1"
:WHILE
if %a% NEQ %z% set /a "z=a, a=(a+s/a)>>1" &goto :WHILE
set /a w=x*d/a, h=y*d/a
for %%G in (w h) do (
if !%%G:~-1! GEQ 5 set /a %%G+=10
if !%%G! GEQ 100 ( set %%G=!%%G:~0,-2!.!%%G:~-2,1!
) else if !%%G! GEQ 10 ( set %%G=0.!%%G:~-2,1!
) else if !%%G! GEQ 1 ( set %%G=0.0!%%G!
) else if !%%G! EQU 0 ( set %%G=0.00
) else echo ERROR: %%G=!%%G!
)
echo=%w% %h%

924 名前:デフォルトの名無しさん [2020/11/04(水) 00:20:20.72 ID:rxWDSDf0.net]
>>892 Lua
function f(x, y, l)
local a =2.54 * l / (x * x + y * y)^0.5
return x * a , y * a
end
print(string.format("%.1f , %.1f", f(16, 9, 40)))
実行結果
88.6 , 49.8

925 名前:デフォルトの名無しさん mailto:sage [2020/11/04(水) 00:20:22.20 ID:kNuSoIVx.net]
windows知らんけど
バッチ・ファイルすげぇなww

926 名前:デフォルトの名無しさん mailto:sage [2020/11/04(水) 18:59:14.79 ID:M+x6liG8u]
【アフィリエイト】ブログで「月100万円稼ぐ方法」を初心者向けにプロブロガーが解説
https://www.youtube.com/watch?v=tnp0oUbg2uc
【実例有り】ブログで月1万円稼ぐまでの具体的な道筋を教える【プロが解説】
https://www.youtube.com/watch?v=S-pk5AmW3g8
【案件も公開】ブログで月20万円稼ぐ方法の全て。具体的な道筋や戦略も全て公開【雑記でもいけた】
https://www.youtube.com/watch?v=Jiujwjhe300
ブログ収益が大きく伸びた、たった1つのきっかけを話す【ネタバレ:人と会う】
https://www.youtube.com/watch?v=r5cutrq6GO4
ブログで稼ぐ仕組み徹底解説】初心者にもやさしく、丁寧に説明
https://www.youtube.com/watch?v=n4qF7xpL7-M
【ミスるとヤバい】特化ブログと雑記ブログ、どっちがいいの?おすすめの運営方法も解説!
https://www.youtube.com/watch?v=sh2v5Uqlo1M
【危険】ブログで稼げずに「挫折」してしまう人の特徴【初心者は特に注意】
https://www.youtube.com/watch?v=W86zHTngRLE

927 名前:デフォルトの名無しさん mailto:sage [2020/11/04(水) 20:24:03.31 ID:uO47xEs9.net]
>>902 Ruby
https://ideone.com/uEqDoX

928 名前:デフォルトの名無しさん mailto:sage [2020/11/05(木) 03:19:19.40 ID:EuRO0zRP.net]
>>902
C++
https://ideone.com/YmUte9

929 名前:デフォルトの名無しさん mailto:sage [2020/11/05(木) 20:02:28.58 ID:pDv0veJc.net]
お題
'□'(正方形)と'_'(空白)で表される図形を45度回

930 名前:転して描画せよ。

[例1]


/\
\/


[例2]
___□
□□_□
_□□□

/\
\/\
/\/ /\
\/\/\/
 \/\/
  \/
[]
[ここ壊れてます]



931 名前:デフォルトの名無しさん mailto:sage [2020/11/05(木) 20:47:59.87 ID:uObXfCng.net]
デカくなっててワロタ
良さげなお題

932 名前:デフォルトの名無しさん mailto:sage [2020/11/05(木) 23:31:16.69 ID:5bWXoO+B.net]
>>914 html
<textarea style="transform:rotate(45deg)">
___□
□□_□
_□□□
</textarea>

933 名前:デフォルトの名無しさん mailto:sage [2020/11/05(木) 23:39:12.30 ID:W9kenpkY.net]
>>916
すげぇな
今はCSSでこんなことまでできるのか

934 名前:デフォルトの名無しさん mailto:sage [2020/11/05(木) 23:40:00.35 ID:uObXfCng.net]
:scale(2)もしとけ

935 名前:デフォルトの名無しさん mailto:sage [2020/11/06(金) 01:21:28.35 ID:DUBJiW5Z.net]
>>914
haskell
https://ideone.com/VwHiJD

936 名前:デフォルトの名無しさん [2020/11/06(金) 03:01:56.79 ID:2mWV4tVe.net]
>>902
Java
https://paiza.io/projects/zGMV5xqRPjP1fxjo1Zu1Nw

937 名前:253 mailto:sage [2020/11/06(金) 13:23:23.40 ID:1EHNC/LO.net]
>>902 Perl5

use feature qw{current_sub say};
use Data::Dump 'dump';
@a = sub{
 my $l = pop;
 @_ ? ( map{
  sub{
   map{
    sub{
     sub{
      push @{$_[$_]}, $l;
      [@_]
     }->(map{[@$_]} @_);
    }->(@_)
   } 0..@_
  }->(@$_)
 } __SUB__->(@_) ) : [[$l]];
}->(1..8);
say dump @a;
say scalar @a;

実行結果
~ $ perl 18_892.pl
(
[[1 .. 8]],
[[1 .. 7], [8]],
… 中略
[[1], [2], [3], [4], [5], [6], [7, 8]],
[[1], [2], [3], [4], [5], [6], [7], [8]],
)
4140

938 名前:デフォルトの名無しさん mailto:sage [2020/11/06(金) 13:24:39.43 ID:DUBJiW5Z.net]
>>914
haskell
素直に内包表記使ったVer.
https://ideone.com/gA63Fi

939 名前:デフォルトの名無しさん [2020/11/07(土) 15:16:17.29 ID:dGj5mxP2.net]
sed 's/□/◇/g'

あ、いや、なんでもないです。忘れてください。

940 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 15:50:17.56 ID:0+q2MsjY.net]
>>914 bat
@echo off &setlocal enabledelayedexpansion
if "%~1"=="" set "this=%~0" &"%~0" "□"
set /a n=0, Hmax=0
:GET_ARG
set "arg%n%=%~1"
set "arg%n%=!arg%n%:_=0 !"
set "arg%n%=!arg%n%:□=1 !"
shift
if not "%~1"=="" set /a n+=1 &goto :GET_ARG
for /L %%i in (0,1,%n%) do ( set h=0
for %%b in (!arg%%i!) do set /a a[%%i;!h!]=%%b, h+=1
if !h! GTR !Hmax! set /a Hmax=h
)
set /a t=n+Hmax, Hmax-=1
for /L %%a in (0,1,%t%) do for /L %%b in (0,1,%t%) do set R[%%a;%%b]=0
for /L %%a in (0,1,%n%) do for /L %%b in (0,1,%Hmax%) do (
set /a A=%%a+%%b, B=a+1, C=n+%%b-%%a, D=c+1
set /a "R[!A!;!C!]|=a[%%a;%%b], R[!A!;!D!]|=a[%%a;%%b], R[!B!;!C!]|=a[%%a;%%b], R[!B!;!D!]|=a[%%a;%%b]"
REM orをxorに替えればアウトライン表示
)
:: for /L %%A in (0,1,%t%) do (for /L %%B in (0,1,%t%) do set "P%%A=!P%%A!!R[%%A;%%B]!") &echo !P%%A!
for /L %%A in (0,1,%t%) do (
for /L %%B in (0,1,%t%) do (
set /a "M=%%A+%%B, M%%=2"
if "!R[%%A;%%B]!"=="0" (set "S%%A=!S%%A! ") else if "!M!"=="0" (set "S%%A=!S%%A!/") else set "S%%A=!S%%A!\"
)
echo=!S%%A!
)
endlocal
if not "%~0"=="_□□□" "%this%" "___□" "□□_□" "_□□□"
pause &exit /b



941 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 19:47:28.12 ID:/E6xY+R5.net]
バッチでやるとかいい根性してる

942 名前:デフォルトの名無しさん [2020/11/07(土) 21:06:37.63 ID:anINQjB0.net]
>>914 Common Lisp
https://ideone.com/CMyiD0

943 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 22:21:52.44 ID:alCltY04.net]
>>918
scale(1.41421356)でしょ

944 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 23:04:28.88 ID:zLEnd997.net]
>>902
ビット操作で直接作れた
https://paiza.io/projects/JwD_YC7dX2RRZz8G9ydnaA

945 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 00:05:04.78 ID:DLA7KrcO.net]
>>924
バッチファイル兄貴いいぞ
もっとやれ

946 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 00:15:55.29 ID:ct8WHwWl.net]
バッチよくやってるな
batにトランスパイルできるもっといい感じの構文の言語とかないの

947 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 02:24:23.73 ID:vLTv8mzL.net]
バッチで>>902やる猛者はいないのか?
QZならできそうだがだんまりか?

948 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 02:34:25.46 ID:HKu5GaPi.net]
>>928
このコードZen2までのAMDのCPUだと多分とんでもなく遅くなる
ここで使ってるpdep命令がintelのやZen3と比べて100倍以上遅いから

949 名前: mailto:sage [2020/11/08(日) 03:02:51.65 ID:H3a4zXqH.net]
>>931
私は C しか書けません

950 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 03:56:26.07 ID:YnyAcD/m.net]
>>930
こんなのならあった
https://github.com/imachug/BatchBuilder

moduleサポート:
export say_hello
echo Hello, %1!
end export
でエクスポート
import say_hello Takashi
でインポート(というかecho Hello, Takashi!に置き換わる)

値返却 (return) サポート:
export ask q
set /p result=%q%?
return %result%
end export

export delete_dir
import -> agree ask "Delete %1"
if "%agree%" == "yes" (
rmdir /S /Q %1
)
end export

globalキーワード:
module内の変数はデフォでlocal。
global変数にしたいときはglobalキーワードを使う。
global my_var=hogehoge



951 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 03:57:27.82 ID:YnyAcD/m.net]
>>934 の続き

再帰サポートのための2つのディレクティブ:
@safe_recursion
@follow_local

クラスとオブジェクト:
クラス作成
class ClassTest
export say_hello
echo Hello, %1!
end export
export say_bye
echo Bye, %1!
end export
end class

オブジェクト生成
new -> my_class ClassTest

メソッド呼び出し
import %my_class%.say_hello Takashi
import %my_class%.say_bye Takashi

他、クラスフィールドやマジックメソッドなど

952 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 04:20:05.05 ID:YnyAcD/m.net]
>>930
もうひとつ。
https://github.com/kerrgavin/Transpiler-DSL-to-Windows-Batch-Script

>>934 がbatの拡張といったおもむきなのに対して、こちらは専用DSLからのトランスパイラ。Python製。

二値の平均:
avg(arg1, arg2, average)
fun avg {
num a = larg1 + larg2
num a = a/2
"echo" a
}
以下にトランスパイルされる
@echo off
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
call :avg %1,%2,%average%
@EXIT /B 0
:avg
set /a a=%~1 + %~2
set /a a=%a% / 2
echo %a%
EXIT /B 0

0から9999まで表示:
for (num i = 0;i < 10000;i+1){
"echo" i
}
トランスパイル結果略

953 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 05:03:48.08 ID:YnyAcD/m.net]
>>930
シェルスクリプトからの変換系:
https://github.com/daniel-sc/bash-shell-to-bat-converter
https://github.com/sagiegurari/shell2batch

あと専用言語からのトランスパイル系でもうひとつ凄いのがあった。
https://github.com/batsh-dev-team/Batsh
タイプ的には >>936 と同じような感じなんだけどbatにもシェルスクリプトにもコンパイルできる。
こっちは凄いねスター4,000超えてるわ。
なんでこれが最初に見つからんのや…
プレイグラウンド( https://batsh.org/ )もあってサンプルロード・コンパイルもできるから試してみて。
文法はオーソドックスなC系ですね。

954 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 05:16:53.07 ID:YnyAcD/m.net]
>>937
moongiftに紹介記事があった。
https://www.moongift.jp/2019/08/batsh-bashbatchのスクリプトを生成するプログラミング言語/
…そしてアドレスバー見たら既にお気に入りに登録されていた…

955 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 08:18:54.23 ID:ct8WHwWl.net]
>>937
これきれいだな

956 名前:デフォルトの名無しさん mailto:sage [2020/11/09(月) 23:19:00.95 ID:biYC5NlX.net]
もうすぐポッキーの日
[お題] 人口合計でオール1

URLのページに都道府県別の人口が載っている。
 今回使用するのは、2019/10のデータ
 https://ideone.com/R4PCiQ

 同じ県は一回のみで、異なる県を何県でも選んでよい。
 (つまり選び方は全部で 2^47 種類)
 人口合計が"1"のみの数字となる選び方は何種類あるか?
 (実質、1111万1111人, 1億1111万1111人になる選び方)

※一発正解問題、実行時間3秒程度。
 同ページの他の年月人口でも計算できる程度のクオリティでok
※ちなみに 2015/10データだと916(40+876)種類だった。

957 名前:デフォルトの名無しさん mailto:sage [2020/11/09(月) 23:52:24.94 ID:XExSNiE1.net]
11111111 は43?
111111111はオンラインコンパイラでタイムアウトorz

958 名前:デフォルトの名無しさん mailto:sage [2020/11/10(火) 00:38:20.57 ID:duQVrAg3.net]
面白そうなお題

959 名前:デフォルトの名無しさん mailto:sage [2020/11/10(火) 00:38:46.30 ID:qJS2/p90.net]
111111111 は650かな?

960 名前:デフォルトの名無しさん mailto:sage [2020/11/10(火) 00:45:23.62 ID:qJS2/p90.net]
とりあえず
Haskell

spp19 = (小さいもの順に並べた元データ)

findSum :: Int -> [Int] -> Int
findSum x ys = case ys of
[] -> 0
( z : zs ) | z > x -> 0
( z : zs ) | z == x -> 1
( z : zs ) | otherwise ->
( findSum x zs )
+ ( findSum ( x - z ) zs )

main = do
print $ findSum 15105031 spp19
print $ findSum 11111111 spp19

----
650
43



961 名前:デフォルトの名無しさん mailto:sage [2020/11/10(火) 02:25:54.45 ID:903MPdZb.net]
batコーイ!!

962 名前:デフォルトの名無しさん mailto:sage [2020/11/10(火) 02:49:15.00 ID:VuEsWlWs.net]
>>940
https://ideone.com/8nuT5d
力任せなコードだけどどうにか時間内に終わった

963 名前:デフォルトの名無しさん [2020/11/10(火) 13:44:24.83 ID:3xGJBleZ.net]
典型的なdp問題じゃねえの

964 名前:929 mailto:sage [2020/11/10(火) 17:29:30.75 ID:q5cN/btj.net]
>>940

・想定解はDPの数え上げ
 さすがに1.1億×47は苦しいので、
 1.1億に関しては、(全人口 - 1.1億)で計算する。
 そうすれば、1600万×47の計算量で済む。
 
 https://ideone.com/R4PCiQ
  下にpython(numpy)で想定解追加

965 名前:253 mailto:sage [2020/11/11(水) 00:47:47.87 ID:vox+S3u3.net]
(´・ω・`)

966 名前:デフォルトの名無しさん mailto:sage [2020/11/11(水) 18:19:57.16 ID:NMl7/e2v.net]
暇つぶしに>>944がどれくらい再帰呼び出し読んでるか数えてもらった

findSum' x ys = let ( z : zs ) = ys in case ys of
[ ] -> 0
_ | z >= x -> 0
otherwise -> ( findSum' x zs ) + ( findSum' ( x - z ) zs ) + 2
----
2021619696
20億回ちょい
dpだと15,105,031×47=709,936,457で7億回ちょいだから35%ほどになるのか
勉強になった

967 名前:デフォルトの名無しさん [2020/11/12(木) 15:39:00.87 ID:VX9X1ew1.net]
お題1
1〜nまでの偶数をランダムに出力してください

お題2
[開始の数] [増分] [終了の数]を入力として受け取りランダムに出力してください


入力: 1 2 10
出力:
1
1
3
9
1
7
5

968 名前:デフォルトの名無しさん mailto:sage [2020/11/12(木) 15:58:04.88 ID:uK53dAw4.net]
>>951 を読んで、やっぱり日本語は非論理的な言語だな、と思った。

969 名前:デフォルトの名無しさん [2020/11/12(木) 16:04:34.29 ID:VX9X1ew1.net]
書き手の問題だと思うよ

970 名前:デフォルトの名無しさん mailto:sage [2020/11/12(木) 18:42:17.55 ID:HU5jtk1k.net]
オレは深まりゆく秋を感じた



971 名前:デフォルトの名無しさん [2020/11/12(木) 19:26:25.71 ID:VX9X1ew1.net]
ふーけゆくー秋の夜ー

972 名前:デフォルトの名無しさん mailto:sage [2020/11/12(木) 19:34:08.43 ID:nzp5rNOe.net]
>>951 Ruby

p rand(2..$_.to_i) & -2 # => 32 while gets

-*- input -*-
2
10
100

-*- output -*-
2
6
78

p eval$_.gsub(/\s+/,'%s')%%w[.step(*[ , ].rotate).to_a.sample]while gets

-*- input -*-
1 2 10
1 2 10
10 5 99


-*- output -*-
7
1
85

973 名前:デフォルトの名無しさん mailto:sage [2020/11/12(木) 23:53:28.13 ID:HU5jtk1k.net]
そゆいみか
入力パースするとこは略して

Haskell

import System.Random
import Control.Monad

randomABC a b c = let
r = [ a, a+b .. c ]
in ( r !! ) <$> ( randomRIO ( 0, length r - 1 ) :: IO Int )

main = do
print =<< ( replicateM 20 $ randomABC 1 2 10 )
print =<< ( replicateM 20 $ randomABC 5 7 40 )
----
[1,1,9,7,9,7,7,9,7,5,7,7,7,3,7,1,5,9,5,7]
[33,26,26,26,12,19,40,40,12,33,19,26,19,26,26,33,19,5,5,33]

974 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 20:43:02.05 ID:3cTZftC0.net]
>>951 bat
@echo off &setlocal
set /a n=8 &REM 出力個数
echo -3 9
for /L %%i in (1,1,%n%) do call :RAND_A2B -3 9
echo=&echo 3 -5
for /L %%i in (1,1,%n%) do call :RAND_A2B 3 -5
echo=&echo 4 4
for /L %%i in (1,1,%n%) do call :RAND_A2B 4 4
echo=&echo -5 2 2
for /L %%i in (1,1,%n%) do call :RAND_SiE -5 2 2
echo=&echo 2 -3 -12
for /L %%i in (1,1,%n%) do call :RAND_SiE 2 -3 -12
echo=&echo 2 3 -4
for /L %%i in (1,1,%n%) do call :RAND_SiE 2 3 -4
pause &exit /b
:: 1〜n間の偶数をrandom出力 => a〜b間の偶数をrandom出力
:RAND_A2B
set

975 名前:local
set /a "f=%1&1"
if %1 EQU %2 ( if %f% EQU 0 echo %1) &exit /b
if %1 LSS %2 set /a a=%1+1, b=%2
if %1 GTR %2 set /a a=%2+1, b=%1
set /a "c=b-a+1, r=((%random%<<15)+%random%)%%c+a, r&=~1"
echo %r%&exit /b
:: [開始の数] [増分] [終了の数] を引数として条件を満たす値をrandom出力
:RAND_SiE
setlocal
if %2 NEQ 0 ( set /a "a=(%3-%1)/%2" ) else set /a a=0
if %a% LSS 0 set /a a=0
set /a "r=%random%%%(a+1)*%2+%1"
echo %r%&exit /b
[]
[ここ壊れてます]

976 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 22:58:48.40 ID:ghr6tNw2.net]
オンラインでbat動かせるサイトない?
>>958試して見たいんやけど

977 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 23:20:18.52 ID:a1Z/nYk3.net]
bat兄貴天才やな

978 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 00:46:02.44 ID:WHpB6hAc.net]
>>959
それをお題にするのはありかも
947を読んで同じ動きをするプログラムを書け、とかね

979 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 06:23:08.91 ID:rQXll7XK.net]
過疎るのもわかるわ

980 名前:デフォルトの名無しさん [2020/11/15(日) 04:26:34.92 ID:UMNa3GdF.net]
>>951
Java
https://paiza.io/projects/IUNanoZeum1nhkVUBUqXZA



981 名前:デフォルトの名無しさん [2020/11/15(日) 18:33:50.31 ID:UMNa3GdF.net]
お題
天気のデータを読み取って翌日の天気は前日と同じと予測しそれが当たる確率を求めてください

入力: 曇,晴,曇,曇,晴,曇,曇,雨,雨,雨,曇,曇,晴,曇,雨,曇,雨,曇,曇,曇,晴,曇,雨,晴,晴,晴,晴,曇,晴,曇,晴

982 名前:デフォルトの名無しさん mailto:sage [2020/11/15(日) 18:40:06.62 ID:KOddDUPF.net]
>>964 Ruby

gets.split(?,).each_cons(2).tap{|a| p 1.0 * a.count{|b| !b.uniq[1]}/ a.size}

# => 0.3333333333333333

983 名前:デフォルトの名無しさん [2020/11/15(日) 18:41:22.95 ID:UMNa3GdF.net]
はやいな

984 名前:デフォルトの名無しさん mailto:sage [2020/11/15(日) 20:20:51.56 ID:8j4ATkh0.net]
>>964 JavaScript
let hits = 0
const input = '曇,晴,曇,曇,晴,曇,曇,雨,雨,雨,曇,曇,晴,曇,雨,曇,雨,曇,曇,曇,晴,曇,雨,晴,晴,晴,晴,曇,晴,曇,晴'.split `,`
input.reduce((acc, v) => (hits += acc == v ? 1 : 0, v))
console.log(hits / (input.length - 1))
//=> 0.3333333333333333

985 名前:デフォルトの名無しさん mailto:sage [2020/11/15(日) 20:22:58.52 ID:KOddDUPF.net]
>>967
.split(`,`) では

986 名前:デフォルトの名無しさん mailto:sage [2020/11/15(日) 20:23:55.05 ID:KOddDUPF.net]
すまん。バッククウォートだった。

987 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 00:51:51.08 ID:lyH8UsEw.net]
>>958
@echo off &setlocal enabledelayedexpansion
for /f "delims=:" %%A in ('findstr /en ARGS "%~0"') do set /a L=%%A, n=12 &REM nは出力個数
for /f "usebackq skip=%L% delims=" %%A in ("%~0") do set "i="&(for %%B in (%%A) do set /a i+=1)&echo %%A&set "S="&(for /L %%D in (1,1,%n%) do call :RAND!i! %%A&(if defined r set "S=!S! !r!" &set "r="))&echo=!S!&echo=
set /p<nul=終了&pause >nul &exit /b

:: a〜b間の偶数をrandom出力
:RAND2
setlocal &REM VAR= a b c r f
if %1 NEQ %2 ((if %1 LSS %2 (set /a a=%1+1, b=%2) else set /a a=%2+1, b=%1) &set /a "c=b-a+1, r=((%random%<<15)+%random%)%%c+a, r&=~1") else set /a "f=%1&1" &if !f! EQU 0 set r=%1
endlocal &set "r=%r%" &exit /b

:: [開始の数] [増分] [終了の数] を引数として条件を満たす値をrandom出力
:RAND3
setlocal &REM VAR= a r
if %2 NEQ 0 set /a "a=(%3-%1)/%2" &if !a! LSS 0 set "a=" &REM [ else set "a="] 省略:上位環境でaが使用されている場合には必要
set /a "r=((%random%<<15)+%random%)%%(a+1)*%2+%1" &REM set /aでは存在しない変数は0として扱われる
endlocal &set "r=%r%" &exit /b
:: ARGS
-3 9
3 -5
4 4
5 5
1 0 2
-5 2 2
2 -3 -12
2 3 -4
-256 040 0x100
0400 ~0x1F ~0xff

988 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 03:31:51.13 ID:apQPm4KR.net]
>>965
haskell

import Data.List

str = "曇,晴,曇,曇,晴,曇,曇,雨,雨,雨,曇,曇,晴,曇,雨,曇,雨,曇,曇,曇,晴,曇,雨,晴,晴,晴,晴,曇,晴,曇,晴"

accuracy x = let
pairs = id
. map ( take 2 . reverse ) -- [ "BA", "CB", "DC",..]
. drop 2 -- [ "AB", "ABC",..]
. inits -- [ "", "A", "AB",..]
. filter ( /= ',' ) -- "ABCD.."
$ x
successes = filter ( \x -> head x == last x ) pairs
nP = genericLength pairs
nS = genericLength successes
in nS / nP

main = print $ accuracy str

989 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 03:32:04.47 ID:lyH8UsEw.net]
>>964 bat
@echo off &setlocal enabledelayedexpansion
set /a i=-1, match=0
for %%A in (曇,晴,曇,曇,晴,曇,曇,雨,雨,雨,曇,曇,晴,曇,雨,曇,雨,曇,曇,曇,晴,曇,雨,晴,晴,晴,晴,曇,晴,曇,晴) do (
set /a i+=1
if "!S!"=="%%A" set /a match+=1
set s=%%A
)
:: echo 一致数/比較回数 : %match%/%i%
set /a a=match, b=i
:EUCLID_GCD
if %a% NEQ 0 set /a "c=a, a=b%%a, b=c" &goto :EUCLID_GCD
set /a match/=b, i/=b
if %match% NEQ 0 (echo 確率 : %match%/%i%) else echo 確率 : 0
pause

990 名前:デフォルトの名無しさん [2020/11/20(金) 19:52:50.75 ID:HawO8Ftl.net]
>>951
Kotlin
https://paiza.io/projects/AeE4_7EmFluzVxuefBJmDw



991 名前:とくめい mailto:kakeruyamasato@gmail.com [2020/11/24(火) 01:34:45.23 ID:SQQDs1Pp.net]
kakeruyamasato@gmail.comこのメアドを悪用してみせて

992 名前:デフォルトの名無しさん mailto:sage [2020/11/24(火) 08:07:25.33 ID:aaTbFie9.net]
通報しますた

993 名前:デフォルトの名無しさん [2020/11/25(水) 01:49:24.25 ID:O2Mln20T.net]
>>964
Kotlin
https://paiza.io/projects/-bhKDI048mc0kOJzIFqOHA

994 名前:デフォルトの名無しさん mailto:sage [2020/11/26(木) 19:02:45.00 ID:ACzSTlzf.net]
>>951
a,b,c = [1,2,10]
puts ((a..c) % b).to_a.shuffle

995 名前:デフォルトの名無しさん [2020/11/27(金) 01:08:20.91 ID:bIFui41M.net]
>>977
なんていう言語?

996 名前:デフォルトの名無しさん mailto:sage [2020/11/27(金) 02:57:17.73 ID:ocMZsxYX.net]
>>978
rubyでしょ

997 名前:デフォルトの名無しさん [2020/11/27(金) 19:31:40.66 ID:Pnsgs34G.net]
rubyだったか。

998 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 00:37:28.60 ID:PcPNtVOH.net]
%がわからないって怒られた

999 名前:デフォルトの名無しさん [2020/11/28(土) 07:20:49.13 ID:mYohOVrw.net]
お題
以下を表示する
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

1000 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 07:34:45.42 ID:CtkueG9H.net]
>>982 bat
@echo.以下を表示する
@echo.Monday
@echo.Tuesday
@echo.Wednesday
@echo.Thursday
@echo.Friday
@echo.Saturday
@echo.Sunday



1001 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 08:05:44.72 ID:nEfgRBi9.net]
意外と難しいな

1002 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 08:40:11.81 ID:wyvnQiBB.net]
>>982 Ruby

puts Date::DAYNAMES.rotate

# => Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

1003 名前:デフォルトの名無しさん [2020/11/28(土) 09:00:26.43 ID:2Muxtrov.net]
>>977
問題の解釈違わねえ?

1004 名前:デフォルトの名無しさん [2020/11/28(土) 09:12:26.58 ID:nEfgRBi9.net]
>>982 js
const range = v => [...Array(v).keys()]
const DAY_MS = 24 * 60 * 60 * 1000

const weekday = d => d.toLocaleString('en', { weekday: 'long' })

console.log(range(7).map(i => weekday(new Date((i + 4) * 24 * 60 * 60 * 1000))).join("\n"))

1005 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 11:36:22.72 ID:FGpMIdZG.net]
>>981
( 1..10 ) % 2

range に、% というメソッドは無い!

1006 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 12:27:13.39 ID:GOv1h+p2.net]
>>988
NEWS for Ruby 2.6.0
2.5.0 以降の変更
https://docs.ruby-lang.org/ja/2.6.0/doc/news=2f2_6_0.html
> Range
> 新規メソッド
> Range#% が追加されました。 [feature#14697]

1007 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 12:38:57.57 ID:L52xXSLK.net]
予想通りの流れになってくれて何より

1008 名前:977 mailto:sage [2020/11/28(土) 14:12:40.28 ID:FGpMIdZG.net]
ruby -e 'p ( ( 1..5 ) % 2 ).to_a'
#=> [1, 3, 5]

2 は、各ステップの大きさ

1009 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 16:09:49.88 ID:myGQAvEM.net]
ダメだ
オンラインでRuby 2.6使えるとこ見つからない
どっかない?

1010 名前:デフォルトの名無しさん [2020/11/28(土) 16:34:18.46 ID:gB71rnHS.net]
>>992
ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-linux]
https://www.jdoodle.com/execute-ruby-online/

ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux]
https://techiedelight.com/compiler/

ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-linux]
https://paiza.io/en/projects/new?language=ruby



1011 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 16:39:08.00 ID:nEfgRBi9.net]
jdoodle初めて知った
手元の汚い環境にもrepelにもpaizaにもなかったとき使おう

1012 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 17:26:12.48 ID:FGpMIdZG.net]
paiza は、いつも新しい

codepad は、古いような気がする

1013 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 17:30:47.77 ID:FGpMIdZG.net]
漏れは、Windows 10, WSL, Ubuntu 18.04 で、
VSCode の拡張機能、Remote WSL も使う

Linux側には、日本人が作った、バージョンマネージャーのanyenv で、rbenv, nodenv を使って、
ruby 2.6.6, node 12.16.2 を入れた

対応している言語を表示すると、
anyenv install --list

Renv, crenv, denv, erlenv, exenv
goenv, hsenv, jenv, jlenv, luaenv
nodenv, phpenv, plenv, pyenv, rbenv
sbtenv, scalaenv, swiftenv, tfenv

Julia のjlenv も追加された。
anyenvと同様のツールに、asdf もある

1014 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 17:57:16.56 ID:myGQAvEM.net]
>>993
thx
でもiphoneでどのサイトもコピペができないorz
なんでなんだろう?

1015 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 18:01:21.11 ID:myGQAvEM.net]
とりあえず自分で打ち込んで試した
shuffleはランダムに並べ替えみたいだからちょっと違うかな

1016 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 22:44:23.07 ID:wyvnQiBB.net]
>>998
shuffleの代わりにsampleを使うといい

1017 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 06:10:23.39 ID:LsAPFm47.net]
>>982 bat
:: 年月日を元に曜日を返す。 No args validation. 引数が無ければシステム時間
@echo off &setlocal enabledelayedexpansion
if not "%~1"=="" set "date=%~1"
:: set "date=2020.09.09"
set i=0
for %%a in (Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Y,M,D) do set "wd!i!=%%a"&set /a i+=1
set i=7
for /f "tokens=1-3 delims==/-.:,;()_・年月日 " %%a in ("%date%") do for %%d in (%%a %%b %%c) do for /f "tokens=* delims=0" %%e in ("%%d") do for /f %%i in ("!i!") do set /a !wd%%i!=%%e,i+=1
:: echo=%Y%,%M%,%D%,
set /a h=(365*Y+(Y-1)/4-(Y-1)/100+(Y-1)/400+(M+7)/10*(30*(M-3)+(3*M-7)/5+59+D-1)+(1/(Y%%4+1)-1/(Y%%100+1)+1/(Y%%400+1)+(M+7)/10)/2)%%7
echo=!wd%h%!
pause&exit /b

1018 名前:デフォルトの名無しさん [2020/11/29(日) 12:05:03.89 ID:POmPIOqu.net]
>>982 Julia
using Dates
for w=1:7
println(Dates.format(Date(1,1,w), "E"))
end

1019 名前:デフォルトの名無しさん [2020/11/29(日) 14:25:29.24 ID:KxupmnON.net]
>>982
Kotlin script

println(java.text.DateFormatSymbols(java.util.Locale.ENGLISH).getWeekdays().let { wd -> ((2..6) + 1).map { wd[it] } }.join
ToString("\n"))

Javaのライブラリをそのまま使ってやってるので1が日曜で7が土曜になってしまい、
それを並び替えてから出力する必要があって少し複雑になった。

1020 名前:253 mailto:sage [2020/11/29(日) 15:02:42.80 ID:onV9IrOo.net]
>>982Perl5

use Time::Piece;
use Time::Seconds;
$



1021 名前:t = Time::Piece->strptime('210201','%y%m%d');
for (0..6) { print $t->fullday."\n"; $t += ONE_DAY }


実行結果
~ $ perl 18_971_fullday.pl
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
[]
[ここ壊れてます]

1022 名前:253 mailto:sage [2020/11/29(日) 17:21:11.49 ID:onV9IrOo.net]
>>982 Perl5、>>1003 のもうチョイ手抜き版

use Time::Piece;
for (1..6,0) { print Time::Piece::fullday([(0)x6, $_])."\n" }

~ $ perl 18_971_fullday.pl
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

1023 名前:デフォルトの名無しさん [2020/11/29(日) 20:08:13.17 ID:idUZlJAo.net]
>>982
Java
https://paiza.io/projects/F3UDtssyIBLD9KwEcaTfjA

1024 名前:デフォルトの名無しさん [2020/11/29(日) 20:39:34.37 ID:idUZlJAo.net]
お題
配列を入力として受け取り
値が連続するサブ配列のうち、合計が最大のものを出力してください


入力:[−2, 1, −3, 4, −1, 2, 1, −5, 4]
出力:[4, −1, 2, 1]

1025 名前: mailto:sage [2020/11/29(日) 21:07:17.97 ID:POdKASdd.net]
>>1006
>サブ配列
の定義を教えてください

1026 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 21:15:00.96 ID:sOEBQUsx.net]
値が連続しないサブ配列とは?

1027 名前:デフォルトの名無しさん [2020/11/29(日) 21:21:35.35 ID:idUZlJAo.net]
>>1007
教えません

>>1008
[1, 4, 2, 1, 4]
とか

1028 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 21:26:09.30 ID:sOEBQUsx.net]
[4, −1, 2, 1]は値が連続するサブ配列で
[1, 4, 2, 1, 4]は値が連続しないサブ配列?
連続の定義は?

1029 名前:デフォルトの名無しさん [2020/11/29(日) 21:34:10.34 ID:idUZlJAo.net]
>>1010
教えません

1030 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 138日 7時間 40分 24秒



1031 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<338KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef