AAS
【出題と回答例】
1 名前:デフォルトの名無しさん
お題:お題本文
2 名前:デフォルトの名無しさん
>>1 使用言語
回答本文
結果がある場合はそれも
【ソースコードが長くなったら】 (オンラインでコードを実行できる)
https://ideone.com/
http://codepad.org/
http://compileonline.com/
http://rextester.com/runcode
https://runnable.com/
https://code.hackerearth.com/
http://melpon.org/wandbox
https://paiza.io/
宿題は宿題スレがあるのでそちらへ。
※前スレ
プログラミングのお題スレ Part17
https://mevius.5ch.net/test/read.cgi/tech/1584031367/
2020/07/14(火)13:53:46 jW5p6F/e.net
2デフォルトの名無しさん [sage]
2020/07/14(火)21:06:03.54(5wYEuLp1.net)
3蟻人間 ◆T6xkBnTXz7B0 [sage]
懸賞WebMoney5000円です。早い者勝ち。
2020/07/16(木)06:35:35 Tv2xtriA.net
4デフォルトの名無しさん [sage]
2020/07/16(木)07:00:51 Rw1l0Cvs.net
5蟻人間 [sage]
2020/07/16(木)07:12:16.72(Tv2xtriA.net)
6デフォルトの名無しさん
なんか作って欲しいツールの作成依頼スレになりそう
出題者は解答を持ち合わせておくべきだな
2020/07/16(木)11:35:02.71(6HbDCmR4.net)
7デフォルトの名無しさん
前の出題を締め切ってからするべきだろう
中には解答に数ヶ月を要するものもあるので
http://itest.5ch.net/mevius/test/read.cgi/tech/1584031367/10
>0010蟻人間 ◆T6xkBnTXz7B0 2020/03/15 04:20:
>10
>お題: 一辺2000メートルの正方形の平面上にランダムに動く物体5個がある。
http://itest.5ch.net/mevius/test/read.cgi/tech/1584031367/801
>0801デフォルトの名無しさん 2020/06/03 15:52:13
>10js
>能力低すぎて3か月もかかってしまった
>https://codepen.io/as124680/full/Bajapro
出題者はちゃんと評価と解答の解説を責任持って投稿下さい
2020/07/16(木)12:31:42.58(II7vBdwc.net)
8蟻人間 [sage]
この出題は平面上の幾何学的な事象として論じられる。よって数学のベクトルの知識が必須である。
自機は中央にあり動かないのであるから、これを原点としてもよい。レーダー電波は放射状の電磁波であり、明らかに光速で直進する。
レーダーの直線の方程式は角度thetaのときr*(cos(theta), sin(theta))と書ける。すなわちレーダー角に触れれば探知される。
敵機はアニメーションの原理で動く。よってタイマーを使って一定時間ごとに位置を変化させれば動いているように見える。
位置や速度に特に指定はない。よって乱数などで決めることになる。
続く。
2020/07/16(木)17:15:09.36(Tv2xtriA.net)
9蟻人間 [sage]
レーダーは360度回るのであるから、隠れ場所がなければ特定の角度となり、必ず見つかる。位置は一定時間ごとに必ずわかるはずである。
位置の変位を経過時間で割れば速度ベクトルが推定できる。位置がわかれば3平方の定理で距離がわかる。距離が近ければミサイルを
発射せねばなるまい。ミサイルを撃つ方向はatan2関数を使用すれば求められる。
【解説終わり】
2020/07/16(木)17:24:04.86(Tv2xtriA.net)
10蟻人間 [sage]
2020/07/16(木)17:36:30.92(Tv2xtriA.net)
11蟻人間 [sage]
ウェブや深層学習などの進展につれて、今や巨大データの扱いは、ありふれた作業となってきている。巨大データを扱う場合、データベースを使うとアクセス能力や利便性を向上できる。中でも特に一般的なSQLについて出題することにした。
しかし、SQLは方言が多くて、細かい調整はマニュアルを読まないとわからないことが多い。さらに、アクセス方法やインターフェイスが多様すぎて、こちらで解析するのは困難である。
よって採点は行わない。各自で自ら結果を確認して採点してほしい。SQLを始めるなら、まず入門書から入って、次に使用するデータベースのマニュアルを読んでもらいたい。
続く。
2020/07/16(木)18:19:03.86(Tv2xtriA.net)
12蟻人間 [sage]
「SQLのみを使う」とも言っていない。SQLの外部でサイン関数の数値を計算しても正解とする。しかしテーブルは作成しなければならない。すでに作成済みの場合に備えてまず「DROP TABLE ...」する。
次にテーブルの仕様を設計して「CREATE TABLE ...」する。細かいことは...で省略するが、わからないときは入門書かマニュアルを参照して下さいな。
テーブルの行を追加するには「INSERT INTO ...」する。テーブルからサイン関数の値を問い合わせる場合は「SELECT ... FROM ... WHERE ...」する。これが実際のサイン関数の値に常識的に近ければ正解とする。
【解説終わり】
2020/07/16(木)18:37:28.47(Tv2xtriA.net)
13デフォルトの名無しさん [sage]
2020/07/16(木)18:53:35.79(CQUy/8Mn.net)
14デフォルトの名無しさん
-πから+πまでのsin関数表を元に-∞から+∞までのsin関数をNN法を使って完成させろという意味だったのか
2020/07/16(木)20:27:21 6HbDCmR4.net
15デフォルトの名無しさん [sage]
0, 1, -1 の3択でも正解か
2020/07/16(木)20:37:51.51(Zj8FcZKn.net)
16蟻人間 [sage]
2020/07/16(木)21:05:05.23(Tv2xtriA.net)
17デフォルトの名無しさん
x_hat%(2*π)-π
を加えれば絶対値が大きな任意の数にも対応出来る
2020/07/16(木)21:10:19.03(6HbDCmR4.net)
18デフォルトの名無しさん
はsin関数の問題の話ね
2020/07/16(木)21:11:26.01(6HbDCmR4.net)
19デフォルトの名無しさん [sage]
敵機?
ランダムに動く物体でしょ
慣性が働くとも書いてないし連続で動くとも書いてない
各瞬間ランダム位置に出現なのかもしれない
>>9
ランダムに動く物体5個を区別出来るなんて書いてない
距離と方向がわかるとだけ
予測した位置と移動速度、移動方向から推測してミサイルを打つ方向を決める必要がある
その方向決めという重要な部分が書いてない
0点
2020/07/16(木)21:27:56.16(Zj8FcZKn.net)
20デフォルトの名無しさん [sage]
存在もクソ
2020/07/16(木)21:34:34.55(Rw1l0Cvs.net)
21デフォルトの名無しさん [sage]
2020/07/16(木)21:44:35.29(Zj8FcZKn.net)
22蟻人間 [sage]
物体の推定速度: (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に施すとミサイルの発射方向が得られる。
2020/07/16(木)21:54:34.68(Tv2xtriA.net)
23デフォルトの名無しさん
2020/07/16(木)22:05:54.70(6HbDCmR4.net)
24デフォルトの名無しさん [sage]
頭悪い方法ですね
2020/07/16(木)22:06:42.91(Zj8FcZKn.net)
25蟻人間 [sage]
(方程式を使う)
2020/07/16(木)22:09:47.34(Tv2xtriA.net)
26デフォルトの名無しさん [sage]
2020/07/16(木)22:28:50.69(Zj8FcZKn.net)
27蟻人間 [sage]
2020/07/16(木)22:32:18.70(Tv2xtriA.net)
28デフォルトの名無しさん [sage]
2020/07/16(木)22:34:22.52(Zj8FcZKn.net)
29デフォルトの名無しさん [sage]
2020/07/16(木)22:35:58.48(Zj8FcZKn.net)
30デフォルトの名無しさん [sage]
2020/07/16(木)22:36:41.77(Rw1l0Cvs.net)
31蟻人間 [sage]
2020/07/16(木)22:37:12.00(Tv2xtriA.net)
32蟻人間 [sage]
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.
2020/07/16(木)23:19:59.45(Tv2xtriA.net)
33デフォルトの名無しさん
訂正
まず、0〜2*πのsin関数表を作成する
その後、
x_hat>=0 の場合: x_hat%(2*π)
x_hat<0の場合: 2*π + x_hat%(-2*π)
という式でx_hatを変換して上書きする
2020/07/17(金)04:33:22 MbWzFU1J.net
34デフォルトの名無しさん [sage]
2020/07/17(金)06:25:20.74(CFzyXZw3.net)
35デフォルトの名無しさん [sage]
まあ出題も頭悪そうだったが
2020/07/17(金)08:57:31 ICqzduEx.net
36デフォルトの名無しさん [sage]
でもニッチすぎる問題で知識ひけらかしてるみたいな出題は例出してくれ
2020/07/17(金)09:13:31 TqoFz7RF.net
37蟻人間 [sage]
二乗すればdが消えて
|P|**2 + 2*P・V*t + |V|**2*t**2 == (v*t)**2.
これはtの二次方程式であるから整理して解の公式で解ける。
t<0のときは過去になるので除外する。
2020/07/17(金)10:03:37.90(+x+SJT9l.net)
38デフォルトの名無しさん [sage]
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: http://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/
2020/07/17(金)10:05:01.15(2gsvlStU.net)
39デフォルトの名無しさん [sage]
2020/07/17(金)10:57:50 IMrokyul.net
40蟻人間 ◆T6xkBnTXz7B0 [sage]
今、3Dプリンタのブームで三次元タートルグラフィックスは需要があるから、面白いことになるよ。
2020/07/17(金)11:00:53 +x+SJT9l.net
41蟻人間 [sage]
ふふん。
2020/07/17(金)11:24:00.61(+x+SJT9l.net)
42デフォルトの名無しさん [sage]
で、5個の物体の
2020/07/17(金)11:55:47.46(vGVdpt19.net)
43デフォルトの名無しさん [sage]
2020/07/17(金)11:56:18.93(vGVdpt19.net)
44蟻人間 [sage]
前回と前々回の観測により、位置と速度が推測できる。次に予想される出現位置に一番近い物体を選択し、番号を関連付ければ同定できる。
2020/07/17(金)12:50:28.20(+x+SJT9l.net)
45デフォルトの名無しさん
チューリングマシンは現場でバリバリ使える調べて覚えるだけの価値がある技術だ
規則が連続している場合上の方を取ってくるとか2つの数値を比較して大小関係をルールにするといったことが出来る
正規表現で数値を取ってきてプログラミング言語で比較処理するより構造的に書ける
だから解答を用意した上でまずは簡単なお題から出して、次は少し難易度を上げるようなお題を考えながら待っていたが誰も解答しなかった
2020/07/17(金)13:19:51.15(MbWzFU1J.net)
46デフォルトの名無しさん [sage]
2020/07/17(金)13:33:42.70(TqoFz7RF.net)
47デフォルトの名無しさん [sage]
各フレーム物体がランダム位置で出現する場合には使えません
2020/07/17(金)13:35:45.21(vGVdpt19.net)
48デフォルトの名無しさん [sage]
2020/07/17(金)13:37:37.60(vGVdpt19.net)
49デフォルトの名無しさん [sage]
2020/07/17(金)13:40:10 Jbjf6afq.net
50デフォルトの名無しさん
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など
simulationライブラリで純粋な関数式プログラミングをする
UIライブラリ (C#, 2D) を作ったよ
連続と離散を統一した!
4Dエンジン
matrixのライブラリ
ある強力なFor関数
SQLライブラリ
☆ VMを書いた(C#) * x86ではない!
ttp://up.x0000.net/files/TSimulang.zip
☆ malloc / free を実装してみた (C#)
http://up.x0000.net/files/TMallocTest.zip
2020/07/17(金)14:08:20.12(x8K2tEcw.net)
51蟻人間 [sage]
UFOじゃあるまいし、そんな物体が地球上にあるわけない。
2020/07/17(金)14:59:38.30(+x+SJT9l.net)
52蟻人間 [sage]
それらは想定外だよ。
2020/07/17(金)15:18:45.55(+x+SJT9l.net)
53蟻人間 [sage]
ステルスは想定外。
2020/07/17(金)15:23:09.49(+x+SJT9l.net)
54蟻人間 [sage]
次は三次元タートルグラフィックス。位置と向きの情報を持ったタートル(亀)を操作して、面白い図形を描こうというお話。平面じゃないよ、立体だよ。
レンダリングを何にするか。OpenGLは終わったし、DirectDrawは初心者には難しいし。そうだ、JavaScriptのThree.jsにしよう。これならスマホでも確認できるね。使ったことないけど。
2020/07/17(金)16:57:04.24(+x+SJT9l.net)
55デフォルトの名無しさん [sage]
出題文を読みかえしてみろ
2020/07/17(金)17:49:54.25(vGVdpt19.net)
56デフォルトの名無しさん [sage]
2020/07/17(金)17:51:07.65(vGVdpt19.net)
57蟻人間 [sage]
線分を一つ引くごとに、線分を指定した位置に世界に追加する。世界の観測者の視点であるカメラは、テキトーな位置と方向で設置しておく。
描画ルーチンは、世界に追加された線分群をまとめて描く。描画エンジンは遠近法により、奥行きを持った映像を完成する。
2020/07/17(金)18:31:00.92(+x+SJT9l.net)
58蟻人間 [sage]
2020/07/17(金)18:35:56.95(+x+SJT9l.net)
59デフォルトの名無しさん
何をいっているのだか私にはさっぱり
2020/07/17(金)20:07:34.26(Q6g2SqxJ.net)
60デフォルトの名無しさん [sage]
NGワードに糞コテを登録すればOKということだけ理解してれば大丈夫。
2020/07/17(金)20:36:03.22(RwfCcdVI.net)
61 [sage]
NGワードなんてスルー能力の足りない人が使うものですよ、私は全然使いませんね、だって必要ないし…
2020/07/17(金)20:39:05.23(zSX7HXP2.net)
62デフォルトの名無しさん [sage]
2020/07/17(金)21:03:37.05(CFzyXZw3.net)
63蟻人間 ◆T6xkBnTXz7B0 [sage]
https://gist.github.com/katahiromz/cc182b4aaeaf2c7b5902238212c0f3f1
2020/07/17(金)21:18:41 hZ0JaeyU.net
64蟻人間 [sage]
ゲーム会社を立ち上げることができるかも。
Three.jsがどんなものかは、
https://threejs.org/
を見ればたぶんわかる。三次元を描画するものだ。
2020/07/17(金)21:29:05.44(hZ0JaeyU.net)
65デフォルトの名無しさん [sage]
2020/07/17(金)21:32:26.43(C5ummCR0.net)
66デフォルトの名無しさん [sage]
その内、Quaternion(4元数)がどうたらこうたらと、言い出しかねないw
2020/07/18(土)00:01:47.57(tp8HW1uL.net)
67デフォルトの名無しさん [sage]
分かり難いけど、描けました。
(画像)
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);
2020/07/18(土)00:03:54.77(wH8oKg8v.net)
68デフォルトの名無しさん [sage]
使用する言語は問わない。
2020/07/18(土)06:18:45.66(yeg1h1ii.net)
69デフォルトの名無しさん [sage]
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>
(画像)
2020/07/18(土)10:23:44 Z+cMIoZ7.net
70デフォルトの名無しさん
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
2020/07/18(土)10:47:53 zLRZfcZE.net
71デフォルトの名無しさん [sage]
出題が糞過ぎたから誰も答えなかったんだぞ
2020/07/18(土)10:50:14 dRuMQkW5.net
72デフォルトの名無しさん [sage]
2020/07/18(土)11:55:01 n7a2F8Nj.net
73デフォルトの名無しさん [sage]
2020/07/18(土)12:04:26.22(Z+cMIoZ7.net)
74デフォルトの名無しさん [sage]
きれい
2020/07/18(土)12:35:48.94(xMoPei8m.net)
75デフォルトの名無しさん
どこらへんが問題なのかを言わないと次も同じ問題を起こす可能性がある
2020/07/18(土)12:41:40.41(55gPHPOJ.net)
76デフォルトの名無しさん
5chを見下してるのかもしれないな
こんなサイトみてる奴は大したことないって思ってるから油断して非論理的な発言をするのかと思った
2020/07/18(土)12:45:26.81(55gPHPOJ.net)
77デフォルトの名無しさん [sage]
あれで理解できないなら一生理解できないだろうね
2020/07/18(土)13:00:12.87(Gf2oPXpD.net)
78デフォルトの名無しさん [sage]
たぶん問題が難しいか、手間がかかるからじゃないかな
2020/07/18(土)13:01:12.49(n7a2F8Nj.net)
79デフォルトの名無しさん
指摘された問題点はすべて返信していてその返信に対する返信はない
つまり指摘された問題点はすべて間違っていて問題点は見つかっていない
>>78
Pythonで20行弱で書けることは伝えている
となると難易度がこのスレの住人には高すぎたということか...
2020/07/18(土)13:06:42.15(55gPHPOJ.net)
80デフォルトの名無しさん
2020/07/18(土)13:09:37.97(LD7t+FRX.net)
81デフォルトの名無しさん
自分の正当性を主張するだけではダメで回答者のモチベーションを上げる方向に導かないと
コミュニケーションが未熟なだけだと思いました
2020/07/18(土)13:14:16.81(LD7t+FRX.net)
82デフォルトの名無しさん
線形拘束オートマトンはこういう仕組みで、こういうところでも活用できるから知ってると便利だよ!
みたいにポジティブアゲアゲでいかないと
2020/07/18(土)13:17:55.61(LD7t+FRX.net)
83デフォルトの名無しさん
2020/07/18(土)13:20:22.31(55gPHPOJ.net)
84デフォルトの名無しさん [sage]
2020/07/18(土)13:21:40.49(n7a2F8Nj.net)
85デフォルトの名無しさん
2020/07/18(土)13:23:11.61(55gPHPOJ.net)
86デフォルトの名無しさん
ルールとして決める必要はなくて
一般的なコミュニケーションのとり方としてレスポンスが欲しいなら
自分の正当性だけを主張するやり方だと難しいよってこと
自分がこんなに頑張って問題書いたんだ、答えがないのは不誠実だ、そんな自己中発揮してたらレスポンスなくて当然かと
2020/07/18(土)14:02:48.54(LD7t+FRX.net)
87デフォルトの名無しさん
模範解答示したら良いと思うよ
2020/07/18(土)14:06:16.09(LD7t+FRX.net)
88デフォルトの名無しさん [sage]
難度がうんぬんよりも問題文読んだ時点で作問者の頭が悪そう(使ってる言葉の意味わかってなさそう)って思ってスルーしたわ
ここのコテハンも同じ理由でスルー
ただ、面白そうなら気まぐれで解くこともある
解く方も出す方も好きにしたら良い
2020/07/18(土)14:14:52.95(ICGznoJS.net)
89デフォルトの名無しさん
答えがないから不誠実なのではなくて
出題者に伝えておくべき情報が>>1に書かれていないのならそれは不誠実ということ
>>71は次のように言っている
「皆んながお前の出題に問題があると思っている」
俺は今後のためにも当然次の疑問が生まれ、それを伝えた「どこらへんが?難易度が高すぎた?」
そこで君が「難易度よりむしろマナーに問題がある」という趣旨の発言をした
そうなると俺は「>>1にマナーの具体的な内容を書くべき」
そうしないと同じ問題を起こしてしまうから
2020/07/18(土)14:36:05.17(55gPHPOJ.net)
90デフォルトの名無しさん
2020/07/18(土)14:41:12.58(LD7t+FRX.net)
91デフォルトの名無しさん
2020/07/18(土)14:42:30.19(LD7t+FRX.net)
92デフォルトの名無しさん [sage]
っていう感情論に近いものを明文化すんのはちょっと難しいね
2020/07/18(土)14:42:36.88(vTEAacne.net)
93デフォルトの名無しさん
少なくとも僕は実装したこと無い
有限オートマトンが精一杯
自分で「難易度がこのスレの住人には高すぎたということか」と言ってしまうのはイキりだと思った
難易度+高慢な態度 ってところかと
2020/07/18(土)14:50:16.06(LD7t+FRX.net)
94デフォルトの名無しさん [sage]
なんたってこのスレの最長解答時間は3ヵ月だからなw
2020/07/18(土)15:08:41.26(n7a2F8Nj.net)
95デフォルトの名無しさん
2020/07/18(土)15:10:20.71(LD7t+FRX.net)
96デフォルトの名無しさん
2020/07/18(土)15:12:42.37(LD7t+FRX.net)
97デフォルトの名無しさん
2020/07/18(土)15:13:54.80(LD7t+FRX.net)
98デフォルトの名無しさん [sage]
2020/07/18(土)15:20:47.20(n7a2F8Nj.net)
99デフォルトの名無しさん [sage]
気に入らない奴は相手にされないなんて、人と人とのコミュニケーションが発生する場所なら何処でもそうだろう。仕事などの個人の感情よりやるべきことを優先すべき場面を除いては。
書かれてないから知らないなんて、小学生の屁理屈にも劣る反応だな。
2020/07/18(土)15:29:31.73(Bt+NBO6d.net)
100デフォルトの名無しさん
現場でバリバリ使う為にはε-非決定性オートマトンとかも知っとかないと実用的じゃなくなるから学習に意味を見いだすのはかなり難しいと思うよ
2020/07/18(土)15:34:22.37(55gPHPOJ.net)
101 [sage]
非決定オートマトンを決定性オートマトンにする、とかいうお題は、やっぱりマニアックすぎますかね?
今そういう本をよんでポチポチコードを書いているので、需要があるようなら出題&採点してもいいかなって思ってます
2020/07/18(土)15:41:54.65(KIRMqycZ.net)
102デフォルトの名無しさん
需要があるかは分からないけどとてもいいと思うよ
2020/07/18(土)15:47:29.51(55gPHPOJ.net)
103デフォルトの名無しさん [sage]
いなくなるかもしれないなら解答例貼っておいてよ
2020/07/18(土)15:58:37.25(n7a2F8Nj.net)
104デフォルトの名無しさん
2020/07/18(土)16:51:46.46(2TKjWEFt.net)
105デフォルトの名無しさん
まあしかし何かが出題されたら必ず誰かが解かねばならないわけでもないしな。義務は何もないからこうでなければいけないという事もない。
2020/07/18(土)18:01:09.47(k5pKf1DO.net)
10669 [sage]
ありがとう❣、チャレンジして良かったよ!
出題者からはなんの評価も解説もされないので
そういう反応が返って来ると嬉しい。
また、次のモチベーションに繋がる。
教科書とか勉強中のコラムとかコーヒーブレイクみたいな
息抜き程度の頭の体操になるような手軽なお題の方が答えやすいね。
結局は出題者も回答者も自己満足でしか無いから、
初級〜中級者向けくらいが丁度良いかも?
2020/07/18(土)19:43:00.59(BZh66Ti/.net)
107デフォルトの名無しさん [sage]
2020/07/18(土)20:06:14.32(tp8HW1uL.net)
108デフォルトの名無しさん [sage]
コードのキレイさなら>>70かもしれませんが
お題はコードを出力するのではなくハート形を出力せよとのことでしたから
初心者がチャレンジしたコードなのでスマートな書き方でないのは御勘弁下さいorz
2020/07/18(土)20:44:45.69(naIVYT0v.net)
10968 [sage]
>>69の出力は出題者もきれいだなって思います。
想定していたコードはどちらかいうと>>70に近くて
http://codepad.org/ICpm3J6j
こんな感じの簡単な式(x^2+y^2<100-|x|y)でも充分かなと思ってました。
ハート形を生成できる式はいくつか知られているので、バリエーションを探ってみるのはいいかなと思います。
2020/07/18(土)21:39:17.47(yeg1h1ii.net)
110蟻人間 [sage]
二次元タートルグラフィックスで八角形を描けたよ。
お題: (1)と(2)のリンクを参考にコッホ曲線を描画せよ。
(2) http://www.f.waseda.jp/sakas/java/JavaGraphicsSample.html
2020/07/19(日)13:58:11.60(GV3E92FC.net)
111蟻人間 [sage]
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);
}
2020/07/19(日)14:05:25.72(GV3E92FC.net)
112蟻人間 [sage]
3次元タートルグラフィックスを可能にせよ。
ただし、turn_dirの引数は長さ1の方向ベクトルとし、turn_angleの引数は角度とする。
turn_dirは、引数dzが0のとき、変更前と同じ動作にせよ。
また、turn_angleの引数にもう一つの角度を追加し、追加した角度がゼロのとき、
変更前と同じ動作にせよ。
ヒント:四元数
2020/07/19(日)14:45:30.46(GV3E92FC.net)
113デフォルトの名無しさん [sage]
66 名前:デフォルトの名無しさん[sage] 投稿日:2020/07/18(土) 00:01:47.57 ID:tp8HW1uL [1/2]
ついに蟻人間は、3次元まで行ってしまったか
その内、Quaternion(4元数)がどうたらこうたらと、言い出しかねないw
2020/07/19(日)14:48:01.51(EiEVeWaP.net)
114蟻人間 [sage]
2020/07/19(日)21:17:44.37(T8vbWyFG.net)
115デフォルトの名無しさん [sage]
必死に数学の知識を見せようと頑張ってる
でも頭の悪さが随所に滲み出てる
自覚のないアホ
2020/07/19(日)21:45:13.46(h5vFOzT4.net)
116蟻人間 [sage]
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);
}
2020/07/19(日)21:56:49.40(GV3E92FC.net)
117デフォルトの名無しさん [sage]
やっぱクソコテって怖いな
2020/07/19(日)21:57:24.56(5kiTFqsE.net)
118蟻人間 [sage]
dz = dy * Math.sin(angle2 * Math.PI / 180);
dy *= Math.cos(angle2 * Math.PI / 180);
次は、三次元のturn_dirね。数学、スゴクデキルんでしょ?
2020/07/19(日)22:06:51.03(GV3E92FC.net)
119蟻人間 [sage]
function turn_dir(dx, dy, dz) {
// (dx, dy, dz)は長さ1の方向ベクトル。
// 長さ1の方向ベクトル(turtle_dx, turtle_dy, turtle_dz)を(dx, dy, dz)だけ回転させる。
...(ここに何か書く)...
}
2020/07/19(日)22:12:10.73(GV3E92FC.net)
120蟻人間 [sage]
はいはいはい、はいはいはい!
2020/07/19(日)22:16:20.98(GV3E92FC.net)
121蟻人間 [sage]
2020/07/19(日)23:32:08.26(T8vbWyFG.net)
122デフォルトの名無しさん [sage]
(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) );
}
(画像)
2020/07/20(月)06:57:18.16(P7t0RBc6.net)
123デフォルトの名無しさん [sage]
やってみたよ
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);
}
}
(画像)
2020/07/20(月)07:42:33.17(ozWDjdlg.net)
124蟻人間 [sage]
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 からダウンロードして下さい。
お題: (4) を修正して木が平面になるようにせよ。
(deleted an unsolicited ad)
2020/07/20(月)15:09:49.43(rHNryQzp.net)
125デフォルトの名無しさん
2020/07/20(月)16:08:13.13(UHinuGOV.net)
126蟻人間 [sage]
報酬は出しちゃいかんのか。
2020/07/20(月)16:16:33.54(6GFyBW1T.net)
127デフォルトの名無しさん [sage]
2020/07/20(月)17:25:48.10(uvZgkaZD.net)
128デフォルトの名無しさん [sage]
報酬出すんならランサーズとかにでも行ってこい
なんでここで話題にするんだ
2020/07/20(月)17:58:58.92(8mFfSXNu.net)
129デフォルトの名無しさん [sage]
2020/07/20(月)17:59:50.36(8mFfSXNu.net)
130蟻人間 [sage]
2020/07/20(月)18:37:44.48(rHNryQzp.net)
131デフォルトの名無しさん [sage]
2020/07/20(月)23:40:32.05(5ka8Ymx5.net)
132蟻人間 [sage]
2020/07/20(月)23:47:38.07(6GFyBW1T.net)
133デフォルトの名無しさん [sage]
2020/07/20(月)23:52:17.88(/f9oEP+1.net)
134アンスタ7.2日目 [sage]
(画像)
タートルグラフィックスTreeの平面化
(画像)
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);
}
2020/07/20(月)23:54:27.58(5ka8Ymx5.net)
135デフォルトの名無しさん [sage]
クロームより軽いから、捨てられなくて。。。
2020/07/20(月)23:57:55.33(5ka8Ymx5.net)
136蟻人間 [sage]
2020/07/21(火)00:03:34.18(iLwMnecK.net)
137デフォルトの名無しさん [sage]
…が、なんとなく成り立っているように感じられるプログラムを作って発表せよ。
2020/07/22(水)22:25:22.87(ILXZvJ+B.net)
138デフォルトの名無しさん [sage]
Nは任意とする
2020/07/22(水)22:30:15.48(IwIxQ1Ze.net)
139デフォルトの名無しさん [sage]
2020/07/22(水)22:57:06.83(EawLE7Sy.net)
140デフォルトの名無しさん [sage]
面白いものができてしまったわ
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
2020/07/23(木)00:07:39.47(DuCdQo+y.net)
141デフォルトの名無しさん [sage]
2020/07/23(木)10:38:13.83(bJ7HfHNw.net)
142デフォルトの名無しさん [sage]
2020/07/23(木)22:03:16.45(VBywRp49.net)
143デフォルトの名無しさん
2020/07/23(木)23:12:54.26(QnunbgyT.net)
144デフォルトの名無しさん
2020/07/24(金)00:24:32 F0SZWNxk.net
145デフォルトの名無しさん [sage]
2020/07/24(金)03:32:41.61(6ZonvnML.net)
146デフォルトの名無しさん
Kotlin 及び Kotlin Script ではこんな風になる(a が元の配列または List)。
val b = a.filter { (it % 2) == 0 }
もちろん比較部分は (it and 1) == 0 等でも良い。it が偶数の時に true になりさえすればなんでも良い。
配列の要素数の N についてはここでは考える必要なし。
要素の型が Int かどうかも考える必要なしだが、% 2 の計算ができないとか結果が Int の 0 と比較できなければコンパイルエラー、または Script なら読んだ直後の文法チェック時にエラーだと思う。
2020/07/24(金)03:47:06.33(6ZonvnML.net)
147デフォルトの名無しさん
2020/07/25(土)07:02:03.31(j1aQFTSL.net)
148デフォルトの名無しさん [sage]
お題www
2020/07/25(土)11:32:49.78(vIjhxGJs.net)
149デフォルトの名無しさん
ランダムは副作用なので、ちと面倒臭い。
(厳密には擬似乱数を作る為の種(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は関数の外に置いた。
2020/07/26(日)11:42:26.03(467XWCJo.net)
150デフォルトの名無しさん [sage]
2020/07/26(日)11:54:08.47(arqbmdN/.net)
151デフォルトの名無しさん [sage]
2020/07/26(日)11:55:36.48(Lwmxod4b.net)
152デフォルトの名無しさん
2020/07/26(日)12:16:01.64(yLhsD6tn.net)
153デフォルトの名無しさん
2つの文字列の差を[]で囲って出力してください
例1
入力:abc adc
出力:a[b]c
例2
入力:abc acd
出力:a[bc]
例3
入力:abc bcc
出力:[ab]c
2020/07/26(日)12:31:12.02(XQciIU0B.net)
154デフォルトの名無しさん
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]"
2020/07/26(日)15:30:12.41(yLhsD6tn.net)
155デフォルトの名無しさん
2020/07/26(日)17:41:12.51(1PJx+gwa.net)
156デフォルトの名無しさん [sage]
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"
}
2020/07/26(日)19:21:26.42(+ODzYEeD.net)
157デフォルトの名無しさん
確かこんなのあったな〜・・・と、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]
2020/07/26(日)23:12:10.92(3QUkzPB/.net)
158デフォルトの名無しさん
じゃんけんを実装してください
1 = ぐー
2 = ちょき
3 = ぱー
入力: 1
出力: あなた=ぐー コンピュータ=ちょき あなたの勝ちです
お題2
あなたの勝率を指定できるようにしてください
勝率は0.0〜1.0で入力します
入力: 1 0.7
出力: あなた=ぐー コンピュータ=ちょき あなたの勝ちです
2020/07/29(水)09:26:50.38(yJ6wpcWu.net)
159デフォルトの名無しさん [sage]
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
2020/07/29(水)22:59:47.88(tovqwAmw.net)
160デフォルトの名無しさん [sage]
puts odai2[2, 1] # => You: Chocky, Com: Parr. Win
2020/07/29(水)23:09:16.98(tovqwAmw.net)
161デフォルトの名無しさん [sage]
出たか連続校正レス君
2020/07/29(水)23:11:53.00(z6Fnx3oM.net)
162デフォルトの名無しさん [sage]
2020/07/29(水)23:15:30.50(zhbinuHB.net)
163蟻人間 [sage]
グーはgoo、
チョキはchoki、
パーはpar、
ジャンケンはJankenとする。
2020/07/29(水)23:42:09.78(hGtKVe2E.net)
164デフォルトの名無しさん [sage]
2020/07/30(木)00:20:11 aEaasmNp.net
165デフォルトの名無しさん [sage]
A * B ではない方法で、AとBを掛けた結果を求めなさい。
ただし、AとBは4バイトの数値型で、どのような値が入ってきても
実施してからなるべく近い時間で計算終了する方が高得点とします。
2020/07/30(木)15:16:52 cH8Va6i2.net
166デフォルトの名無しさん [sage]
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
2020/07/30(木)15:58:10.10(aEaasmNp.net)
167デフォルトの名無しさん [sage]
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
2020/08/01(土)20:01:40.49(eF75V+Af.net)
168デフォルトの名無しさん [sage]
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
2020/08/01(土)21:52:47.76(xRTQ61eG.net)
169デフォルトの名無しさん [sage]
['apple', 'banana', 'apple', 'chikuwa']
↓
['apple', 'banana', 'chikuwa']
2020/08/04(火)03:43:27.41(DYgISIVe.net)
170デフォルトの名無しさん [sage]
['apple', 'banana', 'apple', 'chikuwa'].uniq.sort #=> ["apple", "banana", "chikuwa"]
2020/08/04(火)03:55:23.60(gT//RRjC.net)
171デフォルトの名無しさん
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|
2020/08/04(火)05:05:40.50(YeoxtHaI.net)
172デフォルトの名無しさん
Kotlin または Kotlin script でのやり方
a が Array<String> または List<String> でそこに元の文字列が入っているとすると。
val b = a.toSortedSet()
でbに重複削除されてソートされたSetができる。
これを List<String> にしたい場合はこうする。
val c = b.toList()
2020/08/04(火)18:06:57 Bm48LwqI.net
173デフォルトの名無しさん
その評価結果(この場合は10)を出力するプログラムを作成してください.
2020/08/04(火)19:17:32.13(w83j0BiFE)
174デフォルトの名無しさん
#チューリングマシン本体(不受理の場合例外が発生する)
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)
2020/08/04(火)18:45:38.06(lImhU2CT.net)
175デフォルトの名無しさん
あーアホだったw
タブ消去の仕様だとPythonだと分けわからんことになるなw
↓貼り直した
http://codepad.org/BWRzr8fW
※会員未登録の為、一定期間後に自動消去
2020/08/04(火)19:24:17 lImhU2CT.net
176デフォルトの名無しさん [sage]
この魔法が気になる
2020/08/04(火)20:26:47.42(BW/Lg1/b.net)
177蟻人間 [sage]
奇数ならば最下位ビットが1であることを利用している。
2020/08/04(火)20:33:41.16(pnjegpbT.net)
178デフォルトの名無しさん
101 b
110 a (+
---------
0
1010
10100
---------
11110
2020/08/04(火)20:43:45.04(ZgraBKAX.net)
179蟻人間 [sage]
2020/08/04(火)20:47:15.02(pnjegpbT.net)
180蟻人間 ◆T6xkBnTXz7B0 [sage]
2020/08/04(火)21:14:16 pnjegpbT.net
181デフォルトの名無しさん [sage]
2020/08/04(火)21:16:21 02jYvMNw.net
182デフォルトの名無しさん
ポイントは文法の中に演算を組み込める点
実社会に役に立つ具体的な例を挙げろと言われれば直ぐには思いつかないが、オートマトンの入力は文字列だけとは限らないぞ
有限木オートマトン使って静的コード解析なのか最適化なのかは分からんが、開発言語の構文木に何らかの演算が伴うルールを適用したいこともあるかもしれない
「そんなのプログラミングすればいいだけだろ」と言う声が聞こえてきそうだがそれは極論「正規表現など要らん」と言ってるのと同じだと思う
以上でもって「全てのプログラマはオートマトンとチューリングマシンをよく勉強するべき」とする俺の主張の正当性は認められる
ちなみに俺は10年以上機械学習の勉強をしたのに画期的な成果が出せなかった後悔の思いがあるから言っている
2020/08/04(火)21:26:04 lImhU2CT.net
183デフォルトの名無しさん [sage]
なんでそうやっていつもスレ趣旨からずれようとするのか?
ズレたいならよそでやってくれ
2020/08/04(火)21:58:22.27(JHqDXk92.net)
184デフォルトの名無しさん [sage]
2020/08/04(火)22:11:15.82(02jYvMNw.net)
185デフォルトの名無しさん
両替をしてください
貨幣は次の文字列で表されます
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)
2020/08/04(火)23:36:46 L0dS0CTZ.net
186デフォルトの名無しさん [sage]
2020/08/05(水)00:05:23.10(DlE2lfwB.net)
187デフォルトの名無しさん
aが2とか4だったらどうなるかを紙にでも書いて考えればいずれわかると思う。
2020/08/05(水)02:29:32 prJIGLTT.net
188デフォルトの名無しさん [sage]
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"
}
2020/08/05(水)02:55:46.54(wv4r4oF2.net)
189デフォルトの名無しさん
2020/08/05(水)03:57:36.76(NljdtI5zt)
190デフォルトの名無しさん
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)
グラフをプロットしたらこのエラーが出ました。対処法を教えてください
2020/08/05(水)11:37:38.85(kVNaCqIg.net)
191デフォルトの名無しさん [sage]
2020/08/05(水)12:05:51.48(DlE2lfwB.net)
192デフォルトの名無しさん
2020/08/05(水)12:27:47.54(NljdtI5zt)
193デフォルトの名無しさん
一行目と最後の行IOError("%s not found." % path) から
File "C:\Users\NEC-PCuser\.spyder-py3\temp.py"
のパスが間違えていると思われるので
temp.pyを添付するか確認するように進言します
2020/08/05(水)12:16:18.65(IZQzbQjk.net)
194デフォルトの名無しさん
2020/08/05(水)14:35:10 xKYyZvTf.net
195デフォルトの名無しさん [sage]
Kotlin
https://paiza.io/projects/cVm9G2FkQCosaGf9_fQz-Q
最初は割り算したり余り出したりしてやろうと思ったんだけど、よく考えたらこの場合はその計算は無駄な感じがしたので合計から引けたらその貨幣を出すのを繰り返すようにした。
2020/08/05(水)15:30:05.18(prJIGLTT.net)
196デフォルトの名無しさん
2020/08/05(水)16:44:00.29(73CDpa/5.net)
197蟻人間 ◆T6xkBnTXz7B0 [sage]
ダミーのfeedは、次のようなプログラムとする:
- 現在日時と「えさをやりました。」を出力する。
2020/08/05(水)17:59:02 TWR5sasY.net
198蟻人間 [sage]
#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);
}
2020/08/05(水)18:08:26.66(UZ8wPONY.net)
199デフォルトの名無しさん
2020/08/05(水)19:40:23.44(VitQNdTl.net)
200デフォルトの名無しさん [sage]
# 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 # 表示確認用
2020/08/05(水)20:19:52.45(wv4r4oF2.net)
201デフォルトの名無しさん
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 'えさをやりました。'
2020/08/05(水)23:41:13.11(prJIGLTT.net)
202デフォルトの名無しさん [sage]
日付付けるなら例えばこうする。
#!/bin/sh
echo `date` 'えさをやりました。'
date コマンドに任せてしまってこんな風にもできる。(日時は YYYY-MM-DD hh:mm:ss の形式で出る)。
#!/bin/sh
date '+%F %T えさをやりました。'
2020/08/05(水)23:51:48.40(prJIGLTT.net)
203デフォルトの名無しさん
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);
}
}
2020/08/06(木)14:26:19.33(HoaabIeAf)
204デフォルトの名無しさん
#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;
}
}
2020/08/06(木)16:22:14.55(HoaabIeAf)
205蟻人間 [sage]
できるのか?
2020/08/06(木)18:50:53.87(mzjhTFla.net)
206デフォルトの名無しさん
2020/08/06(木)19:02:17 nx4HEXSE.net
207デフォルトの名無しさん [sage]
プログラムそのものは出力装置に繋がるビットをONにするとかを定期的にやれば良いだけなのでは?
で、ONになったらリレーで餌やり器のスイッチが入ってウイーンとかいって餌が一定量水槽に入る。
ていうか、全部ハードウェアだけででできないか?タイマーICってあったよね確か。
2020/08/06(木)19:06:41 cHZDAcP7.net
208蟻人間 [sage]
普通のPCから安価で制御する方法はないのだろうか。
ニシキゴイを20匹ほど飼いたいのだが。
2020/08/06(木)19:21:15.27(mzjhTFla.net)
209デフォルトの名無しさん
ピ・タ・ゴ・ラ・スイッチ
2020/08/06(木)19:23:23.77(nx4HEXSE.net)
210デフォルトの名無しさん [sage]
学習できないんですか?
2020/08/06(木)19:37:26 /QKQvkvR.net
211蟻人間 ◆T6xkBnTXz7B0 [sage]
ハードにも興味を持ってくれるといいな、と思って企画しました by 突撃商会
2020/08/06(木)19:46:21 mzjhTFla.net
212デフォルトの名無しさん [sage]
2020/08/06(木)19:58:03 AWtnj9QL.net
213蟻人間 ◆T6xkBnTXz7B0 [sage]
正解。次のお題お願いします。
2020/08/06(木)20:01:30 mzjhTFla.net
214デフォルトの名無しさん
スケールは1点以上100点未満とする
2020/08/06(木)20:18:11.34(nx4HEXSE.net)
215蟻人間 ◆T6xkBnTXz7B0 [sage]
それは人間しかできないんで内科医?
2020/08/06(木)20:28:14 mzjhTFla.net
216デフォルトの名無しさん [sage]
2020/08/06(木)20:37:37 sjF+gr/I.net
217デフォルトの名無しさん [sage]
2020/08/06(木)20:53:50 O/aURmUk.net
218蟻人間 ◆T6xkBnTXz7B0 [sage]
2020/08/06(木)21:07:24 mzjhTFla.net
219蟻人間 ◆T6xkBnTXz7B0 [sage]
2020/08/06(木)21:16:15 mzjhTFla.net
220デフォルトの名無しさん [sage]
◆QZaw55cn4c はうせろ
2020/08/06(木)21:29:05.63(8sSWlLgK.net)
221 [sage]
突然、どうしたのですか?
2020/08/06(木)22:26:16.70(L4WiFaHt.net)
222デフォルトの名無しさん [sage]
呼んでねえよハゲ消えろ
2020/08/06(木)22:38:17.00(8sSWlLgK.net)
223蟻人間 [sage]
番号の順に点を結べば、図案が浮かび上がるというものだ。
以下の手順に従ってモノクロPNG画像(300dpi前後)として与えられた点結びパズルを自動的に解くプログラムを作れ。画像処理。
(1) OCR技術や深層学習などにより、画像上の一文字が2mm以上6mm以下のアラビア数字(複数)を読み取り、数字の位置と数字の対を返す関数を作れ。数字の30度以上の回転は考える必要はない。
(2) 点結びパズルの点は直径0.5mm以上3mm以下の黒い丸い点だと仮定して、点と数字を関連付けるアルゴリズムを考案せよ。
ただし、数字に近い点が複数ある場合は「スマートに」割り振ること。
(3) 画像に実際に線分を描画して点結びパズルを回答するプログラムを作れ。
点と数字以外の枠線やタイトルなどは印刷されていないと仮定してもよい。
2020/08/06(木)23:02:55.51(mzjhTFla.net)
224デフォルトの名無しさん [sage]
水槽の中の金魚に、エサをやる装置とか
2020/08/07(金)00:08:41.77(TzYKRTqH.net)
225デフォルトの名無しさん [sage]
2020/08/07(金)11:29:33 uQ4nbdFf.net
226デフォルトの名無しさん
文字列を大文字小文字を区別せずにソートして()でグルーピングしてください
入力: 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)
2020/08/07(金)12:51:36 lb7vo/Jy.net
227デフォルトの名無しさん
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)
2020/08/07(金)13:43:57.69(uQ4nbdFf.net)
228デフォルトの名無しさん
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 いらなかった
2020/08/07(金)13:48:23.69(uQ4nbdFf.net)
229デフォルトの名無しさん [sage]
# その 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 )}"
2020/08/07(金)14:51:48.30(5vmbSLbR.net)
230デフォルトの名無しさん [sage]
# その 2
def igrouping( str )
i = 0
'(' + str.split.sort_by{|x| [ x.downcase, i += 1 ] }.join(' ').gsub( /(\w) (?!)/i ){"#{}) (#{}"} + ')'
end
instr = 'D a B c d c C A E c e B b'
puts "入力: #{instr}"
puts "出力: #{igrouping( instr )}"
2020/08/07(金)14:52:06.69(5vmbSLbR.net)
231デフォルトの名無しさん [sage]
2020/08/07(金)16:23:53.54(uQ4nbdFf.net)
232デフォルトの名無しさん [sage]
$><<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)
2020/08/07(金)19:28:59 P4+Ga4Bm.net
233デフォルトの名無しさん [sage]
やっぱり、Ruby の方が、メソッドチェーンできるから良い
Lodash ではたまに「インスタンス.メソッド」の形にならない関数がある。
関数(オブジェクト)の形式
そこで、メソッドチェーンが途切れて、配列が実体化されてしまうから、
サイズと大きいと、ヤバイ
2020/08/08(土)00:04:29 b55CcwAR.net
234デフォルトの名無しさん
2020/08/08(土)00:46:24.94(R/FWJxxqi)
235デフォルトの名無しさん [sage]
一応 lodash/fpもあるけど
2020/08/08(土)07:24:36.17(u/td9dv4.net)
236デフォルトの名無しさん [sage]
一瞬非推奨の流れ来たときから使ってないわ
メソッドチェーン嫌いではないけど
2020/08/08(土)07:26:45.92(u/td9dv4.net)
237デフォルトの名無しさん
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
2020/08/08(土)09:18:46 b55CcwAR.net
238デフォルトの名無しさん [sage]
2020/08/08(土)14:04:33 JvTsLjL+.net
239デフォルトの名無しさん
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
オブ脳ならぬラムダ脳なんだろうなぁ
同値でグループ化、代表元でソート、出力、これを関数でやってる
それかワンライナーへの偏執的な愛
2020/08/08(土)14:58:00 gFRxrH0y.net
240デフォルトの名無しさん [sage]
2020/08/08(土)15:53:05 xsg1wzC9.net
241デフォルトの名無しさん [sage]
一般論としてデータの処理と最後の文字列の組み立てを一緒にやらない方がいい
今どきPC上ならメモリーは潤沢にあるので
・グルーピングの処理してから
・各グループを文字列化
・さらにその文字列を順次出力
とした方がわかりやすいと思う
https://ideone.com/Tsio0O
2020/08/08(土)16:11:32.49(yUCBpeXj.net)
242デフォルトの名無しさん
2020/08/08(土)17:07:51.92(HH2BebFt.net)
243デフォルトの名無しさん [sage]
2020/08/08(土)21:09:30.55(JvTsLjL+.net)
244デフォルトの名無しさん [sage]
2020/08/08(土)21:20:24 bf+w2Xl6.net
245デフォルトの名無しさん [sage]
そういうものなのね
2020/08/08(土)21:56:24 JvTsLjL+.net
246231 [sage]
長く、チェーンできるから
Elixir では関数の第一引数を、前のチェーンからの戻り値として渡せる
str = "a b c"
# 文字列を空白で分割して、配列化する
IO.inspect String.split( str )
str
|> String.split
|> IO.inspect
出力は、どちらも
["a", "b", "c"]
2020/08/08(土)22:49:25 b55CcwAR.net
247231 [sage]
メソッドチェーンで、英語のように、左から右へ読めないとダメ
Python の内包表記みたいなのは、可読性が悪い
2020/08/08(土)22:54:29 b55CcwAR.net
248デフォルトの名無しさん [sage]
2020/08/08(土)23:09:35.53(n6UBlQy6.net)
249デフォルトの名無しさん
2020/08/08(土)23:14:07.63(ifN2bgU4.net)
250デフォルトの名無しさん
2020/08/08(土)23:32:15 ifN2bgU4.net
251デフォルトの名無しさん
理想的なスクリプト言語だな
2020/08/09(日)00:15:33.89(cPfQFxYQ8)
252デフォルトの名無しさん [sage]
utilが充実してるな
2020/08/09(日)00:17:54.90(/K790vfJ.net)
253デフォルトの名無しさん
2020/08/09(日)00:24:15.31(cPfQFxYQ8)
254デフォルトの名無しさん [sage]
2020/08/09(日)00:41:46.15(uywZ9h5A.net)
255デフォルトの名無しさん [sage]
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) + ") ");
}
}
}
2020/08/09(日)02:47:46 Mt0Kh35r.net
256デフォルトの名無しさん
2020/08/09(日)04:58:28 bQgrv4ZF.net
257デフォルトの名無しさん
文字列abcdeを右に2つ回転するとdeabcとなる
文字列abcdeを左に2つ回転するとcdeabとなる
2つの文字列を入力として受け取り
2つの文字列が一致するか、または、文字列を回転させて一致した場合はtrueを返してください
さもなくばfalseを返してください
入力: abcde deabc
出力: true
入力: abcde cdeba
出力: false
2020/08/09(日)16:07:42 HZ7sqguG.net
258デフォルトの名無しさん
const isRotateStr = (a, b) => (a + a).indexOf(b) != -1
console.log(isRotateStr("abcde", "deabc"))
// true
console.log(isRotateStr("abcde", "cdeba"))
// false
2020/08/09(日)16:42:31.20(/K790vfJ.net)
259デフォルトの名無しさん
2020/08/09(日)16:56:20.10(DzMx1xPb.net)
260デフォルトの名無しさん [sage]
文字サイズを最初にチェックすればいいかな?
2020/08/09(日)16:59:23.64(Uo9rXbdx.net)
261253 [sage]
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)
2020/08/09(日)19:01:45.47(UiQUiAYf.net)
262253 [sage]
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
2020/08/09(日)19:17:23 A1LNtpwx.net
263デフォルトの名無しさん [sage]
2020/08/09(日)20:09:27.60(sb6ynJ/q.net)
264デフォルトの名無しさん [sage]
2020/08/09(日)22:00:05.82(BOQzPYI8.net)
265253 [sage]
>>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
2020/08/09(日)22:27:07 iNMqPGBy.net
266デフォルトの名無しさん [sage]
2020/08/09(日)22:40:05 /K790vfJ.net
267253 [sage]
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)
2020/08/09(日)23:21:31.30(dFp53gtH.net)
268デフォルトの名無しさん
2020/08/09(日)23:56:04.43(DzMx1xPb.net)
269253 [sage]
>>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()) )))
2020/08/10(月)00:02:07 5Aj+dIHX.net
270253 [sage]
substrとかでも書ける
2020/08/10(月)00:03:02 5Aj+dIHX.net
271253 [sage]
>>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と一緒なんだよね
2020/08/10(月)01:07:06.98(mTkq56mc.net)
272253 [sage]
>>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};
2020/08/10(月)01:18:32.03(mTkq56mc.net)
273253 [sage]
2020/08/10(月)01:58:56.02(5YDTUTIu.net)
274 [sage]
2020/08/10(月)02:53:12.35(JYoLJZbs.net)
275デフォルトの名無しさん
Brainfuck実行環境を作成し,以下のhello.bfを読み込み実行してください
入力: https://github.com/pablojorge/brainfuck/blob/master/programs/hello.bf
出力: "Hello World!"
2020/08/10(月)05:44:26 SKFyjjt9.net
276デフォルトの名無しさん [sage]
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!
2020/08/10(月)08:49:19.32(SwBLGnEH.net)
277デフォルトの名無しさん [sage]
2020/08/10(月)08:49:26.47(OSJh6/O/.net)
278デフォルトの名無しさん
Kotlin
簡単なやり方は出尽くしたのであえてグルグル回すだけのIteratorを作成した。
https://paiza.io/projects/TxupVLPTStBv7o1MiTuDEQ
2020/08/10(月)17:10:10.24(Z7zFlWuQ.net)
279デフォルトの名無しさん
2020/08/10(月)17:10:16.38(SKFyjjt9.net)
280デフォルトの名無しさん [sage]
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!
2020/08/10(月)18:01:14 Z7zFlWuQ.net
281デフォルトの名無しさん [sage]
2020/08/10(月)18:43:36.36(TsKVv45J.net)
282デフォルトの名無しさん
def f(a, b): return len(a) == len(b) and a in b + b
2020/08/10(月)21:10:04.86(EfqLUS40.net)
283デフォルトの名無しさん [sage]
2020/08/10(月)22:32:27 tDeKMBiv.net
284デフォルトの名無しさん
2020/08/10(月)23:41:40.77(SKFyjjt9.net)
285デフォルトの名無しさん [sage]
2020/08/10(月)23:46:58.70(lJp+wmfa.net)
286デフォルトの名無しさん [sage]
できる
2020/08/10(月)23:47:11.22(SwBLGnEH.net)
287272 [sage]
2020/08/11(火)01:47:49 RwCZynCZ.net
288デフォルトの名無しさん [sage]
2020/08/11(火)01:50:50.24(RwCZynCZ.net)
289デフォルトの名無しさん [sage]
2020/08/11(火)07:40:40.35(RSsrE9PW.net)
290デフォルトの名無しさん
2020/08/11(火)14:40:27.33(psN1NwFJ.net)
291デフォルトの名無しさん
来たりするルンバのようなものの上にそれを乗せ、そこにもマイコンを接続。
そのマイコンのコントロールプログラムを作成。
2020/08/12(水)10:55:20.81(WiVroiaz.net)
292デフォルトの名無しさん
2020/08/12(水)11:07:50.98(WiVroiaz.net)
293デフォルトの名無しさん
https://youtu.be/7DbdPKWhrpY
2020/08/12(水)16:50:07.72(xjprAYba.net)
294デフォルトの名無しさん
Brainfuckのの'+','-','.'の 3つの命令のみで
特定の文字列を表示するBrainfucの
ソースコードを生成するプログラム。
2020/08/12(水)19:58:36.03(j5y8ZKQl.net)
295デフォルトの名無しさん [sage]
puts "Hello, World!\n".codepoints.unshift(0).each_cons(2).map{|a, b| '%s.' % ((b > a ? ?+ : ?-) * (b - a).abs)}*''
# =>
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
+++++++++++++++++++++++++++++.+++++++..+++.[略]
2020/08/12(水)20:07:13.01(kGuev0jH.net)
296デフォルトの名無しさん [sage]
2020/08/12(水)23:55:21 WiVroiaz.net
297デフォルトの名無しさん [sage]
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.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
+++++++++++++++++++++++++++++.
+++++++.
.
+++.
-------------------------------------------------------------------.
------------.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
--------.
+++.
------.
--------.
------------------------------------------------------.
$
2020/08/13(木)01:08:54.66(TUx4JMNp.net)
298デフォルトの名無しさん [sage]
"Hello World!\n".codepoints.inject(''){|r,c| r << '+' * c + '.[-]' }
2020/08/13(木)01:49:54 CZu90IWX.net
299デフォルトの名無しさん [sage]
"Hello World!\n".codepoints.map{|c| '+' * c + '.' }.join( '[-]' )
2020/08/13(木)03:32:09 CZu90IWX.net
300デフォルトの名無しさん [sage]
2020/08/13(木)05:51:07.18(CZu90IWX.net)
301デフォルトの名無しさん [sage]
2020/08/13(木)06:48:39.25(9ZM4Lmsz.net)
302デフォルトの名無しさん
2020/08/13(木)12:37:03.85(8zEuDtsy.net)
303デフォルトの名無しさん [sage]
octave
https://ideone.com/62dSzC
ada95
https://ideone.com/26IGLZ
2020/08/14(金)01:20:11 CuxcYYZ5.net
304デフォルトの名無しさん [sage]
# 初期化だけ
a = b = c = 2**31 - 1
# 初期化して表示
p *(a,b,c = [2**31-1] * 3) #=> 2147483647\n2147483647\n2147483647\n
2020/08/14(金)03:17:07 cCFmHkiX.net
305デフォルトの名無しさん [sage]
お題とずれるけど 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
2020/08/14(金)07:01:38 cCFmHkiX.net
306デフォルトの名無しさん [sage]
2020/08/14(金)08:01:01.07(sgFs/qSh.net)
307デフォルトの名無しさん
2020/08/14(金)08:17:19.00(jifd8sPx.net)
308デフォルトの名無しさん
2020/08/14(金)08:18:37.41(jifd8sPx.net)
309デフォルトの名無しさん
2020/08/14(金)08:20:39.60(jifd8sPx.net)
310デフォルトの名無しさん [sage]
2020/08/14(金)08:21:04.21(hpI++Bi7.net)
311デフォルトの名無しさん
#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;
}
2020/08/14(金)08:38:19 jifd8sPx.net
312デフォルトの名無しさん
これだけでよかったorz
2020/08/14(金)09:05:58 jifd8sPx.net
313デフォルトの名無しさん
BitCoinDescriptionAddress
↓
1BitCoinDescriptionAddressadTvGDH
2020/08/14(金)14:02:54 9qHjnK+i.net
314デフォルトの名無しさん
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 が代入される。
まあしかしこのような形式でまとめて複数の変数を初期化をするのは変数が多くなればなるほど
見辛くなってどれがどれに代入されるか分かり辛くなるのであまりお勧めする気は起きない。
2020/08/15(土)16:58:24 gFfdk9Ij.net
315295 [sage]
2020/08/15(土)17:28:56 nnj+MvqH.net
316デフォルトの名無しさん [sage]
長さNの順列を全列挙してください
入力: N
出力: N!行の1からNの整数を用いた順列
例
入力: 3
出力:
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
2020/08/15(土)17:57:15 uqmyrozg.net
317デフォルトの名無しさん [sage]
2020/08/15(土)18:04:12.38(WnA8LB9O.net)
318デフォルトの名無しさん [sage]
2020/08/15(土)18:07:06.59(nnj+MvqH.net)
319デフォルトの名無しさん [sage]
HTMLドキュメントをwebブラウアザ上に表示するプログラムを作りなさい。
内容は、html、head、meta、title、body、h1 を含み、
UTF-8で表示するものとする、
Hello World!
2020/08/15(土)19:24:16.43(4GsEJ4Sf.net)
320デフォルトの名無しさん [sage]
2020/08/15(土)20:07:59.51(nR02Shr3.net)
321デフォルトの名無しさん [sage]
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}" http://127.0.0.1:55080/} ) }
srv.start
2020/08/15(土)20:22:45.39(BUqVCKAW.net)
322デフォルトの名無しさん [sage]
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
{} : {}
2020/08/15(土)20:34:31.85(BUqVCKAW.net)
323314 [sage]
2020/08/15(土)20:37:12.09(BUqVCKAW.net)
324デフォルトの名無しさん [sage]
2020/08/15(土)20:49:55 WnA8LB9O.net
325デフォルトの名無しさん [sage]
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() {
std::cout << std::boolalpha << 0 << !!0 << 1 << !!1 << std::endl;
return 0;
}
2020/08/15(土)20:59:34.51(nnj+MvqH.net)
326デフォルトの名無しさん [sage]
2020/08/15(土)21:22:21.80(v9cGseLQ.net)
327デフォルトの名無しさん [sage]
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 がその他の型だとコンパイルエラー。
2020/08/15(土)23:19:07 gFfdk9Ij.net
328デフォルトの名無しさん [sage]
2020/08/16(日)02:10:15.75(aQEvXwVj.net)
329デフォルトの名無しさん
>>320
bool(n)
>>316
from itertools import permutations
N = 3
print([x for x in permutations(range(1, N+1))])
2020/08/16(日)10:54:19.77(DGzsHTxH.net)
330デフォルトの名無しさん
2020/08/16(日)11:17:36 x8ZjthFZ.net
331デフォルトの名無しさん
2020/08/16(日)19:28:34.07(Stgr85a5.net)
332蟻人間 ◆T6xkBnTXz7B0 [sage]
区間はカッコで囲まれた数の対で表すものとする。ここで対の最初の要素は対の最後の要素以下とする。
例)
[1, 3) + 2 → [3, 5).
[2, 8] - [1, 2] → [0, 7].
(-3, 2] * (1, [2, 3)) → (-9, 6).
2020/08/16(日)19:41:54 GwA/W8AI.net
333デフォルトの名無しさん [sage]
2020/08/16(日)19:47:13.56(WQRWSQYc.net)
334蟻人間 [sage]
2020/08/16(日)19:54:55.84(GwA/W8AI.net)
335デフォルトの名無しさん [sage]
任意の区間に対してどのように順序を定義して全順序集合を構成するのか考えてから言えよクソ雑魚が
2020/08/16(日)19:59:26.75(WQRWSQYc.net)
336デフォルトの名無しさん [sage]
ペアノ系で 0 = 1 って言ってるようなもんだぞ
2020/08/16(日)20:01:44.11(5GlLVozn.net)
337蟻人間 ◆T6xkBnTXz7B0 [sage]
任意の[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)].
2020/08/16(日)20:08:52 GwA/W8AI.net
338デフォルトの名無しさん [sage]
順序の定義しろっつってんだろクソが
「(1, [2, 3))」かつ「対の最初の要素は対の最後の要素以下とする」って言ってるってことは
[1, 1] <= [2, 3) なんだろ?
任意の区間の間で矛盾なく順序を定義しろや
2020/08/16(日)20:11:24.43(WQRWSQYc.net)
339蟻人間 [sage]
すみません。カッコの入れ子はややこしいので止めます、、、
というのは簡単だが、あえて考える。
b<=cならば、間違いなく[a, b] <= [c, d]は真。
d<aならば、[a, b] <= [c, d]は偽。
それ以外は[a, b] <= [c, d]の論理値は不定とし、実行時エラーを発生させる。
2020/08/16(日)20:24:24.91(GwA/W8AI.net)
340デフォルトの名無しさん [sage]
完全律すら成り立たない順序ってなんだよ
「カッコの入れ子はややこしい」とかそういうレベルじゃねえんだよ
だいたい [a, b] - [a, b] = [a - b, b - a] != 0 ってクッソきもいんですけど
お前群論なめてんのか
2020/08/16(日)20:32:34 WQRWSQYc.net
341デフォルトの名無しさん [sage]
2020/08/16(日)20:34:23 1lLvvYB6.net
342デフォルトの名無しさん [sage]
死ねカス
2020/08/16(日)20:50:12.97(5EzRC1Sr.net)
343蟻人間 [sage]
> だいたい [a, b] - [a, b] = [a - b, b - a] != 0 ってクッソきもいんですけど
[a - b, b - a] はゼロを中心とした区間の誤差範囲を表してるから間違いではない。計算機の内部には群論が成り立たない汚い演算もある。
2020/08/16(日)20:54:18.06(GwA/W8AI.net)
344デフォルトの名無しさん [sage]
問題に不備があったなら取り下げて勉強し直してこい
群論を教えるスレじゃない
何があえて考えてみるだ
2020/08/16(日)20:57:11.13(rY4w2Ca/.net)
345デフォルトの名無しさん [sage]
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
矛盾
死ね
消えろ
2020/08/16(日)21:13:43.55(WQRWSQYc.net)
346蟻人間 [sage]
0 < a < bのときは、[-a, -b]は定義されない。
2020/08/16(日)21:16:32.00(GwA/W8AI.net)
347デフォルトの名無しさん [sage]
2020/08/16(日)21:29:26.85(WQRWSQYc.net)
348デフォルトの名無しさん [sage]
<=> [0, 1]*([0, 1] - 1) = 0
<=> [0, 1]*[-1, 0] = 0
<=> [-1, 0] = 0
流石にひどいって
2020/08/16(日)21:34:29.96(1lLvvYB6.net)
349蟻人間 [sage]
(1) 交換法則
(2) 結合法則
(3) 単位元の存在
(4) 逆元の存在
乗法
(5) 交換法則
(6) 結合法則
(7) 分配法則
2020/08/16(日)21:48:28.85(GwA/W8AI.net)
350蟻人間 [sage]
区間に逆元があるように減法を定義することはできない。
すみません、取り下げます。
2020/08/16(日)22:04:28.19(GwA/W8AI.net)
351デフォルトの名無しさん [sage]
2020/08/16(日)22:08:12.76(WQRWSQYc.net)
352デフォルトの名無しさん [sage]
だったりするかも
2020/08/16(日)22:16:18.77(UYHP6Cr3.net)
353デフォルトの名無しさん
2020/08/16(日)22:26:48.34(Nztll5gc.net)
354蟻人間 ◆T6xkBnTXz7B0 [sage]
お題: 区間と演算子によって構成される計算式が入力として与えられる。下記に従って浮動小数点数の区間に対する二項演算(+、-、*、/)を実現し、計算後の区間を出力しなさい。入力される区間は閉区間のみとする。
閉区間は角カッコで囲まれた浮動小数点数の対で表すものとする。ここで対の最初の要素は対の最後の要素以下とする。すなわち[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].
2020/08/16(日)22:46:06 GwA/W8AI.net
355デフォルトの名無しさん [sage]
boost::numeric::interval
とかいう実装があってな
あながちおかしな話ではない
かと言って
そんな車輪の再生産みたいなお題を受けたい気はしないのだが
2020/08/16(日)22:58:27.46(bYLilpPQ.net)
356 [sage]
2020/08/16(日)23:34:04.85(kJzMyvlv.net)
357253 [sage]
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])
2020/08/16(日)23:50:47.82(G5r8RAij.net)
358デフォルトの名無しさん
お題 任意文字列を含む有効なビットコインアドレスを生成するにはどうすればいいか
ビットコインアドレスの形式は
[プレフィックス 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
2020/08/17(月)01:49:55.07(Nup7rIuH.net)
359デフォルトの名無しさん [sage]
消えろカス
2020/08/17(月)06:10:10.64(sRZ0bbBO.net)
360デフォルトの名無しさん [age]
お前うざいよ
2020/08/17(月)08:34:59.13(4e6PsksO.net)
361デフォルトの名無しさん [sage]
2020/08/17(月)09:10:13 CGaaR/Ic.net
362デフォルトの名無しさん [sage]
それとも取引所の仕様を理解しろって話なの?
2020/08/17(月)09:11:51.56(CGaaR/Ic.net)
363デフォルトの名無しさん
2020/08/17(月)11:17:26.81(2KNIyB/f.net)
364デフォルトの名無しさん
例にあるやつだとMayukoMuraokaが任意文字列の部分
XXX…っていうのはただの本体データ160bitのあまりスペースを埋めてるだけだからなんでもいい
それに対応して最後のチェックサムも任意性がある
直感だとブルートフォースが必要そうだけど実際は単純なやり方でできる
2020/08/17(月)18:12:59.56(Nup7rIuH.net)
365デフォルトの名無しさん
じゃあbase58で表されたバイト値と文字列を変換するだけじゃん
2020/08/17(月)19:37:06.53(4e6PsksO.net)
366デフォルトの名無しさん [sage]
実際の手順を考えるとちょっとややこしいことがあるくらい
ということで実装してみよう
2020/08/17(月)19:45:01.16(Nup7rIuH0.net)
367デフォルトの名無しさん [sage]
お前がうぜえよ死ね
2020/08/17(月)22:43:06.44(sRZ0bbBO.net)
368デフォルトの名無しさん
お前が死ね
2020/08/17(月)22:47:24.50(4e6PsksO.net)
369デフォルトの名無しさん [sage]
2020/08/17(月)22:50:53.21(3fwftKf8.net)
370デフォルトの名無しさん [sage]
2020/08/17(月)22:53:16.60(UMcd904E.net)
371デフォルトの名無しさん
じゃあ俺が死ぬよ
2020/08/17(月)22:56:52 4e6PsksO.net
372デフォルトの名無しさん [sage]
2020/08/17(月)22:57:17 3fwftKf8.net
373デフォルトの名無しさん [sage]
どうぞうどうぞ
2020/08/17(月)22:57:32 3fwftKf8.net
374デフォルトの名無しさん [sage]
じゃあ死ねよ
2020/08/17(月)22:58:07 sRZ0bbBO.net
375デフォルトの名無しさん
2020/08/17(月)23:05:20 4e6PsksO.net
376デフォルトの名無しさん
2020/08/17(月)23:05:35 4e6PsksO.net
377デフォルトの名無しさん
2020/08/17(月)23:05:59 4e6PsksO.net
378デフォルトの名無しさん
2020/08/17(月)23:06:13 4e6PsksO.net
379デフォルトの名無しさん
2020/08/17(月)23:39:35 4e6PsksO.net
380デフォルトの名無しさん
2020/08/17(月)23:39:58 4e6PsksO.net
381デフォルトの名無しさん [sage]
煽り耐性 0.1〜1
死ねと言い返す確率 (1-煽り耐性) * 100%
最初に死ねと言うのはA
入力 {Aの煽り耐性} {Bの煽り耐性}
例
> 0.1 0.8
A「死ね」
B「死ね」
A「死ね」
2020/08/18(火)00:15:03.77(/+dAg+CW.net)
382デフォルトの名無しさん [sage]
2020/08/18(火)01:25:39.14(IZwRntbA.net)
383デフォルトの名無しさん [sage]
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
2020/08/18(火)01:35:33.42(Vl5MoMXT0.net)
384デフォルトの名無しさん
2020/08/19(水)16:18:46 ltFkDVN7.net
385デフォルトの名無しさん [sage]
「死」の読みはひとつだけ。
示唆に富んでいる。
2020/08/19(水)18:40:23.70(d4bqPFA7.net)
386デフォルトの名無しさん
2020/08/19(水)18:45:07.34(OrygHj4v.net)
387デフォルトの名無しさん [sage]
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]
2020/08/20(木)11:35:09.25(nWR09WFB.net)
388デフォルトの名無しさん [sage]
縦H、横Wの迷路が与えられます。
スタートからゴールに至る道順の個数を求めてください。
迷路は通路から通路へ、上下左右の4方向へのみ移動できます。
ただし、一度通った通路を引き返すような道順は無効です。
また、スタートとゴールは通路です。
1行目に迷路の高さと幅を表す整数H、Wが与えられます。
2行目からH行にわたって、迷路を表す長さWの文字列が与えられます。
文字列は 'S' 'G' '.' '#' の文字のみからなり、それぞれスタート、ゴール、通路、壁です。
例1:
入力:
5 5
S....
##.#.
...#.
##.#.
....G
出力:
2
例2:
入力:
5 5
S....
##.#.
...#.
...#.
....G
2020/08/23(日)18:52:15.52(kIX3/Jw/.net)
389デフォルトの名無しさん
2020/08/24(月)04:30:51.55(qrCNAVcy.net)
390デフォルトの名無しさん [sage]
2020/08/24(月)11:49:18.16(2DIU31aQ.net)
391蟻人間 [sage]
リボルバーを回しますか? (Y/n) Y
1回目: 不発
リボルバーを回しますか? (Y/n) Y
2回目: 不発
リボルバーを回しますか? (Y/n) n
3回目: バーン!
2020/08/29(土)20:44:46.53(GYyhmMZY.net)
392デフォルトの名無しさん
仕様がわからない
2020/08/29(土)21:04:26.78(KxRf/0sH.net)
393蟻人間 ◆T6xkBnTXz7B0 [sage]
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
2020/08/29(土)21:07:51 GYyhmMZY.net
394蟻人間 [sage]
最初にリボルバーを回します。
(弾丸の位置を設定)
こめかみor天井?(K/t) K
1回目: 不発
もう一度リボルバーを回しますか? (Y/n) Y
(弾丸を回転)
こめかみor天井?(K/t) K
2回目: 不発
もう一度リボルバーを回しますか? (Y/n) n
こめかみor天井?(K/t) K
3回目: バーン!
あなたの負けです。
2020/08/29(土)21:24:48.99(GYyhmMZY.net)
395蟻人間 ◆T6xkBnTXz7B0 [sage]
2020/08/29(土)22:00:32 GYyhmMZY.net
396デフォルトの名無しさん [sage]
オートマとリボルバーどっちかとか特定してからにしてくれ
2020/08/29(土)22:14:20.91(bYj4gZFd.net)
397デフォルトの名無しさん [sage]
2020/08/29(土)22:51:06 yG/yQHuO.net
398デフォルトの名無しさん
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
2020/08/29(土)23:12:55 yG/yQHuO.net
399デフォルトの名無しさん [sage]
変数を書くだけで、内容が表示される
var a = 1
a // 1 と表示される
2020/08/29(土)23:34:19.24(2f/XylsB.net)
400デフォルトの名無しさん [sage]
使うときがあるか微妙
2020/08/29(土)23:41:03.13(yG/yQHuO.net)
401デフォルトの名無しさん
nを受け取って1からnまでインクリメントされた配列を返してください
インクリメントするごとに値の数だけ配列に値を追加してください
例
入力: 1
出力: [1]
入力: 3
出力: [1, 2, 2, 3, 3, 3]
2020/08/30(日)01:02:17.18(xjthqQ7x.net)
402デフォルトの名無しさん
配列をソートする関数を受け取って安定ソートか否かを判定する
プログラムを作成してください
2020/08/30(日)01:33:41.99(xjthqQ7x.net)
403デフォルトの名無しさん [sage]
例:
>> split('abc:def:ghi', ':')
>> ['abc', 'def', 'ghi']
2020/08/30(日)06:49:46 a0VCHWdX.net
404デフォルトの名無しさん
f =: #~ @: >: @ i.
2020/08/30(日)08:02:58.80(Ui9A3dkW.net)
405デフォルトの名無しさん [sage]
(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"]
2020/08/30(日)09:40:37.84(rD3R6mry.net)
406デフォルトの名無しさん [sage]
2020/08/30(日)09:41:22.98(ka/TVb/i.net)
407デフォルトの名無しさん [sage]
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))
}
2020/08/30(日)09:43:25.32(pWMgwPJi.net)
408デフォルトの名無しさん [sage]
f = @(s, d) arrayfun(@(b, e) {s(b:e)}, [1 find(s == d) + 1], [find(s == d) - 1 numel(s)]);
f('abc:def:ghi', ':')
2020/08/30(日)17:51:57.01(9TpSDH8X.net)
409400 [sage]
2020/08/30(日)18:29:58 9TpSDH8X.net
410デフォルトの名無しさん
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' ]
ずるいしダブルクォート対応できてないけど思いつき
2020/08/30(日)18:55:27.84(uG01djUi.net)
411デフォルトの名無しさん [sage]
# セパレーターの仕様が文字か文字列か分からなかったので文字列にした
def split( str, sep )
res = []
(str + sep).scan( /(.*?)#{Regexp.escape(sep)}/ ){ res << }
res
end
split('abc:def:ghi', ':') #=> ["abc", "def", "ghi"]
2020/08/30(日)19:52:13.41(KMqOjvFr.net)
412デフォルトの名無しさん
https://ideone.com/ztBnmn
>> 394 C++
https://ideone.com/8YhzWh
合ってるか分からない
(とりあえずバブルソートが安定だからそれと比較した)
>> 395 C++
https://ideone.com/lmYLkx
2020/08/30(日)19:55:11.73(OKCM85cL.net)
413デフォルトの名無しさん [sage]
2020/08/30(日)23:05:46 HaB2mhSL.net
414デフォルトの名無しさん
2020/08/30(日)23:23:11.11(OKCM85cL.net)
415デフォルトの名無しさん
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
楽しいことを増やそう!科学の眼鏡をかけた1日とは【ヨビノリたくみ特別公演】
https://www.youtube.com/watch?v=u5al7kwy64k
数学の魅力とは?中田敦彦と人気教育系YouTuberヨビノリたくみ先生が初コラボ
https://www.youtube.com/watch?v=qxiAyyotAM0
2020/08/31(月)00:36:58 Sr2UUXBk.net
416デフォルトの名無しさん
2020/08/31(月)08:12:50.04(o+KAewBM.net)
417デフォルトの名無しさん [sage]
何やってんのか分かんねぇ…
2020/08/31(月)09:50:22 3l02ZOhc.net
418デフォルトの名無しさん [sage]
2020/08/31(月)12:53:04.32(DeTlQxvW.net)
419デフォルトの名無しさん
2020/08/31(月)13:15:43 0jcGZySh.net
420蟻人間 ◆T6xkBnTXz7B0 [sage]
単語は大文字のアルファベットのみとする。
各単語は自然数を表している。
単語の各文字は数字を表している。
各単語の先頭はゼロではない。
同じ文字は同じ数字が入る。文字が違えば、数字も違う。
各単語は、3文字以上6文字以下とする。
答えは一つでなければいけない。
今回は、簡単な足し算のみとする。
例)
SEND+MORE=MONEY.
BASE+BALL=GAMES.
単語リスト:https://gist.github.com/deekayen/4148741
2020/08/31(月)13:37:09 tSOV4fJk.net
421蟻人間 ◆T6xkBnTXz7B0 [sage]
例)
SEND+MORE=MONEY
→9567+1085=10652.
BASE+BALL=GAMES
→7483+7455=14938.
2020/08/31(月)13:41:36 tSOV4fJk.net
422デフォルトの名無しさん [sage]
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]
2020/08/31(月)14:49:18.65(7ZWcUsrI.net)
423蟻人間 [sage]
2020/08/31(月)16:10:16.99(lWn/zYPT.net)
424蟻人間 [sage]
2020/08/31(月)16:12:08.02(lWn/zYPT.net)
425蟻人間 [sage]
2020/08/31(月)16:24:48.19(lWn/zYPT.net)
426デフォルトの名無しさん [sage]
2020/08/31(月)18:26:24.52(qQr3mFGF.net)
427デフォルトの名無しさん [sage]
2020/08/31(月)18:26:56.47(qQr3mFGF.net)
428デフォルトの名無しさん [sage]
2020/08/31(月)18:43:24.02(hr5jjNmH.net)
429デフォルトの名無しさん [sage]
2020/08/31(月)19:18:49 J48xi6fS.net
430デフォルトの名無しさん
https://sunasunax.hatenablog.com
2020/08/31(月)19:23:55 fdwPQ6pV.net
431デフォルトの名無しさん
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
2020/08/31(月)21:02:28 Sr2UUXBk.net
432253 [sage]
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
2020/08/31(月)21:47:00.41(Mm8nXRhv.net)
433253 [sage]
$n = 3;
@a = map{($_) x $_} 1..$n;
print "@a\n";
j実行結果
~ $ perl 18_393_inc_ary_map.pl
1 2 2 3 3 3
2020/08/31(月)21:54:06.64(pmRcaHIk.net)
434デフォルトの名無しさん [sage]
2020/08/31(月)23:33:38 0jcGZySh.net
435デフォルトの名無しさん [sage]
2020/09/01(火)00:01:02 1mY8ta+4.net
436デフォルトの名無しさん [sage]
2020/09/01(火)00:18:24 vTrOzHSW.net
437デフォルトの名無しさん
動かない機械ガチャガチャしてるだけ感すごいよな
2020/09/01(火)14:16:37.60(3qKfeSqF.net)
438蟻人間 [sage]
2020/09/01(火)18:47:08.83(4meeAMMW.net)
439デフォルトの名無しさん
2020/09/01(火)18:47:54.44(Y09tsFBY.net)
440デフォルトの名無しさん
テスト用のinput.txtちょーだい!
2020/09/01(火)18:48:39.88(PZXbhIm5.net)
441蟻人間 [sage]
「これはテキトーなテキストデータである。
例えば
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
まあ、いろいろあるっしょ。」
2020/09/01(火)18:54:57.84(4meeAMMW.net)
442デフォルトの名無しさん
あざーす!
2020/09/01(火)18:57:45.00(PZXbhIm5.net)
443デフォルトの名無しさん [sage]
Mail::RFC822::Address: regexp-based address validatio
http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html
2020/09/01(火)19:10:04.73(y/wdSyKD.net)
444蟻人間 [sage]
2020/09/01(火)20:18:24.49(4meeAMMW.net)
445デフォルトの名無しさん
2020/09/01(火)22:43:25 PZXbhIm5.net
446デフォルトの名無しさん
2020/09/01(火)22:55:31.34(PZXbhIm5.net)
447253 [sage]
(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]
2020/09/02(水)00:54:35.54(GpxOT2yi.net)
448デフォルトの名無しさん
2020/09/02(水)23:08:34.85(KTyhBksd.net)
449デフォルトの名無しさん
2020/09/02(水)23:31:10.43(KTyhBksd.net)
450デフォルトの名無しさん
def f(s,d)
eval("['"+s.gsub(d,"','")+"']")
end
p f("1 2 3 4"," ")
実行結果
["1", "2", "3", "4"]
2020/09/03(木)16:10:13.26(dE9fk8zR.net)
451蟻人間 [sage]
2020/09/03(木)19:41:51.27(0EoV326K.net)
452蟻人間 ◆T6xkBnTXz7B0 [sage]
追記。逆変換器も作って動作することを確認せよ。
2020/09/03(木)19:46:20 0EoV326K.net
453デフォルトの名無しさん [sage]
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
2020/09/03(木)21:11:58.06(97aiR77+.net)
454デフォルトの名無しさん [sage]
f("'", ?,)
# =>SyntaxError: (eval):1: unterminated string meets end of file
[''']
^
(eval):1: syntax error, unexpected end-of-input, expecting ']'
2020/09/03(木)23:01:51.02(ZdR77D/Z.net)
455253 [sage]
print map{qw(ヒ タ)[$_]} map{split '', sprintf '%08b', ord} split'','Hello word';
実行結果
~ $ perl 18_443_タヒ.pl
ヒタヒヒタヒヒヒヒタタヒヒタヒタヒタタヒタタヒヒヒタタヒタタヒヒヒタタヒタタタタヒヒタヒヒヒヒヒヒタタタヒタタタヒタタヒタタタタヒタタタヒヒタヒヒタタヒヒタヒヒ
2020/09/04(金)00:01:38 7q8p4uRD.net
456デフォルトの名無しさん
2020/09/04(金)00:03:39 0wfgbo8M.net
457253 [sage]
2020/09/04(金)00:04:27 gbrpP/bR.net
458デフォルトの名無しさん [sage]
Elixir。CP932 が無いので、途中までしか出来ません!
# 8桁・2進数・0埋め
_ = 'abc'
|> Enum.map( fn char -> :io.format( "~8.2.0B", [ char ] ) end )
# 01100001_01100010_01100011
2020/09/04(金)14:52:11.79(Wl7qFIBb.net)
459デフォルトの名無しさん
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
2020/09/04(金)23:27:10.30(1jfeDIRi.net)
460253 [sage]
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
2020/09/04(金)23:39:14.02(tinAGSqp.net)
461デフォルトの名無しさん
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
2020/09/05(土)15:41:23.97(dAk5cbFF.net)
462デフォルトの名無しさん [sage]
左から右へ、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
2020/09/05(土)15:42:06.74(gCThzAly.net)
463デフォルトの名無しさん [sage]
2020/09/05(土)15:55:10.03(gCThzAly.net)
464デフォルトの名無しさん [sage]
Tが10^5-1のときのマスの点数を求める(そこに客がいたなら1、いなかったら0
更にそこから次の時間に移動可能なマスの最大の点数のものを加える)
Tが1までくり返す
これで良さそうな気がするけど書くのがめんどくさい
2020/09/05(土)17:01:13.99(4vfoT7Xn.net)
465デフォルトの名無しさん [sage]
2020/09/05(土)17:35:24.39(s0GYNWbk.net)
466デフォルトの名無しさん
2020/09/05(土)18:43:21.60(EHHCviTW.net)
467デフォルトの名無しさん [sage]
文字数とバイト数を適当に出力
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
2020/09/05(土)19:37:20.09(PsWvtVS4.net)
468デフォルトの名無しさん
2020/09/05(土)19:47:45.16(EHHCviTW.net)
469453 [sage]
他の方法では、簡単すぎるので
2020/09/05(土)21:41:42 dAk5cbFF.net
470デフォルトの名無しさん [sage]
2020/09/05(土)21:46:41 qef5ttAc.net
471デフォルトの名無しさん [sage]
もう一度訊くけど,
ほんとに「バイト数」を求めたいの?
だったら
$ echo ' あaθ💀xΩ死🄫 ' | wc -c
これで一瞬だけど。
文字数なら,UTF-8を扱える言語で数えるか,
POSIX shでやるなら……面倒だな……。
https://gist.github.com/cmplstofB/0b0ce2bf052b3bb64d091fc83504fc32#file-u8dec-sh
こういうの使えばいいかな。
なお,wc -mはPOSIXでは必ずしも
UTF-8文字列を扱えるとは既定されていないので今回の目的には適さない。
2020/09/05(土)22:24:40.63(s0GYNWbk.net)
472デフォルトの名無しさん [sage]
2020/09/05(土)22:25:44.48(s0GYNWbk.net)
473デフォルトの名無しさん [sage]
2020/09/05(土)22:49:41.81(BjVkDMA6.net)
474253 [sage]
($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
2020/09/06(日)00:11:00 Lo+HJN6n.net
475253 [sage]
2020/09/06(日)00:30:27 WEZ/j7UH.net
476デフォルトの名無しさん
Kotlin
https://paiza.io/projects/N9X2CVAQj3NJ0RXPrk7i0g
区切りは文字列で指定出来るとか、大文字小文字無視とか、最大分割数を決められるだとか、色々と機能を追加してしまった。
2020/09/06(日)00:34:53.48(T9SJW9BR.net)
477デフォルトの名無しさん
4999の逆数を小数点 以下48桁まで求める。
2020/09/06(日)03:34:19.13(0eLnTbkJ.net)
478デフォルトの名無しさん [sage]
2020/09/06(日)07:27:16.04(+WaXk/Ri.net)
479デフォルトの名無しさん [sage]
2020/09/06(日)08:14:24.88(CxoRMtYI.net)
480デフォルトの名無しさん
2020/09/06(日)09:37:57.61(yqdZF37w.net)
481デフォルトの名無しさん [sage]
2020/09/06(日)10:17:30.08(uXWEOXeO.net)
482デフォルトの名無しさん [sage]
2020/09/06(日)10:30:03.37(r+7yP+3C.net)
483デフォルトの名無しさん
競技性は無い
2020/09/06(日)10:58:30.52(5MBR0P77.net)
484デフォルトの名無しさん [sage]
2020/09/06(日)11:04:38.70(OF7UMaiS.net)
485デフォルトの名無しさん [sage]
2020/09/06(日)11:07:12.07(uXWEOXeO.net)
486デフォルトの名無しさん [sage]
いや,総当たりなら,3^(10^5)。
時刻が1--10^5までの間に,
「留まる」「右/左に移動する」の計3通りを
互いに独立に(以前の行動に影響されずに)
行うから。
書いていて思ったけど,端に居るときは
行動可能性が2通りに減るけど,
それでも2^N通りでは済まない。
2020/09/06(日)11:29:22.40(r+7yP+3C.net)
487253 [sage]
2020/09/06(日)12:24:42.87(cAaPNRIA.net)
488デフォルトの名無しさん [sage]
1人が満足することで1点得るとする
点数の最大値は入力されたnの数しかないからn点で
それぞれについて1点得るか得ないかの2^nしかない
あとはそれを実現できるか移動があるかどうかが焦点になる
なので全移動経路を総当りする必要性はない
2020/09/06(日)12:31:12.27(OF7UMaiS.net)
489デフォルトの名無しさん [sage]
#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
2020/09/06(日)13:12:26.24(GcXxHJb3.net)
490デフォルトの名無しさん [sage]
I see! Thanks.
2020/09/06(日)13:48:19.34(r+7yP+3C.net)
491デフォルトの名無しさん [sage]
2020/09/06(日)15:12:48.21(JPL9qi8o.net)
492デフォルトの名無しさん [sage]
経路に沿ってではなくて状態について解いていく
2020/09/06(日)15:20:10 JPL9qi8o.net
493デフォルトの名無しさん
2020/09/06(日)16:31:54 SNogxihD.net
494デフォルトの名無しさん [sage]
2020/09/06(日)16:34:17 r+7yP+3C.net
495デフォルトの名無しさん [sage]
2020/09/06(日)16:57:26.53(JPL9qi8o.net)
496デフォルトの名無しさん
2020/09/06(日)17:01:50 SNogxihD.net
497デフォルトの名無しさん [sage]
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--){
こうするのが正しいと思う
2020/09/06(日)17:02:55 JPL9qi8o.net
498253 [sage]
$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
2020/09/06(日)18:02:02 EhLQImvS.net
499デフォルトの名無しさん [sage]
2020/09/06(日)18:12:25.67(OF7UMaiS.net)
500デフォルトの名無しさん [sage]
2020/09/06(日)18:13:41.84(65q5IvB9.net)
501253 [sage]
2020/09/06(日)18:20:26.24(EhLQImvS.net)
502253 [sage]
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
2020/09/06(日)19:04:52.54(EhLQImvS.net)
503253 [sage]
2020/09/06(日)19:13:46.76(EhLQImvS.net)
504465 [sage]
ご指摘の通りバグってたので再投稿します。
https://ideone.com/VxDLwz
やりたかったことは>>464が言っていることと全く同じです。
イメージとしては(画像) (※お題を考えたい人は閲覧注意)
>>473のコードは大抵の場合なぜかうまくいくコードのようです。
2020/09/06(日)20:59:44 I1QXsub5.net
505253 [sage]
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);
2020/09/06(日)21:09:12 loE/lDca.net
506253 [sage]
~ $ 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
2020/09/06(日)21:11:43.16(loE/lDca.net)
507253 [sage]
use bignum(p=>-48);
print 1/4999, "\n";
実行結果
$ perl 18_468_1_4999-48p.pl
0.000200040008001600320064012802560512102420484097
2020/09/07(月)00:59:21.14(5qB4CD7g.net)
508453 [sage]
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バイト
2020/09/07(月)18:47:15.23(IF51aHwX.net)
509デフォルトの名無しさん
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/
2020/09/08(火)01:49:37.96(L2ZCtfX62)
510デフォルトの名無しさん
2020/09/08(火)22:13:29.34(r41CjiKh.net)
511253 [sage]
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])
2020/09/08(火)23:15:40.17(TMzoRSJV.net)
512253 [sage]
~ $ 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
2020/09/08(火)23:16:27.70(TMzoRSJV.net)
513253 [sage]
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
2020/09/09(水)09:03:14 GqQ7+Mc6.net
514253 [sage]
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が大きいと大勢に影響はないな…
2020/09/09(水)09:34:15.87(GqQ7+Mc6.net)
515デフォルトの名無しさん
2020/09/10(木)01:27:25.37(8z9ZctT6.net)
516453
>>461
のルールに基いて、以下の3つの10進数のバイト列を、先頭(1バイト目)からチェックしていく時、
最初にルール違反となるのは、何バイト目か
129 130
120 169
240 159 146 206 184
2020/09/10(木)16:14:51.93(ypm5ktrY.net)
517デフォルトの名無しさん
2020/09/10(木)22:23:57.36(8z9ZctT6.net)
518デフォルトの名無しさん [sage]
2020/09/12(土)21:24:36.97(2KEhs3KT.net)
519デフォルトの名無しさん
2020/09/13(日)00:20:13.60(OR+CcCGz.net)
520デフォルトの名無しさん
2020/09/13(日)00:35:46.34(42xWDo9L.net)
521蟻人間 [sage]
ジャンケンをしたい人が集まって、ひたすらジャンケンをして、勝ち数を競うというソーシャルゲーム。
ジャンケン試合は2人組になり、お互いに出す手を事前に申告し、両者が申告したところでシステムが自動で勝敗を判定する。
2020/09/13(日)22:12:25.49(p9JSm0uj.net)
522デフォルトの名無しさん [sage]
消えろ
2020/09/13(日)22:17:50.99(phcl8RYj.net)
523デフォルトの名無しさん
2020/09/13(日)22:22:25.86(lu6eiMc4.net)
524デフォルトの名無しさん [sage]
Haskell
f x = head [ d | d <- [(ceiling $ sqrt $ fromInteger x)..], mod x d == 0]
main = mapM_ print [(x,f x) | x<-[100..130]]
2020/09/14(月)12:06:08.48(u8/qg5cq.net)
525蟻人間 [sage]
しかし、記事の執筆に多数の編集者が関わったため、シークワーサーの表記がぶれていることが分かった(次のリンクを参照)。
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」を出力せよ。
2020/09/14(月)14:12:59.44(/Fwk/gkb.net)
526デフォルトの名無しさん
間違いない
2020/09/14(月)17:05:19.85(xV8mpaUY.net)
527蟻人間 [sage]
「シークヮーサーは、別名シイークワシャーと呼ばれ、シークヮーサーの香りがするシークヮーシャーのような柑橘系の果物である。シィークアーサーはアーサー王とは関係がないと思われる。」
2020/09/14(月)17:29:10.23(yesAwSRz.net)
528デフォルトの名無しさん [sage]
2020/09/14(月)18:00:53.92(wBiJ2Dx0.net)
529蟻人間 [sage]
任意の桁数の10進整数を扱えること。
任意の有効桁数の10進小数を扱えること(10進浮動小数点数)。
加減乗除、剰余、任意桁での切り捨て・切り上げ・四捨五入が可能。
10進数表記で入出力できること。
比較的高速に演算できること。
2020/09/14(月)20:32:57.79(/Fwk/gkb.net)
530蟻人間 [sage]
2020/09/14(月)20:55:28.62(/Fwk/gkb.net)
531デフォルトの名無しさん
2020/09/14(月)21:04:18.95(I0h6BMX6.net)
532デフォルトの名無しさん
2020/09/14(月)21:07:19.27(I0h6BMX6.net)
533デフォルトの名無しさん [sage]
草
2020/09/14(月)21:08:24.84(SHGAz9ig.net)
534デフォルトの名無しさん [sage]
2020/09/14(月)21:24:52.09(6FD493+N.net)
535デフォルトの名無しさん [sage]
2020/09/14(月)21:26:17.95(6FD493+N.net)
536デフォルトの名無しさん [sage]
精度の面で面倒なことになるぞ
2020/09/14(月)21:49:38.28(SHGAz9ig.net)
537蟻人間 [sage]
2020/09/14(月)23:12:41.48(yesAwSRz.net)
538デフォルトの名無しさん [sage]
一生ここまでにしろ
2020/09/14(月)23:41:27.65(5nyvo7WN.net)
539デフォルトの名無しさん
sed -r 's/シ([イィ]ー?|ー)ク[アァワヮ]ー?(サ|シャ)ー/シークワーサー/g'
-r は拡張正規表現を使うオプション。
これで >>527 の文を変換するとこうなる。
「シークワーサーは、別名シークワーサーと呼ばれ、シークワーサーの香りがするシークワーサーのような柑橘系の果物である。シークワーサ ーはアーサー王とは関係がないと思われる。」
2020/09/15(火)00:21:13.43(2J2Mo0F/.net)
540蟻人間 [sage]
残りは四捨五入とか銀行丸めなどの端数処理。
2020/09/15(火)02:31:45.89(39uvi0pE.net)
541デフォルトの名無しさん [age]
2020/09/15(火)09:10:08.88(gc4PCUOV.net)
542デフォルトの名無しさん [sage]
他の言語から使いたい場合はライブラリをリンクするか、またはこっそり裏で fork(), exec() してパイプで繋いで計算させるw
2020/09/15(火)14:07:27.97(2J2Mo0F/.net)
543蟻人間 [sage]
2020/09/15(火)21:40:23.58(9dtbuAF3.net)
544デフォルトの名無しさん [sage]
誰も待ってないから一生滞ってろ
2020/09/15(火)21:59:54.94(ky+PawN1.net)
545蟻人間 [sage]
スレチ
2020/09/15(火)22:50:58.78(i370J0Ri.net)
546蟻人間 [sage]
とりあえずまあソースコードを読んで頂いてクレヨン。
2020/09/15(火)22:54:46.37(i370J0Ri.net)
547デフォルトの名無しさん [sage]
スレチはお前
2020/09/15(火)22:56:56.50(ky+PawN1.net)
548デフォルトの名無しさん [sage]
2020/09/16(水)10:06:16.52(eJDvfDFO.net)
549デフォルトの名無しさん [age]
2020/09/16(水)21:28:53.90(XXyygoNj.net)
550デフォルトの名無しさん [sage]
2020/09/17(木)00:07:22.39(jOQPl4C7.net)
551デフォルトの名無しさん [sage]
2020/09/17(木)01:09:05.65(FJaokp+J.net)
552デフォルトの名無しさん
座標テキストとバックグラウンドは同じサイズ(とりあえず横4縦3とする)
background
┏┓┏┓
┃┗┛┃
┗━━┛
座標テキスト
ab23
9014
8765
座標が
0なら
┏┓┏┓
┃*┛┃
┗━━┛
6なら
┏┓┏┓
┃┗┛┃
┗━*┛
11なら
┏*┏┓
┃┗┛┃
┗━━┛
あまり綺麗な実装が出来なかったから問題にした https://repl.it/@vip0/analogclock#index.js
2020/09/17(木)07:37:06.63(Lu9ZyyRf.net)
553デフォルトの名無しさん [sage]
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 )
2020/09/17(木)08:03:03.74(dVFtUKnH.net)
554デフォルトの名無しさん [sage]
何やってんだ俺
ありがとう
2020/09/17(木)08:08:23.20(Lu9ZyyRf.net)
555デフォルトの名無しさん
問題の意味がわからない。
2020/09/17(木)13:17:16.17(GTUBgTcD.net)
556デフォルトの名無しさん [sage]
くだらない質問スレか初心者質問スレ行け
2020/09/17(木)13:30:29.78(/h1W7gqa.net)
557デフォルトの名無しさん [sage]
本当にすいませんでした
2020/09/17(木)13:34:08.96(Lu9ZyyRf.net)
558デフォルトの名無しさん [sage]
全く質問したかったわけじゃないのはわかってほしい
二次配列じゃないと処理できないものだと勘違いしていたのが甘いしシンプルにしすぎて問題が破綻してしまった
2020/09/17(木)13:42:30.73(Lu9ZyyRf.net)
559デフォルトの名無しさん [sage]
たまに驚くべき角度から解を出す人もいるしマイナーなアルゴリズムも知れて尊敬してる
今回もスマートなコードが見れるんじゃないかと純粋に期待して問題にしてみたんだ
スレも今流れ遅かったし
2020/09/17(木)13:48:33.25(Lu9ZyyRf.net)
560デフォルトの名無しさん [sage]
純粋に問題作成初心者の心を無碍にして
鋭い刃のような言葉を投げつけてきた
お前らは今日から敵とみなす
あばよ😎✋絶望しな
2020/09/17(木)13:50:39.09(Lu9ZyyRf.net)
561 [sage]
奏ちゃん「自意識過剰なんじゃないですか?」
2020/09/17(木)19:40:19.09(+AujTTfU.net)
562デフォルトの名無しさん
入力
IB0AAYR8ZZcUXLxKmL1ow8RxZAAUCS1j6pYOJo9n52mwITWoimM3UArCpKAGzSRZrA1vUpAerENynuJXTYuJb9HlO9NZvHdpFvCMsThVOnxhgx3T5jCfRhanH4bJJOvjoaTMdixKg4TC90zOCwyeVKJ62KAgv47P72sfPsQaH8jaG8yWnqbwtyv0OeKZa7qISm6g2MHrOlNb8RVzt36jau1hYCqKuuUBGLGuFToYptzqjkfdAoxAqqmeQO7PVcUS
出力
IB0AAYR8ZZcUXLxKmL1ow8RxZAAUCS1j6pYOJo9n52mwITWoimM3UArCpKAGzSRZrA1vUpAerENynuJXTYuJb9HlO9NZvHdpFvCMsThVOnxhgx3T5jCfRhanH4bJJOvjoaTMdixKg4TC90zOCwyeVKJ62KAgv47P72sfPsQaH8jaG8yWnqbwtyv0OeKZa7qISm6g2MHrOlNb8RVzt36jau1hYCqKuuUBGLGuFToYptzqjkfdAoxAqqmeQO8PVcUS
2020/09/17(木)22:33:12.99(H8Ldt8Jg.net)
563デフォルトの名無しさん [sage]
2020/09/17(木)22:56:25.54(ockp6LF+.net)
564デフォルトの名無しさん [sage]
$><<gets.sub(/\d+(?=\D+$)/, &:succ)
# => IB0AAYR8ZZcUXLxKmL1ow8RxZAAUCS1j6pYOJo9n52mwITWoim
M3UArCpKAGzSRZrA1vUpAerENynuJXTYuJb9HlO9NZvHdpFvCMsThVOn
xhgx3T5jCfRhanH4bJJOvjoaTMdixKg4TC90zOCwyeVKJ62KAgv47P72sfP
sQaH8jaG8yWnqbwtyv0OeKZa7qISm6g2MHrOlNb8RVzt36jau1hYCqKuu
UBGLGuFToYptzqjkfdAoxAqqmeQO8PVcUS
2020/09/17(木)23:01:20.65(ockp6LF+.net)
565デフォルトの名無しさん
Perl
コマンドラインで以下のように入力後に標準入力から文字列を読ませると標準出力に出力される。
perl -pe 's/(\d+)(\D+)$/(+1)./ge'
あるいはファイルに内容を入れておいてそのファイルを指定する。
2020/09/18(金)01:44:05.02(hhldwLbP.net)
566デフォルトの名無しさん [sage]
window.prompt().replace(/\d(?=\D+$)/,i=>i*1+1)
2020/09/18(金)03:22:29.90(Pz26zoiQ.net)
567デフォルトの名無しさん [sage]
2020/09/18(金)06:23:31.29(QICqPxzN.net)
568デフォルトの名無しさん [sage]
2020/09/18(金)06:53:31.48(5l49iFOd.net)
569デフォルトの名無しさん
2020/09/18(金)21:10:31.47(JxxZTRpA.net)
570デフォルトの名無しさん
2020/09/18(金)21:36:05.11(JxxZTRpA.net)
571デフォルトの名無しさん [sage]
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
2020/09/18(金)21:54:28.27(WsEcPr9A.net)
572デフォルトの名無しさん
そうだった。 + じゃなくて * だったな。
2020/09/18(金)23:21:52.09(hhldwLbP.net)
573253 [sage]
2020/09/18(金)23:34:45.95(/yEGF/vF.net)
574253 [sage]
因数のうちイチバン大きいものでは、ダメだわ
2020/09/18(金)23:36:27.35(/yEGF/vF.net)
575デフォルトの名無しさん
2020/09/19(土)00:05:40.30(HLFklpM8.net)
576デフォルトの名無しさん [sage]
2020/09/19(土)00:59:21.89(HX0Lirqs.net)
577デフォルトの名無しさん [sage]
数学板の問題より
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"]
2020/09/19(土)12:14:05.54(iLwsU5Ay.net)
578デフォルトの名無しさん [sage]
わけわからん問題文にするなよ・・・
2020/09/19(土)15:12:41.86(BWMKzapi.net)
579デフォルトの名無しさん [sage]
2020/09/19(土)16:07:21.18(wSOXcncc.net)
580デフォルトの名無しさん
君が何を言わんとしているのかが全くわからない。
2020/09/19(土)16:29:35.90(HLFklpM8.net)
581253 [sage]
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
計算量の少ないもう少しカッチョイイ方法を見出せればなぁ…
2020/09/19(土)17:15:41.66(6KnxgpBj.net)
582デフォルトの名無しさん [sage]
2020/09/19(土)21:37:57.70(HX0Lirqs.net)
583デフォルトの名無しさん [sage]
計算量減らすなら√n以下の最大の約数d求めてn/dを出力すれば計算量は減るな
2020/09/19(土)21:39:46.15(HX0Lirqs.net)
584デフォルトの名無しさん [sage]
2020/09/19(土)21:40:46.29(wSOXcncc.net)
585デフォルトの名無しさん [sage]
√n以上の約数と√n以下の約数は同数だけど整数そのものは下側には√nしかなく、上にはn-√nあるので下向きに探していった方が速い
2020/09/19(土)21:46:21.17(HX0Lirqs.net)
586デフォルトの名無しさん [sage]
素数判定と組み合わせればモンテカルロ法ではなくラスベガス法になるから、正当性も担保される
2020/09/20(日)00:25:54.87(ZGoKBb8Y.net)
587デフォルトの名無しさん [sage]
それを何個か使って最も√nに近いもの探すのはかなり難しいんじゃなかったっけ?
つまり素因数分解n=Πpi^eiが与えられたとして、つぎは
0≦xi≦eiを動かすときΣxi log(pi) が1/2 log(n)に最も近くなるものを決定しなければならない
コレなんか名前ついてる問題で指数オーダーのアルゴリズムしか見つかってないんじゃなかったっけ?
素因子の数はlog(n)のオーダーで増えていくから、結局exp(c log(n)) のオーダーになって、cがどれくらいに収められるか、そもそも指数オーダー必要なのかも未解決なんじゃなかったっけ?
2020/09/20(日)01:39:54.18(wHMtOvf4.net)
588デフォルトの名無しさん [sage]
素数判定はそもそも計算量少ない
2020/09/20(日)06:22:49.81(OZ4qNDWZ.net)
589デフォルトの名無しさん [sage]
√n以上の最小の約数をdとして上むき探索に必要な時間はすうがく/d-√n\、下向き探索のそれは\√n-n/d/ (/〜\と\〜/はfloorとceiling)
差は/d-√n\-\√n-n/d/ =\d+n/d-2√n/はam≧gmと\〜/の広義単調性から0以上で上むき探索は素数であるか否かに限らず常に計算量は同じかそれ以上
素数であるか予備検査しても結局上向きに探索したら計算量は同じ以上かかる
2020/09/20(日)10:19:03.22(mk/D54YH.net)
590デフォルトの名無しさん [sage]
上向き探索の探索量はd-/√n\+1=/d-√n+1\で/~\はceiling
下向き探索の探索量は\√n/-n/d+1=\√n-n/d+1/で\~/はfloor
まぁ常に上向きの方が計算量は増える
まぁもちろんnをまともに素因数分解して>>587みたいな方法で√nオーダーより真に早いのがあるなら上向きも下向きもないけど、もうそこまで行ったら研究者レベルの話でしかない気がする
2020/09/20(日)10:50:48.99(g28HruB5.net)
591デフォルトの名無しさん
短いこの間でダークサイドに堕ちてて草
2020/09/20(日)11:23:17.24(MLu0Cj9r.net)
592デフォルトの名無しさん [sage]
2020/09/20(日)11:58:05.82(FaUtZa6z.net)
593デフォルトの名無しさん
2020/09/20(日)12:47:09.77(MLu0Cj9r.net)
594デフォルトの名無しさん [sage]
自然数nに対して格子点の集合{(a,b) | a,bは1〜nの整数}の中の相異なる4点の組みで同一円周上に並ぶものの個数を数え上げよ
n:1〜8では
[0,1,14,194,826,2491,6364,14564]
のハズ
2020/09/20(日)12:59:00.77(wHMtOvf4.net)
595デフォルトの名無しさん [sage]
2020/09/20(日)13:05:52.02(wHMtOvf4.net)
596デフォルトの名無しさん [sage]
2020/09/20(日)18:36:43.29(XyOg3AIQ.net)
597デフォルトの名無しさん [sage]
2020/09/20(日)18:44:44.75(XyOg3AIQ.net)
598デフォルトの名無しさん [sage]
2020/09/20(日)18:56:48.73(wHMtOvf4.net)
599デフォルトの名無しさん [sage]
2020/09/20(日)19:10:27.22(wHMtOvf4.net)
600デフォルトの名無しさん
問題がわからない。
2020/09/20(日)22:46:33.41(9sb+TTLg.net)
601デフォルトの名無しさん [sage]
n=3だと
●●◯ ◯●● ◯◯◯ ◯◯◯
●●◯ ◯●● ●●◯ ◯●●
◯◯◯ ◯◯◯ ●●◯ ◯●●
●◯● ◯◯◯ ●●◯ ◯●●
●◯● ●◯● ◯◯◯ ◯◯◯
◯◯◯ ●◯● ●●◯ ◯●●
●●◯ ◯●● ◯◯● ●◯◯
◯◯● ●◯◯ ◯◯● ●◯◯
◯◯● ●◯◯ ●●◯ ◯●●
●◯● ◯●◯
◯◯◯ ●◯●
●◯● ◯●◯
の14通り
2020/09/21(月)00:11:09.46(ZXxiMs6i.net)
602デフォルトの名無しさん [sage]
平面上に4点を選んだとき、その4点をすべて含む円周が存在する場合としない場合がある
xy平面上に、x,yの各座標が1〜nの整数であるような、互いに異なる点を4つ選んだとき、4点すべてを含む円周が存在するものがいくつあるか?
n=1〜8についてそれぞれ数え上げよ
(註:n=1のときは異なる4点を選べないので、解は0でよい)
ってことでいいかな?
2020/09/21(月)11:36:08.07(VFD1LGbi.net)
603デフォルトの名無しさん [sage]
2020/09/21(月)13:45:14.08(tVxoOCVr.net)
604デフォルトの名無しさん [sage]
正解だと思う
おそらくn=9までは
[0,1,14,184,762,2257,5704,13040,25996]
今作ってるのはC[n^2,4]を全数検査してるのでO(n^8)で計算量増えるので二桁以上はしんどいorz
2020/09/21(月)14:54:29.54(/KyZWHiy.net)
605デフォルトの名無しさん
2020/09/22(火)00:03:46.43(jIz1rAqD.net)
606253 [sage]
解決すべき課題は計算量の削減ばかりではないだろうけれどさ
2020/09/22(火)02:15:18.79(jDcMk3G3.net)
607デフォルトの名無しさん [sage]
数学板でこの手のプログラムが必要になるのは誰も答え持ってなくて、一応答えは出てるけど確認したいときとか
その時は速度より“確実に正しい”事の方が重要になる
この場合も対称性やら、明らかに無駄な可能性を排除すれば速度は上がるけど“確実に正しい”のかは怪しくなってしまう
実務でプログラム使う人もその辺のtpoは意識してるのでは?、
コード汚くても高速な奴も募集中
2020/09/22(火)09:28:15.64(yucbsR+t.net)
608デフォルトの名無しさん [sage]
そのうち、円の中心が図の中央にあるものは、候補となる点が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 通りと数え上げることができる
図の中央を基準にすることができるものばかりとは限らないところには注意が必要だが
総当たりよりは効率化が見込めると思われる。
2020/09/22(火)11:56:55.93(LgsCAwYw.net)
609253 [sage]
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
もっとスマートな解法を考えていると双曲線を意識した解法を意識してしまうが、
簡単には解けない数学の問題に突き当たると思う
2020/09/28(月)22:51:28.57(mT2w1+AU.net)
610253 [sage]
2020/09/28(月)22:53:47.02(mT2w1+AU.net)
611デフォルトの名無しさん [sage]
2020/09/29(火)18:23:40.44(TPx3FsW2.net)
612253 [sage]
2020/09/29(火)23:24:18.49(219xwwXO.net)
613デフォルトの名無しさん [sage]
2020/09/30(水)20:15:38.19(rtPyMlCZ.net)
614デフォルトの名無しさん [sage]
アッカーマン関数の引数が与えられるので、計算過程を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
2020/10/01(木)01:25:55.75(cJ6xF5hb.net)
615デフォルトの名無しさん [sage]
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
2020/10/01(木)11:20:33.49(iee67Noq.net)
616デフォルトの名無しさん
2020/10/01(木)12:09:11.51(OaA9a4hN.net)
617デフォルトの名無しさん [sage]
2020/10/01(木)12:15:24.40(O+PWz9pR.net)
618デフォルトの名無しさん [sage]
ちょっとチューンナップ
達人なら***とか>>>とか意味わからん演算子使ってもっとスッキリ書くんだろうけどアホほどあって使いこなせん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
2020/10/01(木)14:04:34.18(Am+nhG+G.net)
619蟻人間 [sage]
2020/10/02(金)19:50:35.06(gQLwfaGp.net)
620デフォルトの名無しさん [sage]
2020/10/02(金)20:54:50.29(tP403VLl.net)
621253 [sage]
─┼─┐─┼─ / ,. `゙''‐、_\ | / /
│ │─┼─/| _,.イ,,.ィ' ─────‐‐‐ * ←>>蟻人間
│ |ツ │ | | | イン /´⌒`ヽ // | \
{, リ) / ./ | \
__ /}从、 リ( / / |
,. ,. -‐===‐- `つ/ ,.イ ’^ソハノリ / ∵|:・.
〃〃〃〃 //ミノ__ /´ /∴・|∵’
ヽ_I__I__I__I__I_I __ノ_/ / ヽミ、、 .∵.;|∵’:;
ー{____,,二二二ニ) ノΘ(__ ) ゙ 、∵.;|∵’,
/I I I I I I .^^^' \ !  ̄フ ゙ 、 |∴
ソ / `
ノ⌒ヽ')
/ ノ/ /
/\/ ∧/ / ',
/ / ノ./ ./ ',
ノ/ ヘ__、 ./ / ̄ ̄ ̄ヽ .',
ヘ_'_, / \ / ',
/ \/ ',
゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙ ゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙
2020/10/02(金)21:41:56.95(kl4hmyt8.net)
622デフォルトの名無しさん [sage]
2020/10/02(金)21:46:15.88(JDxjQVnw.net)
623デフォルトの名無しさん [sage]
くっそワロタ
2020/10/02(金)22:04:39.76(jsz+6t1Q.net)
624253 [sage]
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
2020/10/03(土)01:10:19.52(io8Ij0O0.net)
625253 [sage]
2020/10/03(土)01:13:51.37(io8Ij0O0.net)
626デフォルトの名無しさん [sage]
2020/10/03(土)12:07:42.48(xbar0BlH.net)
627デフォルトの名無しさん [sage]
2020/10/03(土)12:20:08.70(nr2+4P+J.net)
628デフォルトの名無しさん [sage]
2020/10/03(土)12:37:17.41(MOu6VxbM.net)
629デフォルトの名無しさん [sage]
入力もらって表示→ワンステップだけ展開して戻る
の繰り返しが1番楽なんだけどなぁ
2020/10/03(土)12:46:20.34(ul2MWjNf.net)
630253 [sage]
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))
2020/10/03(土)14:01:25.06(5WkJC33J.net)
631デフォルトの名無しさん [sage]
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
2020/10/03(土)18:00:38.18(WWjeAKvH.net)
632デフォルトの名無しさん [sage]
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));
2020/10/07(水)20:33:26.90(0TsEuxhN.net)
633253 [sage]
気に入った。
2020/10/08(木)02:27:24.66(Gy7CYzaJ.net)
634蟻人間 [sage]
2020/10/08(木)13:59:34.65(N89hoMl4.net)
635デフォルトの名無しさん [sage]
あるいは小数点以下何桁まで正確に求めるのか?
2020/10/08(木)15:03:23.36(eK30Q5Ei.net)
636蟻人間 [sage]
浮動小数点数でいいよ。
2020/10/08(木)15:04:48.84(N89hoMl4.net)
637デフォルトの名無しさん [sage]
2020/10/08(木)21:36:29.64(Q4ykcHSC.net)
638蟻人間 [sage]
文章テンプレートの例:
「ツルとカメが合わせて{$(ツルの数)+$(カメの数)}います。
足の合計本数が{$(ツルの数)*2+$(カメの数)*4}本です。
カメは何匹いますか。」
変数は「$(変数名)」のように表し、その具体的な値は入力として与えられる。
計算式は{ }で囲って表す。
計算式は変数や定数、加減乗除の演算子、または丸カッコを含むことができる。
入力の例:「ツルの数=3, カメの数=4」
2020/10/09(金)13:26:20.64(pUAVGuih.net)
639デフォルトの名無しさん
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 ]
2020/10/09(金)14:02:14.80(/NdRCF04.net)
640蟻人間 [sage]
追記: パーサーを作れない人はevalを用いても構わない。
2020/10/09(金)14:14:06.07(LR5flFjI.net)
641デフォルトの名無しさん
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 ]
2020/10/09(金)14:14:59.57(/NdRCF04.net)
642デフォルトの名無しさん [sage]
ツルの数 = 3
カメの数 = 4
Template =<<_EOT_
「ツルとカメが合わせて{$(ツルの数)+$(カメの数)}います。
足の合計本数が{$(ツルの数)*2+$(カメの数)*4}本です。
カメは何匹いますか。」
_EOT_
puts Template.gsub( /\{(.*?)\}/ ){ eval .gsub( /$\((.*?)\)/ ){ } }
2020/10/09(金)17:52:52.10(gniylpO4.net)
643253 [sage]
use utf8;
no warnings 'utf8';
$ツルの数 = 3;
$カメの数 = 4;
print <<EOF
「ツルとカメが合わせて@{[${ツルの数}+${カメの数}]}います。
足の合計本数が@{[${ツルの数}*2+${カメの数}*4]}本です。
カメは何匹いますか。」
EOF
実行結果
~ $ perl 18_633_ツルの数+カメの数.pl
「ツルとカメが合わせて7います。
足の合計本数が22本です。
カメは何匹いますか。」
2020/10/09(金)22:43:14.04(/QeZd0d9.net)
644蟻人間 [sage]
2つの中間色を#RRGGBB形式で出力せよ。
可能ならばこれら3つの色をカラーバーとして表示せよ。
2020/10/09(金)23:14:45.18(LR5flFjI.net)
645蟻人間 [sage]
2020/10/09(金)23:26:06.11(LR5flFjI.net)
646デフォルトの名無しさん [sage]
自明な入力例だけを示しても、出力例も出さないと意味ないだろう。
2色の中間色ってのが曖昧じゃね?
単にR,G,Bそれぞれの平均を取るだけなのか、赤と紫の中間が赤紫になるように循環する色相で中間をとるのかとか。
2020/10/09(金)23:55:14.23(ACx6TREf.net)
647デフォルトの名無しさん [sage]
2020/10/10(土)02:56:37.74(KFXrJR76.net)
648デフォルトの名無しさん [sage]
>変数は「$(変数名)」のように表し、
2020/10/10(土)07:06:51.16(PdovQueR.net)
649デフォルトの名無しさん [sage]
2020/10/10(土)07:45:17.48(nh4sk35x.net)
650デフォルトの名無しさん [sage]
2020/10/10(土)08:25:49.31(qt6u2bFw.net)
651デフォルトの名無しさん
const t = `
`.charCodeAt()
console.log(t + t + "" + (t + t) + t + t)
const m = "ϲ".charCodeAt()
console.log(m + m + "" + m)
2020/10/10(土)10:53:30.16(nh4sk35x.net)
652デフォルトの名無しさん [sage]
2020/10/10(土)12:06:27.17(0z4oJBva.net)
653デフォルトの名無しさん
2020/10/10(土)14:54:47.61(iOujIiR/.net)
654デフォルトの名無しさん
2020/10/10(土)14:57:00.84(iOujIiR/.net)
655デフォルトの名無しさん [sage]
012にOIZ使うのセンスある
2020/10/10(土)15:40:40.94(Duwb5Fsi.net)
656デフォルトの名無しさん
2020/10/10(土)18:37:22.80(jNM1f0U4.net)
657デフォルトの名無しさん
Windowsでもそのままでいけるのか?
2020/10/10(土)18:54:45.98(V01gi3BN.net)
658蟻人間 [sage]
2020/10/10(土)19:24:31.52(c6WyhNHP.net)
659デフォルトの名無しさん [sage]
2020/10/10(土)19:32:24.80(53GLINoh.net)
660デフォルトの名無しさん [sage]
import Data.Maybe
main = print $ product $ map ((fromJust).(flip lookup (zip ['\t'..] [1..]))) "&myC"
2020/10/10(土)19:46:18.01(LCYuVeVr.net)
661デフォルトの名無しさん [sage]
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)
2020/10/10(土)21:44:48.33(0z4oJBva.net)
662デフォルトの名無しさん [sage]
haskell 改良
unicode = length . tail . (enumFromTo minBound)
main = print $ product $ map unicode "ാᝇ"
2020/10/10(土)23:07:21.98(t1LUP7rm.net)
663デフォルトの名無しさん
2020/10/10(土)23:18:40.46(iOujIiR/.net)
664デフォルトの名無しさん [sage]
[1+1,1-1,1+1,1-1,1,1-1,1,1-1].reduce((acc,n)=>acc+n,'')
2020/10/11(日)00:16:06.04(6GsmNhIZ.net)
665デフォルトの名無しさん
2020/10/11(日)01:54:01.50(eYi6TEVp.net)
666デフォルトの名無しさん
smoutput ,&":/ 'amp' i. 'papamama'
2020/10/11(日)08:58:57.96(luIvAMCe.net)
667デフォルトの名無しさん
aa=1; bb=$((aa-aa)); cc=$aa$bb$aa$bb; printf "%d" $((cc+cc)) $cc; echo
2020/10/11(日)11:20:41.53(eXVrSXVr.net)
668デフォルトの名無しさん
2020/10/11(日)17:59:24.67(/6XslNRS.net)
669デフォルトの名無しさん
2020/10/11(日)18:12:54.16(eYi6TEVp.net)
670デフォルトの名無しさん
Kotlin
https://paiza.io/projects/O1eUwROYKRQepDq3N-VyUA
paiza.io はHTMLで出力させてブラウザに表示できるのでカラーバーも出してみました。
2020/10/11(日)19:16:59.76(/6XslNRS.net)
671デフォルトの名無しさん
2020/10/11(日)19:36:20.38(eYi6TEVp.net)
672デフォルトの名無しさん
2020/10/11(日)19:48:34.94(ki6dTuuo.net)
673デフォルトの名無しさん [sage]
かわいい
2020/10/11(日)20:05:13.72(FQjAt+Dq.net)
674デフォルトの名無しさん [sage]
2020/10/11(日)20:30:57.80(vt3DXswM.net)
675 [sage]
2020/10/11(日)23:30:32.44(A2vGg89g.net)
676蟻人間 [sage]
2020/10/11(日)23:57:26.40(4cQ/GxGI.net)
677デフォルトの名無しさん [sage]
html も、部分的なタグだけを書いても動くのか
2020/10/11(日)23:59:14.77(B+MSoWxK.net)
678蟻人間 [sage]
2020/10/12(月)00:01:01.03(rx5xRSFU.net)
679デフォルトの名無しさん [sage]
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
2020/10/12(月)01:06:07.97(eqKg5iqj.net)
680デフォルトの名無しさん
2020/10/12(月)01:14:47.03(hVCmG980.net)
681デフォルトの名無しさん
二項分布になるんじゃないかなあ
2020/10/12(月)08:18:41.49(fHHXzdlp.net)
682デフォルトの名無しさん
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
稼げない人へ★情報商材こそ稼げない分野が分かる
https://www.youtube.com/watch?v=x_2nSmlx3og
>9割の人は、ただの作業員★自学自習こそ仕事の基本
https://www.youtube.com/watch?v=vIGKDmmBJcs
サラリーマン、10年経てばボンクラ説
https://www.youtube.com/watch?v=QdfVJnVuLlY
2020/10/12(月)16:10:06.27(Wx/lfAmjI)
683デフォルトの名無しさん [sage]
1kHz の音源ファイルを使うのは違反かな?
2020/10/14(水)15:32:12.46(M1NONSBM.net)
684蟻人間 [sage]
2020/10/14(水)17:27:12.50(TNR/wFHW.net)
685デフォルトの名無しさん [sage]
2020/10/14(水)17:57:41.59(qOYZdiW9.net)
686蟻人間 [sage]
2020/10/14(水)18:19:22.34(TNR/wFHW.net)
687蟻人間 [sage]
2020/10/14(水)18:24:27.45(TNR/wFHW.net)
688デフォルトの名無しさん [sage]
Pythonもmacも関係ねぇわ
2020/10/14(水)18:36:34.21(Azmo5ss/.net)
689デフォルトの名無しさん [sage]
2020/10/14(水)19:17:28.35(Y0U/d7P+.net)
690デフォルトの名無しさん
2020/10/14(水)19:30:29.09(pZU5VHHG.net)
691蟻人間 [sage]
2020/10/14(水)19:50:02.82(TNR/wFHW.net)
692デフォルトの名無しさん [sage]
2020/10/15(木)00:45:55.69(BUh584nA.net)
693デフォルトの名無しさん [sage]
へぇその言語ならそんなにキレイに書けるのかとか普段自分が使ってない言語ではどうやって実現できるのか眺めたりするのが面白い
音鳴らすなんてお題として面白いわけがない
2020/10/15(木)01:18:37.79(fqrOjoDi.net)
694デフォルトの名無しさん [sage]
2020/10/15(木)01:40:28.46(S6IC+plr.net)
695デフォルトの名無しさん
文字列を受け取って、RFC 5322にしたがってSubjectヘッダを出力してください(MUST、SHOULDを満たすこと)
文字コードはUTF-8、エンコーディングはBエンコードを使用してください
2020/10/15(木)11:44:28.12(cDg3UiVL.net)
696蟻人間 [sage]
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")
2020/10/15(木)13:28:00.67(s1gNbcw/.net)
697蟻人間 [sage]
2020/10/15(木)13:49:36.74(IXtC9lOP.net)
698デフォルトの名無しさん
いろいろ違うので・・・メールのソース眺めたが良いです
2020/10/15(木)14:30:46.93(cDg3UiVL.net)
699デフォルトの名無しさん [sage]
2020/10/15(木)19:14:52.90(QzXinxJa.net)
700デフォルトの名無しさん
あまり他人の悪口言わない方が良いよ
2020/10/15(木)19:22:03.88(cDg3UiVL.net)
701デフォルトの名無しさん [sage]
2020/10/15(木)19:28:33.00(QzXinxJa.net)
702デフォルトの名無しさん [sage]
eval使えないHaskellerにはいい練習問題になってる
2020/10/15(木)19:29:59.48(MTvivIgb.net)
703デフォルトの名無しさん [sage]
◆QZaw55cn4cの方がまだマシ
2020/10/15(木)19:38:14.90(QzXinxJa.net)
704デフォルトの名無しさん [sage]
2020/10/15(木)19:40:03.02(MTvivIgb.net)
705デフォルトの名無しさん
自然数nを 2進数にした時、 1が連続する個数の最大値を求める。
例
20201016 -> 5
2020/10/16(金)19:48:26.76(2tllxc0n.net)
706デフォルトの名無しさん [sage]
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
2020/10/16(金)20:25:28.88(YQH8/KbW.net)
707デフォルトの名無しさん [sage]
f = ->(n) {n.to_s(2).chars.chunk(&:itself).map {|k, a| k == '1' ? a.size : 0}.max}
2020/10/16(金)21:03:20.03(a9PKFHNt.net)
708デフォルトの名無しさん [sage]
const f = (n = 0) => Math.max(...(n.toString(2).match(/1+/g) ?? ['']).map(m => m.length))
console.log(f(20201016)) //=> 5
2020/10/16(金)21:35:06.98(XtprH8ZD.net)
709253 [sage]
use List::Util max;
print max map{length} sprintf('%b', 20201016) =~ /(1+)/g;
実行結果
$ perl 18_695_bin1.pl
5
2020/10/16(金)23:46:14.30(5gS0lg4h.net)
710デフォルトの名無しさん
2020/10/17(土)00:12:43.05(7ct7R1y+.net)
711デフォルトの名無しさん [sage]
無名関数というインチキ使ってしまったので再挑戦バージョン
import Data.List
main = print $ maximum . map sum . group . map (flip mod 2) . takeWhile (/=0) . iterate (flip div 2) $ 20201016
2020/10/17(土)00:24:53.85(u2s9P3C4.net)
712 [sage]
2020/10/17(土)00:46:45.25(4JRxXuyk.net)
713デフォルトの名無しさん [sage]
n = 20201016
nl = 0
while n > 0
nl = ((nc = (n.odd?)? nc + 1 : 0) > nl)? nc : nl
n >>= 1
end
puts nl
2020/10/17(土)01:58:38.41(S6LboNFt.net)
714デフォルトの名無しさん [sage]
125の時1になった
2020/10/17(土)01:59:32.64(u2s9P3C4.net)
715デフォルトの名無しさん [sage]
2020/10/17(土)02:41:53.51(AbkDXvLA.net)
716 [sage]
2020/10/17(土)02:53:09.41(4JRxXuyk.net)
717703 [sage]
2020/10/17(土)09:22:46.57(S6LboNFt.net)
718デフォルトの名無しさん [sage]
2020/10/17(土)12:19:37.13(a+zi+w45.net)
719デフォルトの名無しさん [sage]
2020/10/17(土)13:46:27.15(eBu6AjRf.net)
720デフォルトの名無しさん [sage]
2020/10/17(土)18:57:16.23(S6LboNFt.net)
721デフォルトの名無しさん
うまいやり方だな。それには気付かなかった。
2020/10/17(土)19:11:03.54(wXdm0x1E.net)
722デフォルトの名無しさん
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が出る。
2020/10/17(土)19:29:10.40(wXdm0x1E.net)
723デフォルトの名無しさん [sage]
let num = 20201016
let ans = num.toString(2).split`0`.sort().pop().length
console.log(ans) //=> 5
2020/10/17(土)20:05:12.33(vimxgZ9f.net)
724デフォルトの名無しさん [sage]
https://ideone.com/dO1WZp
f = @(n) max(cellfun(@numel, strsplit(dec2bin(n), '0')));
f(20201016)
2020/10/17(土)20:50:55.84(w8j3NnhR.net)
725デフォルトの名無しさん
2020/10/17(土)20:54:06.81(frzgm+pU.net)
726デフォルトの名無しさん [sage]
2020/10/17(土)23:22:21.08(P3PLPttw.net)
727デフォルトの名無しさん
2020/10/18(日)00:42:32.49(nYmbGZmV.net)
728デフォルトの名無しさん [sage]
ドMだな
2020/10/18(日)01:06:12.01(qT62bbHa.net)
729デフォルトの名無しさん [sage]
2020/10/18(日)03:42:01.18(DpwMGaW+.net)
730デフォルトの名無しさん [sage]
2020/10/18(日)04:21:53.35(xWXtsYNK.net)
731デフォルトの名無しさん [sage]
2020/10/18(日)04:36:21.54(F/EhVBet.net)
732デフォルトの名無しさん
2020/10/18(日)05:53:44.51(28u9FaXE.net)
733デフォルトの名無しさん [sage]
桁数が少ないうちは内部関数しか使ってない利点で早いとは思うけど
2020/10/18(日)10:06:25.57(ARbR7jXS.net)
734デフォルトの名無しさん [sage]
>>710,720 をベンチマークで比較してみた
https://ideone.com/t0ZYLg
https://ideone.com/DUEWmC
20201016 では 5~6倍
巨大な数だと 7000倍以上
2020/10/18(日)12:07:22.14(GUbLWvo/.net)
735 [sage]
残念ながら、私の出題もイマイチ人気がありませんでした‥‥
2020/10/18(日)15:53:00.51(xUpUEWAV.net)
736デフォルトの名無しさん
2020/10/18(日)21:20:25.30(wanN/5Zd.net)
737デフォルトの名無しさん
2020/10/18(日)21:43:52.67(wanN/5Zd.net)
738デフォルトの名無しさん
2020/10/18(日)22:06:12.69(wanN/5Zd.net)
739デフォルトの名無しさん
2020/10/18(日)22:14:01.64(wanN/5Zd.net)
740デフォルトの名無しさん [sage]
x = n
while x != 0
x &= x << 1
i += 1
end
ruby知らないから適当に書いたけど
こんな感じにしないと二回目以降nが0でやってるっぽい
こうすると22倍くらいの差だった
2020/10/18(日)22:45:56.62(F/EhVBet.net)
741デフォルトの名無しさん [sage]
すごいごちゃごちゃになった
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
2020/10/18(日)22:54:22.98(F/EhVBet.net)
742デフォルトの名無しさん [sage]
GJ
2020/10/18(日)22:56:30.98(QW0aA1Hz.net)
743デフォルトの名無しさん [sage]
echo "obase=2; 20201016" | bc | sed 's/./&\n/g' | uniq -c | perl -lane 'if ($M < $F[0]) {$M = $F[0]}; END{print $M}'
5
2020/10/19(月)06:30:07.92(8QFJcUQW.net)
744724 [sage]
2020/10/19(月)15:26:08.35(u+lqDWSF.net)
745デフォルトの名無しさん [sage]
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となる
2020/10/19(月)17:41:48.20(Sd7Rn+fr.net)
746デフォルトの名無しさん [sage]
2020/10/19(月)21:36:44.38(gq9726ze.net)
747デフォルトの名無しさん [sage]
$ echo "scale=100;e(l(2) / 3)" | bc -l
1.25992104989487316476721060727822835057025146470150
79800819751121552996765139594837293965624362550940
2020/10/19(月)22:00:17.27(gq9726ze.net)
748デフォルトの名無しさん [sage]
dcには平方根の演算子はあるが立方根はないので
c^(1/3) = sqrt(c/sqrt(c/sqrt(c/...)))
と変形して適当に反復
100k[2z333>av/]dsaxp
1.2599210498948731647672106072782283505702514647015079800819751121552\
996765139594837293965624362550941
2020/10/19(月)22:30:56.87(14xSvmON.net)
749デフォルトの名無しさん [sage]
参考を誰も参考にしてくれないのにワロタ
参考を元に作ったコード
Haskell
https://ideone.com/ywJPjx
ちなみにrubyのpi.rbが同じテクニック使ってます
そっちは定数係数でない三項間関係の漸化式パージョン
2020/10/19(月)23:54:32.40(mPlPc+C9.net)
750デフォルトの名無しさん [sage]
たしかに
2020/10/20(火)02:36:31.61(gFGmv7lM.net)
751デフォルトの名無しさん [sage]
2020/10/20(火)04:08:13.14(Mf7a0fdE.net)
752デフォルトの名無しさん [sage]
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)の絶対値の場合と比べて、エラー率の順位は入れ替わるだろうか?
2020/10/20(火)21:07:35.93(hsuNVmIy.net)
753デフォルトの名無しさん [sage]
2020/10/22(木)01:17:43.95(rA+WIIWx.net)
754253 [sage]
doubleと多倍長浮動小数点でそれぞれ計差した2変数調和平均に
差がある率を求めれば良いの?
正規乱数なら書かなくともライブラリにあるんだよね。
あるいは誤り率の計算そのものにモンテカルロ法を使うようなやり方なのかな
2020/10/23(金)09:17:13.74(7L0FHKID.net)
755デフォルトの名無しさん [sage]
2020/10/23(金)14:48:32.25(oxO2c12D.net)
756デフォルトの名無しさん
乱数を使ってシミュレーションしてください
ジョーカーを除くトランプ52枚から1枚抜き取って箱に入れました
その後、残った51枚から3枚引いて確認したら3枚ともダイヤでした
では最初に抜き取った箱の中が1枚がダイヤである確率はいくらか?
2020/10/23(金)20:02:36.14(Vzf4XOui.net)
757デフォルトの名無しさん [sage]
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
2020/10/23(金)20:27:24.17(LovVc5SM.net)
758デフォルトの名無しさん [sage]
99%信頼区間は 0.20414±0.0010382 => [0.2031018, 0.2051782]
理論値は 10/49 = 0.20408163265306123
2020/10/23(金)20:46:02.34(LovVc5SM.net)
759デフォルトの名無しさん
2020/10/23(金)20:49:11.91(5NWyTruo.net)
760デフォルトの名無しさん [sage]
ジョーカー除く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枚が与えられたとき、そのような捨て札の組み合わせを求めるプログラムを記述せよ。
ここで、ポーカーの役と配点の対応はプログラムのパラメータとして組み込んで良い。
2020/10/24(土)01:58:03.71(6bv42JD2.net)
761デフォルトの名無しさん [sage]
2020/10/24(土)21:09:47.85(xQuuF55s.net)
762デフォルトの名無しさん
2020/10/24(土)23:43:41.92(DlOr4HzX.net)
763デフォルトの名無しさん [sage]
2020/10/25(日)09:27:41.37(dKQi7OF0.net)
764デフォルトの名無しさん
2020/10/25(日)10:49:49.59(zd7LSfWt.net)
765デフォルトの名無しさん [sage]
モンティホール問題の方が引っ掛け問としては出来が良い
2020/10/25(日)11:44:16.63(c/nOQwtG.net)
766デフォルトの名無しさん [sage]
2020/10/25(日)12:58:23.56(vQGWPLvq.net)
767デフォルトの名無しさん [sage]
2020/10/25(日)14:14:17.31(tOCt4zCM.net)
768742 [sage]
正規乱数自体は既存のライブラリで(Pythonならnumpy.random.randnとか)。
例えば、最初のお題(2/(1/x+1/y)で計算するやつ)は、34%位のエラー率になります。
2020/10/26(月)01:17:42.67(LimhPZzI.net)
769253 [sage]
どこかよく分からないんだよね…
2020/10/27(火)00:51:04.61(uqMOOUWw.net)
770デフォルトの名無しさん [sage]
x,yがN(0,1)に従う独立確率変数、
ρ:R→RがDouble型に丸める関数(Doubleのレンジに入らない確率はほとんど0だから無視)、
h(x,y)=2xy/(x+y)
としたとき
P(ρ(h(ρ(x),ρ(y))) ≠ ρ(h(x,y))) ≒ 34%
って事?
2020/10/27(火)23:07:51.35(9NNPSda/.net)
771253 [sage]
だが、他の人にも伝わるように書いた方が話が広がってよいよ。
どんなに数学が得意な人でも本当に優秀な人はそうすることができると思う
2020/10/28(水)00:01:38.74(Jno143Es.net)
772デフォルトの名無しさん [sage]
2020/10/28(水)00:17:22.90(3yQQm3er.net)
773デフォルトの名無しさん [sage]
正規分布の下りか?
2020/10/28(水)00:21:17.79(n11gpLQR.net)
774253 [sage]
マジレスしようと思ったが、そういう問題じゃないんだよ
言葉で書きゃー2,3行のことなんだから
言葉で人に伝わるように書けばいいだろ
と、突き放しちゃ実も蓋も無いので少しマジレスすると
ρ:R→R が写像なのは分かる。
がしかしだ
P(ρ(h(ρ(x),ρ(y))) ≠ ρ(h(x,y))) ≒ 34%
って、お前の教室のホワイトボードじゃねんだぞ。
そんなんでどうっやって世の人と付き合ってんだか…
2020/10/28(水)00:30:53.43(Jno143Es.net)
775253 [sage]
どこにでもあるような関数名だが、一般的な関数か?
いや、そんなことの説明は要らない
お前の言いたいことはそんな自己流の式よりも
手短な読んで分かる日本語で書けるはずだ
いいやP()に限らない、お前のレスは一事が万事そんな感じ
一からからやり直せ
そしたら相手してやる
2020/10/28(水)00:40:32.18(Jno143Es.net)
776デフォルトの名無しさん [sage]
2020/10/28(水)00:42:08.54(n11gpLQR.net)
777253 [sage]
2020/10/28(水)00:43:23.90(Jno143Es.net)
778253 [sage]
わざわざ難しいことのように書くのは
有能な人のすることではない
2020/10/28(水)00:47:05.09(Jno143Es.net)
779デフォルトの名無しさん [sage]
2020/10/28(水)00:51:02.28(n11gpLQR.net)
780253 [sage]
別に落ち着いているけど
これか
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%
これは言葉で書いたらもっと分かりやすくならないのか?
2020/10/28(水)01:00:33.01(Jno143Es.net)
781253 [sage]
2 / (1 / x + 1 / y)をdoubleで計算した値と倍長精度で計算したものをdouble相当に丸めたものが一致しない割合
この一行をわざわざ他の人に分かりにくい式で再度書いているだけのこと
繰り返しだし分かりにくいし
意味(doubleで計算した値と倍長精度で計算したものをdouble相当に丸めたものが一致しない割合)
が欠落している
そういうことに気づきな
2020/10/28(水)01:15:04.26(Jno143Es.net)
782デフォルトの名無しさん [sage]
2020/10/28(水)01:17:27.13(6h0Rpnv/.net)
783253 [sage]
そしたら回答山盛りだ
お前もさんも回答よろしくな
2020/10/28(水)01:19:14.69(Jno143Es.net)
784デフォルトの名無しさん [sage]
2020/10/28(水)01:20:24.09(6h0Rpnv/.net)
785253 [sage]
まさか回答できなかったら、単なる無能だからな
2020/10/28(水)01:20:47.31(Jno143Es.net)
786253 [sage]
参考までにあなたは今までどのような回答を投稿されましたか?
2020/10/28(水)01:27:14.39(Jno143Es.net)
787デフォルトの名無しさん [sage]
2020/10/28(水)01:29:09.84(3yQQm3er.net)
788253 [sage]
ヒ・ミ・ツ
2020/10/28(水)01:30:24.94(Jno143Es.net)
789デフォルトの名無しさん [sage]
https://studysapuri.jp/contents/high/article/subject/sp/math00003.html
やっぱ高校の教科書に載ってたよなあww
仮に載ってなかったとして大学で使う書籍にもP載ってないって?w
> 俺が大学の頃まではこういう記法は見た記憶が無いんだけど
2020/10/28(水)01:43:43.54(3yQQm3er.net)
790253 [sage]
2020/10/28(水)01:56:33.39(Jno143Es.net)
791デフォルトの名無しさん [sage]
2020/10/28(水)02:11:35.07(d52OC3St.net)
792253 [sage]
2020/10/28(水)02:16:39.09(FRCNqyyj.net)
793742 [sage]
2020/10/28(水)05:10:48.17(MEeLXnFm.net)
794デフォルトの名無しさん [sage]
https://ideone.com/iPEwg8
2 / (1 / x + 1 / y) のエラー率は 38.5%
2 * x * y / (x + y) のエラー率は 40.4%
と出た
2020/10/28(水)06:02:02.77(W3KKdO+Q.net)
795742 [sage]
h0の計算は、xdやxdをlong doubleにcastする感じで!
>double h0 = ( xl == 0. || yl == 0. ? 0. : 2. / (1.L / xd + 1.L / yd));
2020/10/28(水)12:23:39.00(jim4KuYP.net)
796742 [sage]
double h0 = ( xd == 0. || yd == 0. ? 0. : 2. / (1.L / xd + 1.L / yd));
2020/10/28(水)13:16:35.16(jim4KuYP.net)
797デフォルトの名無しさん [sage]
pushはリスト末尾にノードをプッシュし、popはリスト末尾からノードをポップする
ノードの持つ値は整数とする
2020/10/29(木)00:16:48.93(GFOWX4AY.net)
798デフォルトの名無しさん [sage]
popも個数指定できるの?一個ずつ?
pushの戻り値はリスト自身?入れた値?成否?
2020/10/29(木)00:52:01.80(wtq/xrTf.net)
799デフォルトの名無しさん [sage]
2020/10/29(木)01:01:50.46(GFOWX4AY.net)
800デフォルトの名無しさん [sage]
入出力のサンプルケース書いてないやつ絶対自分はやってないだろ
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
}
}
2020/10/29(木)10:47:03.25(jsAu6jIB.net)
801デフォルトの名無しさん [sage]
2020/10/29(木)12:03:58.95(GFOWX4AY.net)
802デフォルトの名無しさん [sage]
「言語機能のみを使い」は引っかかる表現だったけどそれのことかい?
2020/10/29(木)12:11:08.30(moZIRBYC.net)
803デフォルトの名無しさん [sage]
「ライブラリ関数使うな」か「文字列操作関数のみを使い」かどっちかかなと
わからんから様子見
2020/10/29(木)12:16:22.08(95aSRVZj.net)
804デフォルトの名無しさん [sage]
2020/10/29(木)12:18:16.67(GFOWX4AY.net)
805デフォルトの名無しさん [sage]
2020/10/29(木)12:21:59.18(GFOWX4AY.net)
806デフォルトの名無しさん
2020/10/29(木)12:33:09.26(AOpu1Zek.net)
807デフォルトの名無しさん [sage]
2020/10/29(木)12:36:05.93(jsAu6jIB.net)
808デフォルトの名無しさん [sage]
2020/10/29(木)12:50:57.59(GFOWX4AY.net)
809デフォルトの名無しさん [sage]
2020/10/29(木)13:24:14.72(GFOWX4AY.net)
810デフォルトの名無しさん [sage]
C/C++などの言語はmallocなどを使っても良いことにする
2020/10/29(木)13:27:39.52(GFOWX4AY.net)
811デフォルトの名無しさん [sage]
同じ表現は永遠に同じ答えを返すからスタックの“状態”を変化させるというのがそもそもできない
それをなんとかするのに“モナド”というのがあるんだけど状態を処理する“ステートモナド”は標準ライブラリではないんだよな
ほとんど“準標準”だけど
2020/10/29(木)15:09:10.20(dNWGwdex.net)
812デフォルトの名無しさん [sage]
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]
2020/10/29(木)16:24:06.73(95aSRVZj.net)
813 [sage]
双方向リストの方が、後々いろいろ流用できてありがたいんですけど、それでも端方向リストでインプリしないといけないのですか?
2020/10/29(木)19:01:42.56(7aED6VYA.net)
814デフォルトの名無しさん [sage]
2020/10/29(木)19:02:59.18(c1P6mcgH.net)
815デフォルトの名無しさん [sage]
全く同じこと思ってたわw
2020/10/29(木)19:32:46.09(EQ9lcE/o.net)
816デフォルトの名無しさん [sage]
どうでもいいけどお前のIDもjsだsな
2020/10/29(木)19:34:40.84(EQ9lcE/o.net)
817デフォルトの名無しさん [sage]
2020/10/29(木)19:40:10.12(Pf0NRL7D.net)
818デフォルトの名無しさん
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
2020/10/29(木)20:59:03.61(zgfLAX1f.net)
819デフォルトの名無しさん [sage]
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
2020/10/29(木)21:10:47.05(wtq/xrTf.net)
820デフォルトの名無しさん [sage]
console.log('JSON: ' + JSON.stringify({'test': list})) //=> JSON: {"test":[2,7,0]}
だった
2020/10/29(木)21:13:39.21(wtq/xrTf.net)
821デフォルトの名無しさん
2020/10/29(木)23:09:01.60(MaNQDMIt.net)
822253 [sage]
2020/10/29(木)23:20:15.73(UgpGZWA4.net)
823デフォルトの名無しさん [sage]
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
2020/10/29(木)23:24:39.19(3o7XtB23.net)
824デフォルトの名無しさん [sage]
2020/10/29(木)23:26:08.36(GFOWX4AY.net)
825デフォルトの名無しさん [sage]
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 $ 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"
2020/10/30(金)00:06:20.24(aDtUVDPI.net)
826253 [sage]
公式マニュアルに書かれている通り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
2020/10/30(金)00:07:47.66(hMjmzAXb.net)
827253 [sage]
2020/10/30(金)00:09:56.81(hMjmzAXb.net)
828253 [sage]
2020/10/30(金)00:22:38.86(hMjmzAXb.net)
829253 [sage]
2020/10/30(金)00:32:51.98(hMjmzAXb.net)
830253 [sage]
2020/10/30(金)00:34:30.90(hMjmzAXb.net)
831デフォルトの名無しさん
2020/10/30(金)00:50:28.84(9RgBA+ge.net)
832デフォルトの名無しさん
2020/10/30(金)02:22:50.19(9RgBA+ge.net)
833デフォルトの名無しさん [sage]
あ?
2020/10/30(金)07:07:30.18(cChJ6BWU.net)
834デフォルトの名無しさん [sage]
覚えようかな
2020/10/30(金)23:30:40.86(hYhF3+Ov.net)
835デフォルトの名無しさん [sage]
与えられた文字列を一文字ずつ見ていき"trick"と"treat"の5文字でどちらが先に揃うか判定してください(順序込み)
どちらもヒットしないときは考慮しなくていいです
treakOrTreat("trick or treat")
// => trick
treakOrTreat(". tr ick")
// => trick
treakOrTreat("ttrriecatk")
// => treat
treakOrTreat("tri kc eat")
// => treat
treakOrTreat("my money")
// => none
2020/10/31(土)13:49:55.42(QnYm1bfS.net)
836デフォルトの名無しさん [sage]
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"
}
2020/10/31(土)13:51:26.24(QnYm1bfS.net)
837デフォルトの名無しさん [sage]
2020/10/31(土)14:54:50.69(HHhQTZ6R.net)
838デフォルトの名無しさん [sage]
2020/10/31(土)15:02:04.99(QnYm1bfS.net)
839デフォルトの名無しさん
2020/10/31(土)15:07:31.21(DmLmDhBA.net)
840デフォルトの名無しさん [sage]
ミュートにしてるという情報から相手が雑魚であるというぶっ飛んだ推論をする知性の欠片も持ち合わせない負け組
2020/10/31(土)15:33:31.91(I05R+wBh.net)
841デフォルトの名無しさん
2020/10/31(土)15:36:09.16(DmLmDhBA.net)
842デフォルトの名無しさん [sage]
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)
}
2020/10/31(土)15:44:11.18(pGrSKCPz.net)
843デフォルトの名無しさん
2020/10/31(土)15:54:22.22(i0S/O8KX.net)
844デフォルトの名無しさん [sage]
2020/10/31(土)16:42:52.45(B0ELcd4k.net)
845デフォルトの名無しさん
2020/10/31(土)17:10:35.46(M62mfk9p.net)
846デフォルトの名無しさん
2020/10/31(土)17:42:14.32(/zmNVLOW.net)
847デフォルトの名無しさん
2020/10/31(土)21:33:28.24(g64iH70d.net)
848デフォルトの名無しさん [sage]
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 )
}
2020/10/31(土)21:58:58.47(t2sIU1o6.net)
849デフォルトの名無しさん [sage]
改定
やはり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"]
2020/10/31(土)22:19:45.63(B0ELcd4k.net)
850デフォルトの名無しさん
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;
2020/10/31(土)22:49:38.34(pe+8/Oyn.net)
851253 [sage]
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
2020/10/31(土)22:58:55.98(i+h07tFB.net)
852デフォルトの名無しさん [sage]
なんでお前ずっとコテハンつけてんの?
2020/10/31(土)23:10:35.06(8FYB/kmH.net)
853253 [sage]
気にしないで
2020/10/31(土)23:20:38.29(i+h07tFB.net)
854デフォルトの名無しさん [sage]
2020/10/31(土)23:26:17.77(OVAIfmUR.net)
855デフォルトの名無しさん [sage]
専ブラ使えばいいのに
2020/10/31(土)23:27:34.12(wd4K8eMC.net)
856253 [sage]
2020/10/31(土)23:32:26.70(i+h07tFB.net)
857253 [sage]
教科書に載っているようなきれいなコード書くね
2020/10/31(土)23:38:27.89(i+h07tFB.net)
858デフォルトの名無しさん [sage]
2020/10/31(土)23:54:01.35(OVAIfmUR.net)
859デフォルトの名無しさん [sage]
Ruby
text = <<'TEXT'
trick or treat
. tr ick
ttrriecatk
tri kc eat
my money
TEXT
# 配列化
Trick = "trick".chars
Treat = "treat".chars
次へ続く
2020/11/01(日)00:59:27.52(KABEK1ar.net)
860849 [sage]
の続き
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"]
2020/11/01(日)01:00:32.73(KABEK1ar.net)
861デフォルトの名無しさん
2020/11/01(日)01:29:12.30(17LNcGyj.net)
862デフォルトの名無しさん
2020/11/01(日)01:49:31.61(17LNcGyj.net)
863838 [sage]
正規表現を捨てて 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 )
}
2020/11/01(日)12:58:01.92(g/v4ZA9S.net)
864蟻人間 [sage]
2020/11/01(日)14:40:36.23(wOVD56Lv.net)
865デフォルトの名無しさん [sage]
2020/11/01(日)16:05:05.76(+nQAPqAx.net)
866蟻人間 [sage]
2020/11/01(日)16:41:27.74(wOVD56Lv.net)
867蟻人間 [sage]
2020/11/01(日)16:44:49.88(wOVD56Lv.net)
868デフォルトの名無しさん [sage]
2020/11/01(日)16:51:14.83(VQGUeFT5.net)
869253 [sage]
やろうとしたことはあるがまだ未経験
何か受験勉強みたいになっちゃってるコンテストには魅力を感じない
でも世界トップレベルは年間4000万くらい賞金稼ぐとい話をきいてそういうのにはちょっと惹かれる
2020/11/01(日)16:54:48.84(I8lyxV1q.net)
870蟻人間 [sage]
あんまりバカにするなよ。住所変換できないと大坂大混乱になるよ。
2020/11/01(日)17:00:25.77(wOVD56Lv.net)
871デフォルトの名無しさん [sage]
他所の住所変更地の状況知らんのか?50年前の住所でも年賀届くわ
数年〜十数年或いはそれ以上旧住所で配送可能。舐めすぎ
2020/11/01(日)17:18:29.18(EgIfcLXC.net)
872デフォルトの名無しさん [sage]
2020/11/01(日)17:31:11.77(+nQAPqAx.net)
873デフォルトの名無しさん [sage]
ただの知識問題は悪問
2020/11/01(日)17:35:33.69(S9fsJ+JS.net)
874デフォルトの名無しさん [sage]
競技系はプログラミングのスキル向上には役立たんよ
2020/11/01(日)18:32:31.31(erpRcPg0.net)
875デフォルトの名無しさん [sage]
このサイト気持ち悪いな
2020/11/01(日)18:50:53.93(4+fLUvoM.net)
876蟻人間 [sage]
太陽風を読めよ。
2020/11/01(日)19:52:59.24(wOVD56Lv.net)
877デフォルトの名無しさん [sage]
消えろ
2020/11/01(日)19:57:24.03(wWMHVvTS.net)
878蟻人間 [sage]
お前がえろ
2020/11/01(日)20:04:08.68(wOVD56Lv.net)
879デフォルトの名無しさん [sage]
2020/11/02(月)00:22:13.64(bEILeQs7.net)
880デフォルトの名無しさん
2020/11/02(月)04:28:03.49(2/AbCXtL.net)
881デフォルトの名無しさん [sage]
入力文字列から1文字ずつ与えて状態遷移(または待機)させていく
末尾まで先に受理されたほうを答えとする
みたいなことだけ考えた
2020/11/02(月)04:45:05.89(BfD57ecO.net)
882デフォルトの名無しさん [sage]
2020/11/02(月)04:48:28.19(BfD57ecO.net)
883デフォルトの名無しさん [sage]
2020/11/02(月)10:04:22.80(/BOVDIIM.net)
884デフォルトの名無しさん [sage]
でしょ?
今回なら入力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パターン)
....
と正規表現だけで表現できてしまう
2020/11/02(月)10:41:03.91(5JhQS2vf.net)
885蟻人間 [sage]
パラボラアンテナの半径を100とし、原点を中心にx軸上に焦点が来るように配置する。x軸と平行に電波がアンテナに入ってきて、入射角と反射角が等しくなるように電波が反射する。
このとき、どの場所で反射しても、反射した電波を表す直線が理論上の焦点に十分近づくことを示せ。
2020/11/02(月)12:23:25.05(iXWhExA8.net)
886デフォルトの名無しさん [sage]
2020/11/02(月)12:23:58.15(UfGVYnOo.net)
887デフォルトの名無しさん [sage]
2020/11/02(月)12:36:09.22(zo3ZJgwO.net)
888デフォルトの名無しさん [sage]
2020/11/02(月)13:43:55.18(gftnEWfN.net)
889デフォルトの名無しさん [sage]
@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
2020/11/02(月)14:26:45.62(vIueiXdU.net)
890デフォルトの名無しさん [sage]
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" ]
2020/11/02(月)18:10:30.68(Ac4tp6ZL.net)
891デフォルトの名無しさん [sage]
#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");
}
2020/11/02(月)19:01:54.49(hORytTpS.net)
892デフォルトの名無しさん [sage]
アスペクト比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
2020/11/02(月)19:55:30.38(0Q72CsT7.net)
893869 [sage]
2020/11/02(月)20:41:57.79(PEXljxha.net)
894デフォルトの名無しさん
2020/11/02(月)20:50:30.27(LqVECFSh.net)
895デフォルトの名無しさん [sage]
実用的じゃん
2020/11/02(月)20:55:38.75(UfGVYnOo.net)
896デフォルトの名無しさん [sage]
2020/11/02(月)21:39:44.31(PEXljxha.net)
897デフォルトの名無しさん [sage]
2020/11/02(月)22:00:22.68(PEXljxha.net)
898デフォルトの名無しさん [sage]
消えろ
2020/11/02(月)22:02:25.78(i1cL0pVh.net)
899デフォルトの名無しさん
2020/11/02(月)22:12:37.48(2/AbCXtL.net)
900デフォルトの名無しさん [sage]
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))
2020/11/02(月)23:19:41.46(ZpVsHyOp.net)
901デフォルトの名無しさん [sage]
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) ]
2020/11/03(火)00:18:12.81(1BjkDVvF.net)
902デフォルトの名無しさん [sage]
{1,2,3,4,5,6,7,8}
を幾つかの共通部分を持たない空でない集合にわけるやり方を完全列挙
例えば
{1,6}+{2,8}+{3,4,5,7}
と
{2,8}+{1,6}+{3,4,5,7}
は同じやり方になるので二重カウントしないこと
2020/11/03(火)01:33:31.56(psuX0FGw.net)
903デフォルトの名無しさん [sage]
[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
2020/11/03(火)02:32:26.13(yN+x511c.net)
904デフォルトの名無しさん [sage]
きれいだな
2020/11/03(火)08:10:12.54(WKYb8LN0.net)
905デフォルトの名無しさん [sage]
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}}
2020/11/03(火)09:07:39.02(psuX0FGw.net)
906デフォルトの名無しさん [sage]
2020/11/03(火)09:10:16.73(psuX0FGw.net)
907デフォルトの名無しさん [sage]
~a+~b=A
とかは要らなかったw
a+b=A
とかだけでよかった
a \cup bが普通の和集合ね。
2020/11/03(火)09:15:47.91(psuX0FGw.net)
908デフォルトの名無しさん [sage]
:: 引数は整数限定。結果は少数第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%
2020/11/03(火)21:04:35.96(eC8ouzxK.net)
909デフォルトの名無しさん
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
2020/11/04(水)00:20:20.72(rxWDSDf0.net)
910デフォルトの名無しさん [sage]
バッチ・ファイルすげぇなww
2020/11/04(水)00:20:22.20(kNuSoIVx.net)
911デフォルトの名無しさん [sage]
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
2020/11/04(水)18:59:14.79(M+x6liG8u)
912デフォルトの名無しさん [sage]
2020/11/04(水)20:24:03.31(uO47xEs9.net)
913デフォルトの名無しさん [sage]
2020/11/05(木)03:19:19.40(EuRO0zRP.net)
914デフォルトの名無しさん [sage]
'□'(正方形)と'_'(空白)で表される図形を45度回転して描画せよ。
[例1]
□
/\
\/
[例2]
___□
□□_□
_□□□
/\
\/\
/\/ /\
\/\/\/
\/\/
\/
2020/11/05(木)20:02:28.58(pDv0veJc.net)
915デフォルトの名無しさん [sage]
良さげなお題
2020/11/05(木)20:47:59.87(uObXfCng.net)
916デフォルトの名無しさん [sage]
2020/11/05(木)23:31:16.69(5bWXoO+B.net)
917デフォルトの名無しさん [sage]
2020/11/05(木)23:39:12.30(W9kenpkY.net)
918デフォルトの名無しさん [sage]
2020/11/05(木)23:40:00.35(uObXfCng.net)
919デフォルトの名無しさん [sage]
2020/11/06(金)01:21:28.35(DUBJiW5Z.net)
920デフォルトの名無しさん
2020/11/06(金)03:01:56.79(2mWV4tVe.net)
921253 [sage]
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]],
2020/11/06(金)13:23:23.40(1EHNC/LO.net)
922デフォルトの名無しさん [sage]
2020/11/06(金)13:24:39.43(DUBJiW5Z.net)
923デフォルトの名無しさん
あ、いや、なんでもないです。忘れてください。
2020/11/07(土)15:16:17.29(dGj5mxP2.net)
924デフォルトの名無しさん [sage]
@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
2020/11/07(土)15:50:17.56(0+q2MsjY.net)
925デフォルトの名無しさん [sage]
2020/11/07(土)19:47:28.12(/E6xY+R5.net)
926デフォルトの名無しさん
2020/11/07(土)21:06:37.63(anINQjB0.net)
927デフォルトの名無しさん [sage]
scale(1.41421356)でしょ
2020/11/07(土)22:21:52.44(alCltY04.net)
928デフォルトの名無しさん [sage]
2020/11/07(土)23:04:28.88(zLEnd997.net)
929デフォルトの名無しさん [sage]
2020/11/08(日)00:05:04.78(DLA7KrcO.net)
930デフォルトの名無しさん [sage]
batにトランスパイルできるもっといい感じの構文の言語とかないの
2020/11/08(日)00:15:55.29(ct8WHwWl.net)
931デフォルトの名無しさん [sage]
QZならできそうだがだんまりか?
2020/11/08(日)02:24:23.73(vLTv8mzL.net)
932デフォルトの名無しさん [sage]
2020/11/08(日)02:34:25.46(HKu5GaPi.net)
933 [sage]
私は C しか書けません
2020/11/08(日)03:02:51.65(H3a4zXqH.net)
934デフォルトの名無しさん [sage]
こんなのならあった
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
2020/11/08(日)03:56:26.07(YnyAcD/m.net)
935デフォルトの名無しさん [sage]
再帰サポートのための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
他、クラスフィールドやマジックメソッドなど
2020/11/08(日)03:57:27.82(YnyAcD/m.net)
936デフォルトの名無しさん [sage]
もうひとつ。
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
}
トランスパイル結果略
2020/11/08(日)04:20:05.05(YnyAcD/m.net)
937デフォルトの名無しさん [sage]
シェルスクリプトからの変換系:
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系ですね。
2020/11/08(日)05:03:48.08(YnyAcD/m.net)
938デフォルトの名無しさん [sage]
moongiftに紹介記事があった。
https://www.moongift.jp/2019/08/batsh-bashbatchのスクリプトを生成するプログラミング言語/
…そしてアドレスバー見たら既にお気に入りに登録されていた…
2020/11/08(日)05:16:53.07(YnyAcD/m.net)
939デフォルトの名無しさん [sage]
これきれいだな
2020/11/08(日)08:18:54.23(ct8WHwWl.net)
940デフォルトの名無しさん [sage]
[お題] 人口合計でオール1
URLのページに都道府県別の人口が載っている。
今回使用するのは、2019/10のデータ
https://ideone.com/R4PCiQ
同じ県は一回のみで、異なる県を何県でも選んでよい。
(つまり選び方は全部で 2^47 種類)
人口合計が"1"のみの数字となる選び方は何種類あるか?
(実質、1111万1111人, 1億1111万1111人になる選び方)
※一発正解問題、実行時間3秒程度。
同ページの他の年月人口でも計算できる程度のクオリティでok
※ちなみに 2015/10データだと916(40+876)種類だった。
2020/11/09(月)23:19:00.95(biYC5NlX.net)
941デフォルトの名無しさん [sage]
111111111はオンラインコンパイラでタイムアウトorz
2020/11/09(月)23:52:24.94(XExSNiE1.net)
942デフォルトの名無しさん [sage]
2020/11/10(火)00:38:20.57(duQVrAg3.net)
943デフォルトの名無しさん [sage]
2020/11/10(火)00:38:46.30(qJS2/p90.net)
944デフォルトの名無しさん [sage]
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
2020/11/10(火)00:45:23.62(qJS2/p90.net)
945デフォルトの名無しさん [sage]
2020/11/10(火)02:25:54.45(903MPdZb.net)
946デフォルトの名無しさん [sage]
2020/11/10(火)02:49:15.00(VuEsWlWs.net)
947デフォルトの名無しさん
2020/11/10(火)13:44:24.83(3xGJBleZ.net)
948929 [sage]
・想定解はDPの数え上げ
さすがに1.1億×47は苦しいので、
1.1億に関しては、(全人口 - 1.1億)で計算する。
そうすれば、1600万×47の計算量で済む。
https://ideone.com/R4PCiQ
下にpython(numpy)で想定解追加
2020/11/10(火)17:29:30.75(q5cN/btj.net)
949253 [sage]
2020/11/11(水)00:47:47.87(vox+S3u3.net)
950デフォルトの名無しさん [sage]
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%ほどになるのか
勉強になった
2020/11/11(水)18:19:57.16(NMl7/e2v.net)
951デフォルトの名無しさん
1〜nまでの偶数をランダムに出力してください
お題2
[開始の数] [増分] [終了の数]を入力として受け取りランダムに出力してください
例
入力: 1 2 10
出力:
1
1
3
9
1
7
5
2020/11/12(木)15:39:00.87(VX9X1ew1.net)
952デフォルトの名無しさん [sage]
2020/11/12(木)15:58:04.88(uK53dAw4.net)
953デフォルトの名無しさん
2020/11/12(木)16:04:34.29(VX9X1ew1.net)
954デフォルトの名無しさん [sage]
2020/11/12(木)18:42:17.55(HU5jtk1k.net)
955デフォルトの名無しさん
2020/11/12(木)19:26:25.71(VX9X1ew1.net)
956デフォルトの名無しさん [sage]
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
2020/11/12(木)19:34:08.43(nzp5rNOe.net)
957デフォルトの名無しさん [sage]
入力パースするとこは略して
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]
2020/11/12(木)23:53:28.13(HU5jtk1k.net)
958デフォルトの名無しさん [sage]
@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
setlocal
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
2020/11/13(金)20:43:02.05(3cTZftC0.net)
959デフォルトの名無しさん [sage]
>>958試して見たいんやけど
2020/11/13(金)22:58:48.40(ghr6tNw2.net)
960デフォルトの名無しさん [sage]
2020/11/13(金)23:20:18.52(a1Z/nYk3.net)
961デフォルトの名無しさん [sage]
2020/11/14(土)00:46:02.44(WHpB6hAc.net)
962デフォルトの名無しさん [sage]
2020/11/14(土)06:23:08.91(rQXll7XK.net)
963デフォルトの名無しさん
2020/11/15(日)04:26:34.92(UMNa3GdF.net)
964デフォルトの名無しさん
天気のデータを読み取って翌日の天気は前日と同じと予測しそれが当たる確率を求めてください
入力: 曇,晴,曇,曇,晴,曇,曇,雨,雨,雨,曇,曇,晴,曇,雨,曇,雨,曇,曇,曇,晴,曇,雨,晴,晴,晴,晴,曇,晴,曇,晴
2020/11/15(日)18:33:50.31(UMNa3GdF.net)
965デフォルトの名無しさん [sage]
gets.split(?,).each_cons(2).tap{|a| p 1.0 * a.count{|b| !b.uniq[1]}/ a.size}
# => 0.3333333333333333
2020/11/15(日)18:40:06.62(KOddDUPF.net)
966デフォルトの名無しさん
2020/11/15(日)18:41:22.95(UMNa3GdF.net)
967デフォルトの名無しさん [sage]
let hits = 0
const input = '曇,晴,曇,曇,晴,曇,曇,雨,雨,雨,曇,曇,晴,曇,雨,曇,雨,曇,曇,曇,晴,曇,雨,晴,晴,晴,晴,曇,晴,曇,晴'.split `,`
input.reduce((acc, v) => (hits += acc == v ? 1 : 0, v))
console.log(hits / (input.length - 1))
//=> 0.3333333333333333
2020/11/15(日)20:20:51.56(8j4ATkh0.net)
968デフォルトの名無しさん [sage]
.split(`,`) では
2020/11/15(日)20:22:58.52(KOddDUPF.net)
969デフォルトの名無しさん [sage]
2020/11/15(日)20:23:55.05(KOddDUPF.net)
970デフォルトの名無しさん [sage]
@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
2020/11/16(月)00:51:51.08(lyH8UsEw.net)
971デフォルトの名無しさん [sage]
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
2020/11/16(月)03:31:51.13(apQPm4KR.net)
972デフォルトの名無しさん [sage]
@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
2020/11/16(月)03:32:04.47(lyH8UsEw.net)
973デフォルトの名無しさん
2020/11/20(金)19:52:50.75(HawO8Ftl.net)
974とくめい [kakeruyamasato@gmail.com]
2020/11/24(火)01:34:45.23(SQQDs1Pp.net)
975デフォルトの名無しさん [sage]
2020/11/24(火)08:07:25.33(aaTbFie9.net)
976デフォルトの名無しさん
2020/11/25(水)01:49:24.25(O2Mln20T.net)
977デフォルトの名無しさん [sage]
2020/11/26(木)19:02:45.00(ACzSTlzf.net)
978デフォルトの名無しさん
なんていう言語?
2020/11/27(金)01:08:20.91(bIFui41M.net)
979デフォルトの名無しさん [sage]
rubyでしょ
2020/11/27(金)02:57:17.73(ocMZsxYX.net)
980デフォルトの名無しさん
2020/11/27(金)19:31:40.66(Pnsgs34G.net)
981デフォルトの名無しさん [sage]
2020/11/28(土)00:37:28.60(PcPNtVOH.net)
982デフォルトの名無しさん
以下を表示する
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
2020/11/28(土)07:20:49.13(mYohOVrw.net)
983デフォルトの名無しさん [sage]
@echo.以下を表示する
@echo.Monday
@echo.Tuesday
@echo.Wednesday
@echo.Thursday
@echo.Friday
@echo.Saturday
@echo.Sunday
2020/11/28(土)07:34:45.42(CtkueG9H.net)
984デフォルトの名無しさん [sage]
2020/11/28(土)08:05:44.72(nEfgRBi9.net)
985デフォルトの名無しさん [sage]
2020/11/28(土)08:40:11.81(wyvnQiBB.net)
986デフォルトの名無しさん
問題の解釈違わねえ?
2020/11/28(土)09:00:26.43(2Muxtrov.net)
987デフォルトの名無しさん
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"))
2020/11/28(土)09:12:26.58(nEfgRBi9.net)
988デフォルトの名無しさん [sage]
2020/11/28(土)11:36:22.72(FGpMIdZG.net)
989デフォルトの名無しさん [sage]
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]
2020/11/28(土)12:27:13.39(GOv1h+p2.net)
990デフォルトの名無しさん [sage]
2020/11/28(土)12:38:57.57(L52xXSLK.net)
991977 [sage]
#=> [1, 3, 5]
2 は、各ステップの大きさ
2020/11/28(土)14:12:40.28(FGpMIdZG.net)
992デフォルトの名無しさん [sage]
オンラインでRuby 2.6使えるとこ見つからない
どっかない?
2020/11/28(土)16:09:49.88(myGQAvEM.net)
993デフォルトの名無しさん
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
2020/11/28(土)16:34:18.46(gB71rnHS.net)
994デフォルトの名無しさん [sage]
手元の汚い環境にもrepelにもpaizaにもなかったとき使おう
2020/11/28(土)16:39:08.00(nEfgRBi9.net)
995デフォルトの名無しさん [sage]
codepad は、古いような気がする
2020/11/28(土)17:26:12.48(FGpMIdZG.net)
996デフォルトの名無しさん [sage]
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 もある
2020/11/28(土)17:30:47.77(FGpMIdZG.net)
997デフォルトの名無しさん [sage]
2020/11/28(土)17:57:16.56(myGQAvEM.net)
998デフォルトの名無しさん [sage]
shuffleはランダムに並べ替えみたいだからちょっと違うかな
2020/11/28(土)18:01:21.11(myGQAvEM.net)
999デフォルトの名無しさん [sage]
shuffleの代わりにsampleを使うといい
2020/11/28(土)22:44:23.07(wyvnQiBB.net)
1000デフォルトの名無しさん [sage]
:: 年月日を元に曜日を返す。 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
2020/11/29(日)06:10:23.39(LsAPFm47.net)
1001デフォルトの名無しさん
2020/11/29(日)12:05:03.89(POmPIOqu.net)
1002デフォルトの名無しさん
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が土曜になってしまい、
それを並び替えてから出力する必要があって少し複雑になった。
2020/11/29(日)14:25:29.24(KxupmnON.net)
1003253 [sage]
use Time::Piece;
use Time::Seconds;
$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
2020/11/29(日)15:02:42.80(onV9IrOo.net)
1004253 [sage]
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
2020/11/29(日)17:21:11.49(onV9IrOo.net)
1005デフォルトの名無しさん
2020/11/29(日)20:08:13.17(idUZlJAo.net)
1006デフォルトの名無しさん
配列を入力として受け取り
値が連続するサブ配列のうち、合計が最大のものを出力してください
例
入力:[−2, 1, −3, 4, −1, 2, 1, −5, 4]
出力:[4, −1, 2, 1]
2020/11/29(日)20:39:34.37(idUZlJAo.net)
1007 [sage]
2020/11/29(日)21:07:17.97(POdKASdd.net)
1008デフォルトの名無しさん [sage]
2020/11/29(日)21:15:00.96(sOEBQUsx.net)
1009デフォルトの名無しさん
2020/11/29(日)21:21:35.35(idUZlJAo.net)
1010デフォルトの名無しさん [sage]
[1, 4, 2, 1, 4]は値が連続しないサブ配列?
連続の定義は?
2020/11/29(日)21:26:09.30(sOEBQUsx.net)
1011デフォルトの名無しさん
教えません
2020/11/29(日)21:34:10.34(idUZlJAo.net)
10121001
新しいスレッドを立ててください。
life time: 138日 7時間 40分 24秒
Over1000Thread.net)
1013過去ログ ★
[過去ログ]