20/10/14 19:30:29.09 pZU5VHHG.net
試すと音が出て煩そうだから試す気になれない。
703:蟻人間
20/10/14 19:50:02.82 TNR/wFHW.net
テレビの自主規制音と同じ音だよ。
URLリンク(ja.wikipedia.org)
704:デフォルトの名無しさん
20/10/15 00:45:55.69 BUh584nA.net
>>688 iOS じゃ、play コマンドがなさそうなんだよな。
705:デフォルトの名無しさん
20/10/15 01:18:37.79 fqrOjoDi.net
結局このスレで盛り上がるのは環境によらず言語によらず、でも多少は骨のあるようなお題なんだよな
へぇその言語ならそんなにキレイに書けるのかとか普段自分が使ってない言語ではどうやって実現できるのか眺めたりするのが面白い
音鳴らすなんてお題として面白いわけがない
706:デフォルトの名無しさん
20/10/15 01:40:28.46 S6IC+plr.net
ヒント:出題者
707:デフォルトの名無しさん
20/10/15 11:44:28.12 cDg3UiVL.net
蟻人間さんへのお題:
文字列を受け取って、RFC 5322にしたがってSubjectヘッダを出力してください(MUST、SHOULDを満たすこと)
文字コードはUTF-8、エンコーディングはBエンコードを使用してください
708:蟻人間
20/10/15 13:28:00.67 s1gNbcw/.net
>>695 Python
text = 'Re: Re: This is a subject text. This is a subject text. This is a subject text.'
if text[0:4] == 'Re: ':
__while text[0:4] == 'Re: ':
____text = text[4:]
__text = 'Re: ' + text
import base64
text = 'Subject: ' + base64.b64encode(text.encode('utf-8')).decode('ascii');
ary = []
while len(text) > 78:
__ary.append(text[0:78])
__text = text[78:]
ary.append(text)
import platform
if platform.system() == 'Windows':
__for item in ary:
____print(item)
else:
__for item in ary:
____print(item, end="\r\n")
709:蟻人間
20/10/15 13:49:36.74 IXtC9lOP.net
>>696 訂正。
(誤) while len(text) > 78:
(正) while len(text) >= 78:
710:デフォルトの名無しさん
20/10/15 14:30:46.93 cDg3UiVL.net
>>696
いろいろ違うので・・・メールのソース眺めたが良いです
711:デフォルトの名無しさん
20/10/15 19:14:52.90 QzXinxJa.net
頭の悪いお題を連投してるやつはやっぱり頭悪いんだな
712:デフォルトの名無しさん
20/10/15 19:22:03.88 cDg3UiVL.net
そんなことないと思うけどな
あまり他人の悪口言わない方が良いよ
713:デフォルトの名無しさん
20/10/15 19:28:33.00 QzXinxJa.net
くっそみたいなお題延々と出し続けてウザいじゃん
714:デフォルトの名無しさん
20/10/15 19:29:59.48 MTvivIgb.net
>>638なんかはいいと思うんだけどな
eval使えないHaskellerにはいい練習問題になってる
715:デフォルトの名無しさん
20/10/15 19:38:14.90 QzXinxJa.net
ウェブアプリつくれだのGUIアプリつくれだの酷い事散々言いまくってるじゃん
◆QZaw55cn4cの方がまだマシ
716:デフォルトの名無しさん
20/10/15 19:40:03.02 MTvivIgb.net
まぁ音出せとかカラーバー出せとかはクソお題だな
717:デフォルトの名無しさん
20/10/16 19:48:26.76 2tllxc0n.net
お題
自然数nを 2進数にした時、 1が連続する個数の最大値を求める。
例
20201016 -> 5
718:デフォルトの名無しさん
20/10/16 20:25:28.88 YQH8/KbW.net
haskell
import Data.List
maxConsOne = maximum . map length . filter ((==1).head) . group . unfoldr (\n ->if n == 0 then Nothing else Just (mod n 2, div n 2))
main = print $ maxConsOne $ 20201016
----
5
719:デフォルトの名無しさん
20/10/16 21:03:20.03 a9PKFHNt.net
>>705 ruby
f = ->(n) {n.to_s(2).chars.chunk(&:itself).map {|k, a| k == '1' ? a.size : 0}.max}
720:デフォルトの名無しさん
20/10/16 21:35:06.98 XtprH8ZD.net
>>705 JavaScript
const f = (n = 0) => Math.max(...(n.toString(2).match(/1+/g) ?? ['']).map(m => m.length))
console.log(f(20201016)) //=> 5
721:253
20/10/16 23:46:14.30 5gS0lg4h.net
>>705 Perl5
use List::Util max;
print max map{length} sprintf('%b', 20201016) =~ /(1+)/g;
実行結果
$ perl 18_695_bin1.pl
5
722:デフォルトの名無しさん
20/10/17 00:12:43.05 7ct7R1y+.net
>>705 Ruby
p 20201016.to_s(2).split("0").max.size
723:デフォルトの名無しさん
20/10/17 00:24:53.85 u2s9P3C4.net
haskell
無名関数というインチキ使ってしまったので再挑戦バージョン
import Data.List
main = print $ maximum . map sum . group . map (flip mod 2) . takeWhile (/=0) . iterate (flip div 2) $ 20201016
724:
20/10/17 00:46:45.25 4JRxXuyk.net
>>705
URLリンク(ideone.com)
725:デフォルトの名無しさん
20/10/17 01:58:38.41 S6LboNFt.net
>>705 Ruby
n = 20201016
nl = 0
while n > 0
nl = ((nc = (n.odd?)? nc + 1 : 0) > nl)? nc : nl
n >>= 1
end
puts nl
726:デフォルトの名無しさん
20/10/17 01:59:32.64 u2s9P3C4.net
>>712
125の時1になった
727:デフォルトの名無しさん
20/10/17 02:41:53.51 AbkDXvLA.net
これだからQZ
728:
20/10/17 02:53:09.41 4JRxXuyk.net
>>705
C++: URLリンク(ideone.com)
>>712 にはロジックに欠陥がありました
>>714
ご指摘ありがとうございます。
729:703
20/10/17 09:22:46.57 S6LboNFt.net
>>714
自分の >>713 も
- nl = 0
+ nc = nl = 0
730:デフォルトの名無しさん
20/10/17 12:19:37.13 a+zi+w45.net
>>705 C++
URLリンク(wandbox.org)
731:デフォルトの名無しさん
20/10/17 13:46:27.15 eBu6AjRf.net
>>705 C
URLリンク(ideone.com)
732:デフォルトの名無しさん
20/10/17 18:57:16.23 S6LboNFt.net
>>705 Ruby
n = 20201016
i = 0
while n != 0
n &= n << 1
i += 1
end
puts i
733:デフォルトの名無しさん
20/10/17 19:11:03.54 wXdm0x1E.net
>>720
うまいやり方だな。それには気付かなかった。
734:デフォルトの名無しさん
20/10/17 19:29:10.40 wXdm0x1E.net
>>705
Kotlin script
2進数文字列に変換してから 0 を区切り文字にして分割してその中の一番長い文字列の長さを出すというやり方。
fun max1(n: Int) = n.toString(2).split('0').map { it.length }.max()
println(max1(20201016))
これで 5 が出る。
同じやり方を perl5 で(特にモジュール使わずに)やるとこんな感じ。
perl -e '$n=20201016; $m = (sort { $b <=> $a } map { length($_) } (split /0+/, sprintf("%b", $n)))[0]; print "$m\n"'
同じく5が出る。
735:デフォルトの名無しさん
20/10/17 20:05:12.33 vimxgZ9f.net
>>705 JavaScript
let num = 20201016
let ans = num.toString(2).split`0`.sort().pop().length
console.log(ans) //=> 5
736:デフォルトの名無しさん
20/10/17 20:50:55.84 w8j3NnhR.net
>>705 octave
URLリンク(ideone.com)
f = @(n) max(cellfun(@numel, strsplit(dec2bin(n), '0')));
f(20201016)
737:デフォルトの名無しさん
20/10/17 20:54:06.81 frzgm+pU.net
>>705
Perl
URLリンク(paiza.io)
738:デフォルトの名無しさん
20/10/17 23:22:21.08 P3PLPttw.net
いつもRubyの人からなにかしら学ぶことがある
739:デフォルトの名無しさん
20/10/18 00:42:32.49 nYmbGZmV.net
ハトにエサを与えないで下さい
740:デフォルトの名無しさん
20/10/18 01:06:12.01 qT62bbHa.net
QZは自分の頭が悪いのをわざわざ周知してもらうためにクソコードを晒すのか
ドMだな
741:デフォルトの名無しさん
20/10/18 03:42:01.18 DpwMGaW+.net
>>720
なるほどな、感心した
n>>1でもいいわけだな
742:デフォルトの名無しさん
20/10/18 04:21:53.35 xWXtsYNK.net
>>710 のほうが速いと思うが
743:デフォルトの名無しさん
20/10/18 04:36:21.54 F/EhVBet.net
rubyよく分からないけど>>720の方が100倍くらいは速そうに思える
744:デフォルトの名無しさん
20/10/18 05:53:44.51 28u9FaXE.net
うん。速そうだね。数値計算しかしてないし。
745:デフォルトの名無しさん
20/10/18 10:06:25.57 ARbR7jXS.net
20201016みたいに桁数が少ないならそうだけど桁数が増えるとルーブが答え×桁数回だからアルゴリズムそのものは遅い
桁数が少ないうちは内部関数しか使ってない利点で早いとは思うけど
746:デフォルトの名無しさん
20/10/18 12:07:22.14 GUbLWvo/.net
>>733
>>710,720 をベンチマークで比較してみた
URLリンク(ideone.com)
URLリンク(ideone.com)
20201016 では 5~6倍
巨大な数だと 7000倍以上
747:
20/10/18 15:53:00.51 xUpUEWAV.net
>>703
残念ながら、私の出題もイマイチ人気がありませんでした‥‥
748:デフォルトの名無しさん
20/10/18 21:20:25.30 wanN/5Zd.net
>>695
Java
URLリンク(paiza.io)
749:デフォルトの名無しさん
20/10/18 21:43:52.67 wanN/5Zd.net
>>678
Java
URLリンク(paiza.io)
750:デフォルトの名無しさん
20/10/18 22:06:12.69 wanN/5Zd.net
>>676
Java
URLリンク(paiza.io)
751:デフォルトの名無しさん
20/10/18 22:14:01.64 wanN/5Zd.net
>>705
Java
URLリンク(paiza.io)
752:デフォルトの名無しさん
20/10/18 22:45:56.62 F/EhVBet.net
>>734
x = n
while x != 0
x &= x << 1
i += 1
end
ruby知らないから適当に書いたけど
こんな感じにしないと二回目以降nが0でやってるっぽい
こうすると22倍くらいの差だった
753:デフォルトの名無しさん
20/10/18 22:54:22.98 F/EhVBet.net
連続してるビット数が多いときはこの方が速くなったけど
すごいごちゃごちゃになった
i = 0
s = 1
x = n
while x != 0
t = x & (x << s)
if t == 0 then
if s == 1 then
i += 1
break
end
s = 1
else
x = t
i += s
s = (s << 1)
end
end
754:デフォルトの名無しさん
20/10/18 22:56:30.98 QW0aA1Hz.net
>>734
GJ
755:デフォルトの名無しさん
20/10/19 06:30:07.92 8QFJcUQW.net
>>705
echo "obase=2; 20201016" | bc | sed 's/./&\n/g' | uniq -c | perl -lane 'if ($M < $F[0]) {$M = $F[0]}; END{print $M}'
5
756:724
20/10/19 15:26:08.35 u+lqDWSF.net
>>740
ご指摘の通りでした
URLリンク(ideone.com)
を修正しました
>>720 は 1の連続が多いと弱いですね
757:デフォルトの名無しさん
20/10/19 17:41:48.20 Sd7Rn+fr.net
お題
2^(1/3)を百桁表示せよ
出力
1.2599210498948731647672106072782283505702514647015079800819751121552996765139594837293965624362550941543102560356156652593990240
参考
a(n+3) = 3*a(n+2) + 3*a(n+1) + an
a(1) = 3, a(2)=3, a(3)=15
で決まる数列について
min (a(n)/a(n+1), a(n+1)/a(n+2), a(n+3)/a(n+3) )
. < 2^(1/3)-1
. max (a(n)/a(n+1), a(n+1)/a(n+2), a(n+2)/a(n+3) )
で lim a(n)/a(n+1) = 2^(1/3)-1となる
758:デフォルトの名無しさん
20/10/19 21:36:44.38 gq9726ze.net
>>743
echo "obase=2; 20201016" | bc | sed 's/0\+/\n/g' | wc -L
でよくね?
759:デフォルトの名無しさん
20/10/19 22:00:17.27 gq9726ze.net
>>745 Bash
$ echo "scale=100;e(l(2) / 3)" | bc -l
1.25992104989487316476721060727822835057025146470150
79800819751121552996765139594837293965624362550940
760:デフォルトの名無しさん
20/10/19 22:30:56.87 14xSvmON.net
>>745 dc
dcには平方根の演算子はあるが立方根はないので
c^(1/3) = sqrt(c/sqrt(c/sqrt(c/...)))
と変形して適当に反復
100k[2z333>av/]dsaxp
1.2599210498948731647672106072782283505702514647015079800819751121552\
996765139594837293965624362550941
761:デフォルトの名無しさん
20/10/19 23:54:32.40 mPlPc+C9.net
>>745
参考を誰も参考にしてくれないのにワロタ
参考を元に作ったコード
Haskell
URLリンク(ideone.com)
ちなみにrubyのpi.rbが同じテクニック使ってます
そっちは定数係数でない三項間関係の漸化式パージョン
762:デフォルトの名無しさん
20/10/20 02:36:31.61 gFGmv7lM.net
>>746
たしかに
763:デフォルトの名無しさん
20/10/20 04:08:13.14 Mf7a0fdE.net
おっせえじゃん
764:デフォルトの名無しさん
20/10/20 21:07:35.93 hsuNVmIy.net
お題:ぼくがかんがえたさいきょうのちょうわへいきん
2変数調和平均 f(x, y) = 2 / (1 / x + 1 / y)
但し xまたはyがゼロの時、f(x, y) == 0
の計算を考える。
Cのdoubleに相当する精度で計算する際に、理論値(≒多倍長精度で計算したものを
double相当に丸めたもの)と一致しない割合(エラー率)をモンテカルロ法で求めよ。
x, yは、正規分布N(0, 1)の絶対値に従うものとする。
発展的なお題:
前掲の調和平均の式を変形し、エラー率の変化を調べよ。例えば、
f(x, y) = 2 * x * y / (x + y)
のエラー率は、前掲の式と比較してどうだろうか?
また、2 / (1 / x + 1 / y)よりエラー率が低い式は在るだろうか?
発展的なお題その2:
x, yがベンフォードの法則に従う場合はどうなるか。
正規分布N(0, 1)の絶対値の場合と比べて、エラー率の順位は入れ替わるだろうか?
765:デフォルトの名無しさん
20/10/22 01:17:43.95 rA+WIIWx.net
...but nobody answered
766:253
20/10/23 09:17:13.74 7L0FHKID.net
正規乱数をモンテカルロ法で算出して
doubleと多倍長浮動小数点でそれぞれ計差した2変数調和平均に
差がある率を求めれば良いの?
正規乱数なら書かなくともライブラリにあるんだよね。
あるいは誤り率の計算そのものにモンテカルロ法を使うようなやり方なのかな
767:デフォルトの名無しさん
20/10/23 14:48:32.25 oxO2c12D.net
次のプリーズ
768:デフォルトの名無しさん
20/10/23 20:02:36.14 Vzf4XOui.net
お題
乱数を使ってシミュレーションしてください
ジョーカーを除くトランプ52枚から1枚抜き取って箱に入れました
その後、残った51枚から3枚引いて確認したら3枚ともダイヤでした
では最初に抜き取った箱の中が1枚がダイヤである確率はいくらか?
769:デフォルトの名無しさん
20/10/23 20:27:24.17 LovVc5SM.net
>>756 Ruby
DECK = [*0..51]
def hoge
a, *b = DECK.sample(4) until b&.all?{|v| v % 4 == 0}
a % 4 == 0
end
def fuga(n)
1.0 * n.times.count{hoge} / n
end
p fuga(1e6) # => 0.20414
p 10 / 59 # => 0.20408163265306123
770:デフォルトの名無しさん
20/10/23 20:46:02.34 LovVc5SM.net
途中で送信してしまった
99%信頼区間は 0.20414±0.0010382 => [0.2031018, 0.2051782]
理論値は 10/49 = 0.20408163265306123
771:デフォルトの名無しさん
20/10/23 20:49:11.91 5NWyTruo.net
確認前後での確率変動を出せ、っていうお題じゃねえのコレ
772:デフォルトの名無しさん
20/10/24 01:58:03.71 6bv42JD2.net
お題
ジョーカー除く52枚のカードがある
スートを表すS,H,D,Cと、A,K,Q,J,X,9,8,7,6,5,4,3,2との2文字からなる文字列でカードの柄を表すこととする。
当然ながら52枚のうちどの2枚も同じ柄でない
この一組のカードを使ってポーカーゲームをする。
すなわち、初手のカード5枚を配られたプレイヤーは、そのうち0枚以上5枚以下のカードを場に捨てて、同じ枚数のカードを残りの山札47枚から引くことができる。
このときどのカードが選ばれるかは無作為であり、プレイヤーは選択できない。
さて、プレイヤーは、初手のカード5枚に対して、最終的に手に残る5枚のカードをポーカーのルールで評価して得られる配点の期待値が最も高くなるように捨て札を決めたい。
入力としてカード5枚が与えられたとき、そのような捨て札の組み合わせを求めるプログラムを記述せよ。
ここで、ポーカーの役と配点の対応はプログラムのパラメータとして組み込んで良い。
773:デフォルトの名無しさん
20/10/24 21:09:47.85 xQuuF55s.net
>>760
// 任意の役の配点を0とする
printf(0);
774:デフォルトの名無しさん
20/10/24 23:43:41.92 DlOr4HzX.net
>>756
Java
URLリンク(paiza.io)
775:デフォルトの名無しさん
20/10/25 09:27:41.37 dKQi7OF0.net
>>760 Perl5
URLリンク(ideone.com)
役のレートは某ゲームのものを使用
ノーペアのとき
全部変える�
776:謔�1枚残したほうが有利という結果が出てちょっと驚いてる
777:デフォルトの名無しさん
20/10/25 10:49:49.59 zd7LSfWt.net
3が1枚来てて、3が3枚残ってるなら、
・手元の3を捨てると、3が来ても何も起こらない
・手元に3を残すと、3が来るとワンペアになる
つまり、残りのカードを引けるかどうか、になる
>>756の亜種
778:デフォルトの名無しさん
20/10/25 11:44:16.63 c/nOQwtG.net
746はシミュレーションも何もただの引っ掛け問題でしょ
モンティホール問題の方が引っ掛け問としては出来が良い
779:デフォルトの名無しさん
20/10/25 12:58:23.56 vQGWPLvq.net
引っかけも何も条件付確率の初歩の初歩の問題だろ
780:デフォルトの名無しさん
20/10/25 14:14:17.31 tOCt4zCM.net
52枚トランプの束で2枚目から4枚目までがダイアであるような場合に限定してその内先頭もダイアであるような場合は全体の何バーセントかを問う問題
781:742
20/10/26 01:17:42.67 LimhPZzI.net
>>754
正規乱数自体は既存のライブラリで(Pythonならnumpy.random.randnとか)。
例えば、最初のお題(2/(1/x+1/y)で計算するやつ)は、34%位のエラー率になります。
782:253
20/10/27 00:51:04.61 uqMOOUWw.net
そうすると俺にはモンテカルロ法をわざわざ使うところが
どこかよく分からないんだよね…
783:デフォルトの名無しさん
20/10/27 23:07:51.35 9NNPSda/.net
結局>>752は数学的にはどういう意味なんやろ
x,yがN(0,1)に従う独立確率変数、
ρ:R→RがDouble型に丸める関数(Doubleのレンジに入らない確率はほとんど0だから無視)、
h(x,y)=2xy/(x+y)
としたとき
P(ρ(h(ρ(x),ρ(y))) ≠ ρ(h(x,y))) ≒ 34%
って事?
784:253
20/10/28 00:01:38.74 Jno143Es.net
面白い記号だなそれ。
だが、他の人にも伝わるように書いた方が話が広がってよいよ。
どんなに数学が得意な人でも本当に優秀な人はそうすることができると思う
785:デフォルトの名無しさん
20/10/28 00:17:22.90 3yQQm3er.net
Φρズと書いてハイロウズと読みます
786:デフォルトの名無しさん
20/10/28 00:21:17.79 n11gpLQR.net
煽りでもなく素直に疑問なのだが>>770のどこら辺がわからないんだ?
正規分布の下りか?
787:253
20/10/28 00:30:53.43 Jno143Es.net
>>772
マジレスしようと思ったが、そういう問題じゃないんだよ
言葉で書きゃー2,3行のことなんだから
言葉で人に伝わるように書けばいいだろ
と、突き放しちゃ実も蓋も無いので少しマジレスすると
ρ:R→R が写像なのは分かる。
がしかしだ
P(ρ(h(ρ(x),ρ(y))) ≠ ρ(h(x,y))) ≒ 34%
って、お前の教室のホワイトボードじゃねんだぞ。
そんなんでどうっやって世の人と付き合ってんだか…
788:253
20/10/28 00:40:32.18 Jno143Es.net
大体、P()てのは何の関数だ。
どこにでもあるような関数名だが、一般的な関数か?
いや、そんなことの説明は要らない
お前の言いたいことはそんな自己流の式よりも
手短な読んで分かる日本語で書けるはずだ
いいやP()に限らない、お前のレスは一事が万事そんな感じ
一からからやり直せ
そしたら相手してやる
789:デフォルトの名無しさん
20/10/28 00:42:08.54 n11gpLQR.net
>>775
文脈から明らかにP(A)はAが起こる確率でしょうが
ちなみに俺は>>770じゃないんで
790:253
20/10/28 00:43:23.90 Jno143Es.net
>>776
それ関数じゃないだろ。何で関数として書くんだ。
どういう関数空間なんだ?
791:253
20/10/28 00:47:05.09 Jno143Es.net
簡単なことを
わざわざ難しいことのように書くのは
有能な人のすることではない
792:デフォルトの名無しさん
20/10/28 00:51:02.28 n11gpLQR.net
>>777
落ち着けよお前
P(事象A) := 事象Aが起こる確率 なんて高校数学の範疇だぞ
>>770が殊更ペダンチックには感じない
793:253
20/10/28 01:00:33.01 Jno143Es.net
>>779
別に落ち着いているけど
これか
URLリンク(ja.wikipedia.org)
P()が確立っていつから?
俺が大学の頃まではこういう記法は見た記憶が無いんだけど
P(ρ(h(ρ(x),ρ(y))) ≠ ρ(h(x,y))) ≒ 34%
これは言葉で書いたらもっと分かりやすくならないのか?
794:253
20/10/28 01:15:04.26 Jno143Es.net
結局 >>770 は
2 / (1 / x + 1 / y)をdoubleで計算した値と倍長精度で計算したものをdouble相当に丸めたものが一致しない割合
この一行をわざわざ他の人に分かりにくい式で再度書いているだけのこと
繰り返しだし分かりにくいし
意味(doubleで計算した値と倍長精度で計算したものをdouble相当に丸めたものが一致しない割合)
が欠落している
そういうことに気づきな
795:デフォルトの名無しさん
20/10/28 01:17:27.13 6h0Rpnv/.net
多分ですけど、あなた以外はそこまでわかりにくい表現だとは感じていないのだと思いますよ
796:253
20/10/28 01:19:14.69 Jno143Es.net
まじかw
そしたら回答山盛りだ
お前もさんも回答よろしくな
797:デフォルトの名無しさん
20/10/28 01:20:24.09 6h0Rpnv/.net
>>752の意味するところが数学的に自明になればおのずと回答も付くでしょう
798:253
20/10/28 01:20:47.31 Jno143Es.net
蛇足だが、あの式で意味がわかった上で
まさか回答できなかったら、単なる無能だからな
799:253
20/10/28 01:27:14.39 Jno143Es.net
>>784
参考までにあなたは今までどのような回答を投稿されましたか?
800:デフォルトの名無しさん
20/10/28 01:29:09.84 3yQQm3er.net
>>771
> 面白い記号だなそれ。
で、結局面白い記号って何だったの?
801:253
20/10/28 01:30:24.94 Jno143Es.net
ふふ、それは
ヒ・ミ・ツ
802:デフォルトの名無しさん
20/10/28 01:43:43.54 3yQQm3er.net
教科書ないから高校数学 確率で一番上に出たやつ。
URLリンク(studysapuri.jp)
やっぱ高校の教科書に載ってたよなあww
仮に載ってなかったとして大学で使う書籍にもP載ってないって?w
> 俺が大学の頃まではこういう記法は見た記憶が無いんだけど
803:253
20/10/28 01:56:33.39 Jno143Es.net
ゆとり以降だなそりゃ
804:デフォルトの名無しさん
20/10/28 02:11:35.07 d52OC3St.net
恥の上塗りするくらいなら黙ってればいいのに
805:253
20/10/28 02:16:39.09 FRCNqyyj.net
じゃあ何か自慢の回答でもしてよ
806:742
20/10/28 05:10:48.17 MEeLXnFm.net
>>770
2/(1/x+1/y)
を
2*x*y/(x+y)
と変形した場合だと、36%位です(100万回試行してみた)。
807:デフォルトの名無しさん
20/10/28 06:02:02.77 W3KKdO+Q.net
>>752 C
URLリンク(ideone.com)
2 / (1 / x + 1 / y) のエラー率は 38.5%
2 * x * y / (x + y) のエラー率は 40.4%
と出た
808:742
20/10/28 12:23:39.00 jim4KuYP.net
>>794
h0の計算は、xdやxdをlong doubleにcastする感じで!
>double h0 = ( xl == 0. || yl == 0. ? 0. : 2. / (1.L / xd + 1.L / yd));
809:742
20/10/28 13:16:35.16 jim4KuYP.net
間違えました
double h0 = ( xd == 0. || yd == 0. ? 0. : 2. / (1.L / xd + 1.L / yd));
810:デフォルトの名無しさん
20/10/29 00:16:48.93 GFOWX4AY.net
お題:言語機能のみを使い単方向リストを実装しメソッドpush
811:とpopを実装せよ pushはリスト末尾にノードをプッシュし、popはリスト末尾からノードをポップする ノードの持つ値は整数とする
812:デフォルトの名無しさん
20/10/29 00:52:01.80 wtq/xrTf.net
複数pushできるの?
popも個数指定できるの?一個ずつ?
pushの戻り値はリスト自身?入れた値?成否?
813:デフォルトの名無しさん
20/10/29 01:01:50.46 GFOWX4AY.net
>>797
>>798
pushもpopも値は1つずつ
pushの戻り値はなんでもいい
814:デフォルトの名無しさん
20/10/29 10:47:03.25 jsAu6jIB.net
>>797 js
入出力のサンプルケース書いてないやつ絶対自分はやってないだろ
class SinglyLinkedList {
push(value) {
this.head = { next: this.head, value }
}
pop() {
if (!this.head) return
this.head = this.head.next
}
str() {
let { head } = this, s = ""
while (head) {
s += head.value + ", "
head = head.next
}
return s
}
}
815:デフォルトの名無しさん
20/10/29 12:03:58.95 GFOWX4AY.net
>>800
なんで>>797,799の仕様でこんな実装になるんだ?
お題ちゃんと読んでる?
816:デフォルトの名無しさん
20/10/29 12:11:08.30 moZIRBYC.net
>>801
「言語機能のみを使い」は引っかかる表現だったけどそれのことかい?
817:デフォルトの名無しさん
20/10/29 12:16:22.08 95aSRVZj.net
オレもこの「言語機能のみを使い」がわからなかった
「ライブラリ関数使うな」か「文字列操作関数のみを使い」かどっちかかなと
わからんから様子見
818:デフォルトの名無しさん
20/10/29 12:18:16.67 GFOWX4AY.net
>>802
>>800
は787の仕様としてただしかったわ
すまんな
こっちのお題の定義があいまいすぎたらしい
言語機能は問題ない
819:デフォルトの名無しさん
20/10/29 12:21:59.18 GFOWX4AY.net
>>803
ライブラリ使うなって言いたかった
あとお題提出前の実装については>>800に比べるとかなり冗長な実装をしてある
ここに晒す気はないが
820:デフォルトの名無しさん
20/10/29 12:33:09.26 AOpu1Zek.net
stdlib.h使わずに作るの?
821:デフォルトの名無しさん
20/10/29 12:36:05.93 jsAu6jIB.net
>>804
まあええわ
俺もclassは久々に使ったけどできれば使わずに実装したかったわ
822:デフォルトの名無しさん
20/10/29 12:50:57.59 GFOWX4AY.net
>>807
こっちの実装したコードに比べるとそっちのコードはえらくシンプルなんだよな
軽くショックだわ
>>801みたいな口きいてすまんかったな
823:デフォルトの名無しさん
20/10/29 13:24:14.72 GFOWX4AY.net
>>806
リスト以外の実装は自由の想定
stdio.hも使っておk
824:デフォルトの名無しさん
20/10/29 13:27:39.52 GFOWX4AY.net
>>806
C/C++などの言語はmallocなどを使っても良いことにする
825:デフォルトの名無しさん
20/10/29 15:09:10.20 dNWGwdex.net
Haskellみたいな純粋関数だとそもそも標準ライブラリだけだと“状態”を作るのも難しいんだよな
同じ表現は永遠に同じ答えを返すからスタックの“状態”を変化させるというのがそもそもできない
それをなんとかするのに“モナド”というのがあるんだけど状態を処理する“ステートモナド”は標準ライブラリではないんだよな
ほとんど“準標準”だけど
826:デフォルトの名無しさん
20/10/29 16:24:06.73 95aSRVZj.net
State モナドを“準標準”と認めてもらえるなら簡単
Haskell
import Control.Monad.State
pop :: State [a] a
pop = do
a <- get
modify tail
return $ head a
push :: a -> State [a] ()
push x = do
modify ((x :))
return ()
test = do
push 1
push 2
push 3
a <- pop
b <- pop
c <- pop
return ([a,b,c])
main = print $ evalState test []
---
出力
[3,2,1]
827:
20/10/29 19:01:42.56 7aED6VYA.net
>>797
双方向リストの方が、後々いろいろ流用できてありがたいんですけど、それでも端方向リストでインプリしないといけないのですか?
828:デフォルトの名無しさん
20/10/29 19:02:59.18 c1P6mcgH.net
持て余すくらいなら「なるべく使わない」とか評価基準を示すだけにしとけばいいのに
829:デフォルトの名無しさん
20/10/29 19:32:46.09 EQ9lcE/o.net
>>803
全く同じこと思ってたわw
830:デフォルトの名無しさん
20/10/29 19:34:40.84 EQ9lcE/o.net
>>807
どうでもいいけどお前のIDもjsだsな
831:デフォルトの名無しさん
20/10/29 19:40:10.12 Pf0NRL7D.net
>>797 Brainfuck
push: <[>],
pop: <[>]<[-]<
832:デフォルトの名無しさん
20/10/29 20:59:03.61 zgfLAX1f.net
>>797
push,popってリストじゃなくてスタックの機能じゃ?
リストにさせるなら、先頭に追加してく方が速くて楽なのに。
push xs a = a:xs
pop (x:xs) = (xs,x)
反転させたいなら最後の最後にすべきだよ。
Haskell
― 使用例用main関数
main = do pushlist <- (return.push (Cons 1 (Cons 2 Null))) 3
(poplst, popval) <- (return.pop) pushlist
print pushlist
print popval
print poplst
― ここからお題のコード(整数に限定じゃないとダメならdataのList a/Cons aのaをIntに)
data List a = Null | Cons a (List a) deriving (Show)
push xs a = xs +++ (Cons a Null)
pop xs = (myinit xs, mylast xs)
Null +++ ys = ys
(Cons x xs) +++ ys = Cons x (xs +++ ys)
myinit (Cons x Null) = Null
myinit (Cons x xs) = Cons x (myinit xs)
mylast (Cons x Null) = x
mylast (Cons _ xs) = mylast xs
833:デフォルトの名無しさん
20/10/29 21:10:47.05 wtq/xrTf.net
>>797 JavaScript
class List {
#data = []
push(n) {
this.#data = [n, this.#data]
return this
}
pop() {
const [head, tail] = this.#data
if (tail) this.#data = tail;
return head
}
toArray() { return this.#data.flat(Infinity) }
toString() { return String(this.toArray()) }
toJSON() { return this.toArray() }
}
const list = new List
list
.push(0)
.push(7)
.push(2)
console.log('文字列: ' + list) //=> 文字列: 2,7,0
console.log('JSON: ' + JSON.stringify(list))
//=> JSON: {"test":[2,7,0]}
list.pop() //=> 2
list.pop() //=> 7
list.pop() //=> 0
list.pop() //=> undefined
834:デフォルトの名無しさん
20/10/29 21:13:39.21 wtq/xrTf.net
うわ
console.log('JSON: ' + JSON.stringify({'test': list})) //=> JSON: {"test":[2,7,0]}
だった
835:デフォルトの名無しさん
20/10/29 23:09:01.60 MaNQDMIt.net
>>813
お題
双方向リストをC89で実装してください
836:253
20/10/29 23:20:15.73 UgpGZWA4.net
>>817
837:デフォルトの名無しさん
20/10/29 23:24:39.19 3o7XtB23.net
>>797 ocaml
URLリンク(ideone.com)
type 'a _list = Nil | Cons of 'a * 'a _list
exception EmptyListException
let push xs x = Cons(x, xs)
let pop = function Nil -> raise EmptyListException | Cons (x, c) -> (x, c)
let rec each f = function Nil -> () | Cons (x, xs) -> f x; each f xs
let x, xs = pop (push (push (push Nil 1) 2) 3)
let () = print_int x; each print_int xs
838:デフォルトの名無しさん
20/10/29 23:26:08.36 GFOWX4AY.net
>>813
双方向書きたいってことなら書けば
お題は単方向だけど
839:デフォルトの名無しさん
20/10/30 00:06:20.24 aDtUVDPI.net
>>812を改良?
State [Int] だとあらかじめ用意した一個のstackしか使えない
噂に聞いたことあつたST monadで複数のスタック使えるように改造
Haskell
import Control.Monad
import Control.Monad.ST
import Data.STRef
data Stack a = Empty | N { car :: a, cdr :: Stack a } deriving (Show)
push stk val = modifySTRef stk (N val)
pop stk = car <$> readSTRef stk <* modifySTRef stk cdr
main = print $ runST $
840: do sA <- newSTRef Empty sB <- newSTRef Empty push sA 'o' >> push sA 'o' >>push sA 'f' push sB 'r' >> push sB 'a' >> push sB 'b' a1<-pop sA a2<-pop sA a3<-pop sA b1<-pop sB b2<-pop sB b3<-pop sB return [a1,a2,a2,b1,b2,b3] ---- 出力 "foobar"
841:253
20/10/30 00:07:47.66 hMjmzAXb.net
>>797 Perl5
公式マニュアルに書かれている通りsplice関数を使ってpush, popを記述できる。
splice(@a,@a,0,$x); # push(@a, $x)
splice(@a,-1); # pop(@a)
なんだけどspliceを使わず言語のstatementだけでpush, pop関数を記述すると…こんな感じ
use v5.18;
use feature 'signatures';
no warnings "experimental::signatures";
sub Push($a, $x) {
@$a = (@$a, $x);
}
sub Pop($a) {
my @a = @$a;
my $b = $a[-1];
@$a = @a[0..$#a-1];
$b;
}
my @s = (1,2,3); # test main
Push(\@s, 4);
say "@s";
my $y = Pop(\@s);
say $y;
実行結果
~ $ perl 18_787_push_pop.pl
1 2 3 4
4
1 2 3
842:253
20/10/30 00:09:56.81 hMjmzAXb.net
>>826
say $y;
の下に書いてあった最後の行
say "@s";
をコピペしそびれた…orz
843:253
20/10/30 00:22:38.86 hMjmzAXb.net
>>826 Pop関数はこっちの方がいいな、無駄なコピーもないし。
sub Pop($a) {
my $b = @$a[-1];
delete @$a[-1];
$b;
}
844:253
20/10/30 00:32:51.98 hMjmzAXb.net
>>828 deleteは削除したスカラー値を返すわ。だから以下でいいんだ
sub Pop($a) {
my $b = @$a[-1];
delete @$a[-1];
}
845:253
20/10/30 00:34:30.90 hMjmzAXb.net
>>829 my $b = @$a[-1]; 不要だった…orz
sub Pop($a) {
delete @$a[-1];
}
846:デフォルトの名無しさん
20/10/30 00:50:28.84 9RgBA+ge.net
>>797
Java
URLリンク(paiza.io)
847:デフォルトの名無しさん
20/10/30 02:22:50.19 9RgBA+ge.net
>>821
Java
URLリンク(paiza.io)
848:デフォルトの名無しさん
20/10/30 07:07:30.18 cChJ6BWU.net
>>822
あ?
849:デフォルトの名無しさん
20/10/30 23:30:40.86 hYhF3+Ov.net
Brainfuck読めないわ
覚えようかな
850:デフォルトの名無しさん
20/10/31 13:49:55.42 QnYm1bfS.net
お題
与えられた文字列を一文字ずつ見ていき"trick"と"treat"の5文字でどちらが先に揃うか判定してください(順序込み)
どちらもヒットしないときは考慮しなくていいです
treakOrTreat("trick or treat")
// => trick
treakOrTreat(". tr ick")
// => trick
treakOrTreat("ttrriecatk")
// => treat
treakOrTreat("tri kc eat")
// => treat
treakOrTreat("my money")
// => none
851:デフォルトの名無しさん
20/10/31 13:51:26.24 QnYm1bfS.net
>>835 js(self)
function treakOrTreat(text) {
const [tri] = /t.*r.*i.*c.*k/.exec(text) || []
const [tre] = /t.*r.*e.*a.*t/.exec(text) || []
if (!tri && !tre) return 'none'
if (!tri) return 'treat'
if (!tre) return 'trick'
return tri.length < tre.length ? "trick" : "treat"
}
852:デフォルトの名無しさん
20/10/31 14:54:50.69 HHhQTZ6R.net
関数名のミススペリングは修正していいですか
853:デフォルトの名無しさん
20/10/31 15:02:04.99 QnYm1bfS.net
ごっつtypoしてたすまんFIXME
854:デフォルトの名無しさん
20/10/31 15:07:31.21 DmLmDhBA.net
>>835 Common Lisp
URLリンク(ideone.com)
855:デフォルトの名無しさん
20/10/31 15:33:31.91 I05R+wBh.net
相変わらずキモいなあ、いつもの勝手に認定キッズ
ミュートにしてるという情報から相手が雑魚であるというぶっ飛んだ推論をする知性の欠片も持ち合わせない負け組
856:デフォルトの名無しさん
20/10/31 15:36:09.16 DmLmDhBA.net
>>835 Common Lisp
URLリンク(ideone.com)
>>839は無駄な条件判定(二つめの (null a))があったので修正
857:デフォルトの名無しさん
20/10/31 15:44:11.18 pGrSKCPz.net
>>835 JavaScript
function trickOrTreat(str = '') {
const trick = [...'trick']
const treat = [...'treat']
let result = 'none'
for (const c of str) {
if (c === trick[0]) trick.shift()
if (c === treat[0]) treat.shift()
if (!trick.length || !treat.length) {
result = trick.length ? 'treat' : 'trick'
break;
}
}
console.log(result)
}
858:デフォルトの名無しさん
20/10/31 15:54:22.22 i0S/O8KX.net
>>797
C
URLリンク(paiza.io)
859:デフォルトの名無しさん
20/10/31 16:42:52.45 B0ELcd4k.net
>>835
Haskell
URLリンク(ideone.com)
860:デフォルトの名無しさん
20/10/31 17:10:35.46 M62mfk9p.net
>>797
Perl
URLリンク(paiza.io)
861:デフォルトの名無しさん
20/10/31 17:42:14.32 /zmNVLOW.net
>>797
Kotlin
URLリンク(paiza.io)
862:デフォルトの名無しさん
20/10/31 21:33:28.24 g64iH70d.net
>>835
Java
URLリンク(paiza.io)
863:デフォルトの名無しさん
20/10/31 21:58:58.47 t2sIU1o6.net
>>835 Ruby
def trickOrTreat( str )
trick = str.match( /\A.*?t.*?r.*?i.*?c.*?k/ )
treat = str.match( /\A.*?t.*?r.*?e.*?a.*?t/ )
return 'none' unless trick or treat
return 'trick' unless treat
return 'treat' unless trick
return (trick[0].size < treat[0].size)? 'trick' : 'treat'
end
[ "trick or treat", ". tr ick", "ttrriecatk", "tri kc eat", "my money",
"treat or trick", "treat or trick t",
].each{|s|
puts trickOrTreat( s )
}
864:デフォルトの名無しさん
20/10/31 22:19:45.63 B0ELcd4k.net
>>844
改定
やはりHaskellerがこのお題でparsec使わないのはダメという事で
Haskell
import Text.ParserCombinators.Parsec
makeP cs = foldl1 (<>) $ map (\c -> (many $ noneOf [c]) <> (return <$> anyChar) ) cs :: Parser String
first xs ys = case (runParser (makeP xs) () "" ys) of
Left _ -> (1, 0)
Right x -> (0, length x)
trickOrTreat x = case compare (first "trick" x) (first "treat" x) of
LT -> "trick"
GT -> "treat"
otherwise -> "Happy Halloween"
main = do
mapM_ (print.trickOrTreat) ["trick or treat", ". tr ick","ttrriecatk","tri kc eat","my money"]
865:デフォルトの名無しさん
20/10/31 22:49:38.34 pe+8/Oyn.net
>>835
C
#include<stdio.h>
char* trickOrTreat(char*s, char*tk, char*tt){
if(!*tk)return "trick";
if(!*tt)return "treat";
if(!*s) return "none";
if(*s == *tk)tk++;
if(*s == *tt)tt++;
return trickOrTreat(s+1, tk, tt);
}
int main(void){
char* str[] = {"trick or treat", ". tr ick", "ttrriecatk", "tri kc eat", "my money",
"treat or trick", "treat or trick t",};
const int size = sizeof(str)/sizeof(str[0]);
char tk[] = "trick";
char tt[] = "treat";
int i;
for(i=0; i<size; i++){
printf("%s\n", trickOrTreat(str[i], tk, tt));
}
return 0;
}
866:253
20/10/31 22:58:55.98 i+h07tFB.net
>>835 Perl5
for (<DATA>) {
chomp;
%h = map{$_ => [split'']} qw{trick treat};
$k = 'none';
for $c (split'') {
for (keys %h) {
$r = $h{$_};
shift(@$r) if $c eq $$r[0];
unless (@$r) { $k = $_; goto L }
}
}
L: print "$_ -> $k\n";
}
__DATA__
trick or treat
. tr ick
ttrriecatk
tri kc eat
my money
実行結果
~ $ perl 18_825_trickOrTreat.pl
trick or treat -> trick
. tr ick -> trick
ttrriecatk -> treat
tri kc eat -> treat
my money -> none
867:デフォルトの名無しさん
20/10/31 23:10:35.06 8FYB/kmH.net
>>851
なんでお前ずっとコテハンつけてんの?
868:253
20/10/31 23:20:38.29 i+h07tFB.net
>>852 IPアドレスがたまに変わるのと自分のレスを見分けやすくするため。固定ではなく番号はたまに変えてる
気にしないで
869:デフォルトの名無しさん
20/10/31 23:26:17.77 OVAIfmUR.net
>>797 c
URLリンク(ideone.com)
870:デフォルトの名無しさん
20/10/31 23:27:34.12 wd4K8eMC.net
>>853
専ブラ使えばいいのに
871:253
20/10/31 23:32:26.70 i+h07tFB.net
>>855
IPアドレスが変わったり日にちがたった自分のレスを簡単に表示し分けられる専ブラで良いのある?
出来ればLinuxで。ちなStyleは好みではない
872:253
20/10/31 23:38:27.89 i+h07tFB.net
>>854
教科書に載っているようなきれいなコード書くね
873:デフォルトの名無しさん
20/10/31 23:54:01.35 OVAIfmUR.net
>>857
サンクスコ
でも、引数の評価順については正直お行儀悪いんで
勉強してるみんなはそのへん各自ぐぐってみてね
874:デフォルトの名無しさん
20/11/01 00:59:27.52 KABEK1ar.net
>>835
Ruby
text = <<'TEXT'
trick or treat
. tr ick
ttrriecatk
tri kc eat
my money
TEXT
# 配列化
Trick = "trick".chars
Treat = "treat".chars
次へ続く
875:849
20/11/01 01:00:32.73 KABEK1ar.net
>>859
の続き
def find_index( str, original )
idx_2 = 0
str.each_char.with_index do |char, idx| # 1文字ずつ処理する
idx_2 += 1 if char == original[ idx_2 ]
return idx if idx_2 == original.length # すべての文字が一致
end
nil
end
results = text.each_line.map do |line|
trick = find_index( line, Trick )
treat = find_index( line, Treat )
if !( trick || treat ) then "none"
elsif !trick then "treat"
elsif !treat then "trick"
elsif trick < treat then "trick"
elsif trick > treat then "treat"
else "same"
end
end
p results
#=> ["trick", "trick", "treat", "treat", "none"]
876:デフォルトの名無しさん
20/11/01 01:29:12.30 17LNcGyj.net
>>835
Kotlin
URLリンク(paiza.io)
877:デフォルトの名無しさん
20/11/01 01:49:31.61 17LNcGyj.net
>>835
C
URLリンク(paiza.io)
878:838
20/11/01 12:58:01.92 g/v4ZA9S.net
>>835 Ruby
正規表現を捨てて index+inject に
def trickOrTreat( str )
trick = 'trick'.chars.inject(-1){|r,ch| break r unless r = str.index( ch, r+1 ); r }
treat = 'treat'.chars.inject(-1){|r,ch| break r unless r = str.index( ch, r+1 ); r }
return 'none' unless trick or treat
return 'trick' unless treat
return 'treat' unless trick
return (trick < treat)? 'trick' : 'treat'
end
[ "trick or treat", ". tr ick", "ttrriecatk", "tri kc eat", "my money",
"treat or trick", "treat or trick t",
].each{|s|
puts trickOrTreat( s )
}
879:蟻人間
20/11/01 14:40:36.23 wOVD56Lv.net
お題:大阪都構想が実現すると、現在の大阪市は消滅すると予想される。都構想実現前の住所を実現後の住所に変換しなさい。
880:デフォルトの名無しさん
20/11/01 16:05:05.76 +nQAPqAx.net
次行ってみよう
881:蟻人間
20/11/01 16:41:27.74 wOVD56Lv.net
参考:URLリンク(www.asahi.com)
882:蟻人間
20/11/01 16:44:49.88 wOVD56Lv.net
これも:URLリンク(maidonanews.jp)
883:デフォルトの名無しさん
20/11/01 16:51:14.83 VQGUeFT5.net
お前らは競技プログラミングとかやってる?
884:253
20/11/01 16:54:48.84 I8lyxV1q.net
>>868
やろうとしたことはあるがまだ未経験
何か受験勉強みたいになっちゃってるコンテストには魅力を感じない
でも世界トップレベルは年間4000万くらい賞金稼ぐとい話をきいてそういうのにはちょっと惹かれる
885:蟻人間
20/11/01 17:00:25.77 wOVD56Lv.net
>>865
あんまりバカにするなよ。住所変換できないと大坂大混乱になるよ。
886:デフォルトの名無しさん
20/11/01 17:18:29.18 EgIfcLXC.net
バカにしてるのはおまえ
他所の住所変更地の状況知らんのか?50年前の住所でも年賀届くわ
数年~十数年或いはそれ以上旧住所で配送可能。舐めすぎ
887:デフォルトの名無しさん
20/11/01 17:31:11.77 +nQAPqAx.net
>>870
ここでそのお題といても大混乱が回避できるわけでもなし
そういう問題じゃなくてそろそろ自分にいい問題作るセンスがない事自覚すべき
888:デフォルトの名無しさん
20/11/01 17:35:33.69 S9fsJ+JS.net
データ引っ張ってくるだけじゃん
ただの知識問題は悪問
889:デフォルトの名無しさん
20/11/01 18:32:31.31 erpRcPg0.net
やってみたが
競技系はプログラミングのスキル向上には役立たんよ
890:デフォルトの名無しさん
20/11/01 18:50:53.93 4+fLUvoM.net
>>867
このサイト気持ち悪いな
891:蟻人間
20/11/01 19:52:59.24 wOVD56Lv.net
>>875
太陽風を読めよ。
892:デフォルトの名無しさん
20/11/01 19:57:24.03 wWMHVvTS.net
>>876
消えろ
893:蟻人間
20/11/01 20:04:08.68 wOVD56Lv.net
>>877
お前がえろ
894:デフォルトの名無しさん
20/11/02 00:22:13.64 bEILeQs7.net
>>835 octave
URLリンク(ideone.com)
895:デフォルトの名無しさん
20/11/02 04:28:03.49 2/AbCXtL.net
>>835
Perl
URLリンク(paiza.io)
正規表現使ってみました。
896:デフォルトの名無しさん
20/11/02 04:45:05.89 BfD57ecO.net
"trick"と"treat"を受理するオートマトンを作って
入力文字列から1文字ずつ与えて状態遷移(または待機)させていく
末尾まで先に受理されたほうを答えとする
みたいなことだけ考えた
897:デフォルトの名無しさん
20/11/02 04:48:28.19 BfD57ecO.net
けど実装すると無駄にでかくなりそう
898:デフォルトの名無しさん
20/11/02 10:04:22.80 /BOVDIIM.net
オートマトンって言語でなんか表現できる構造ある?
899:デフォルトの名無しさん
20/11/02 10:41:03.91 5JhQS2vf.net
正規表現で表現できる⇔オートマトンで受理できる
でしょ?
今回なら入力xに対し出力がtrickである場合を
[^t]*t[^r]*r[^ie]*i[^ce]*c[^ke]*k.*
|[^t]*t[^r]*r[^ie]*i[^ce]*c[^ke]*e[^ka]*k.*
...
(10パターン)
....
と正規表現だけで表現できてしまう
900:蟻人間
20/11/02 12:23:25.05 iXWhExA8.net
お題:パラボラアンテナが理論上の焦点に電波を集めることを示しなさい。
パラボラアンテナの半径を100とし、原点を中心にx軸上に焦点が来るように配置する。x軸と平行に電波がアンテナに入ってきて、入射角と反射角が等しくなるように電波が反射する。
このとき、どの場所で反射しても、反射した電波を表す直線が理論上の焦点に十分近づくことを示せ。
901:デフォルトの名無しさん
20/11/02 12:23:58.15 UfGVYnOo.net
まじでセンスないな
902:デフォルトの名無しさん
20/11/02 12:36:09.22 zo3ZJgwO.net
パラボラアンテナの半径ってどこのことだよ
903:デフォルトの名無しさん
20/11/02 13:43:55.18 gftnEWfN.net
common lisp
URLリンク(ideone.com)
うーん微妙
904:デフォルトの名無しさん
20/11/02 14:26:45.62 vIueiXdU.net
>>835 .bat
@echo off &setlocal enabledelayedexpansion
if "%~1"=="" echo none&exit /b
set "STR=%~1"
set TRICK=trick
set TREAT=treat
set /a n=0, k=0, t=0
:WHILE
if /i "!STR:~%n%,1!"=="!TRICK:~%k%,1!" if %k% LSS 4 ( set /a k+=1 ) else echo trick&exit /b
if /i "!STR:~%n%,1!"=="!TREAT:~%t%,1!" if %t% LSS 4 ( set /a t+=1 ) else echo treat&exit /b
set /a n+=1
if not "!STR:~%n%,1!"=="" goto :WHILE
echo none&exit /b
905:デフォルトの名無しさん
20/11/02 18:10:30.68 Ac4tp6ZL.net
>>835
Haskell
URLリンク(ideone.com)
iimport Text.ParserCombinators.Parsec
makeP = mconcat . map ( manyTill anyChar . char )
lastInd x s = case ( runParser ( makeP x ) () "" s ) of
Left _ -> ( [ 2, 0 ] , x )
Right y -> ( [ 0, length $ x ++ y ], x )
trickOrTreat x = snd $ minimum [
lastInd "trick" x,
lastInd "treat" x,
( [1,0], "Happy Halloween" ) ]
main = mapM_ ( print . trickOrTreat ) [
"trick or treat",
". tr ick",
"ttrriecatk",
"tri kc eat",
"my money" ]
906:デフォルトの名無しさん
20/11/02 19:01:54.49 hORytTpS.net
>>835
#include <stdio.h>
#include <string.h>
static void
tot (char *p)
{
int i = 0, j = 0;
if ((p = strchr (p, 't')) && (p = strchr (p + 1, 'r')))
while (*++p && !(*p == "ick"[i] && ++i == 3) && !(*p == "eat"[j] && ++j == 3)) ;
printf ("%s\n", (i == 3) ? "trick" : ((j == 3) ? "treat" : "none"));
}
int
main ()
{
tot ("trick or treat");
tot (". tr ick");
tot ("ttrriecatk");
tot ("tri kc eat");
tot ("my money");
}
907:デフォルトの名無しさん
20/11/02 19:55:30.38 0Q72CsT7.net
お題
アスペクト比X:Y、L[inch]のディスプレイの
幅Wと高さHをcm単位でそれぞれ求めよ
[入力]
X Y L
[出力]
W H ※cm単位で小数第1位まで出力
[例]
16 9 40
=> 88.6 49.8
64 27 29
=> 67.9 28.6
3 4 10.2
=> 15.5 20.7
908:869
20/11/02 20:41:57.79 PEXljxha.net
>>835 octave
URLリンク(ideone.com)
・残り文字数数える関数fがガバガバだったので修正
909:デフォルトの名無しさん
20/11/02 20:50:30.27 LqVECFSh.net
>>892
Java
URLリンク(paiza.io)
910:デフォルトの名無しさん
20/11/02 20:55:38.75 UfGVYnOo.net
>>892
実用的じゃん
911:デフォルトの名無しさん
20/11/02 21:39:44.31 PEXljxha.net
>>892 octave
URLリンク(ideone.com)
912:デフォルトの名無しさん
20/11/02 22:00:22.68 PEXljxha.net
>>892 octave
URLリンク(ideone.com)
・若干の変更
913:デフォルトの名無しさん
20/11/02 22:02:25.78 i1cL0pVh.net
>>885
消えろ
914:デフォルトの名無しさん
20/11/02 22:12:37.48 2/AbCXtL.net
>>892
Perl
URLリンク(paiza.io)
915:デフォルトの名無しさん
20/11/02 23:19:41.46 ZpVsHyOp.net
>>892 JavaScript
const f=(x, y, l) => [x, y].map(i => (i * 2.54 * l / Math.sqrt(x ** 2 + y ** 2)).toFixed(1))
console.log(...f(16, 9, 40))
console.log(...f(64, 27, 29))
console.log(...f(3, 4, 10.2))
916:デフォルトの名無しさん
20/11/03 00:18:12.81 1BjkDVvF.net
>>892
Hadkell
cmpin =2.54
r10 = (/10).fromInteger.round.(*10)
toWH (x, y, sz) = let
arg = atan2 y x
diag = sz * cmpin
in ( r10 $ (cos arg) * diag , r10 $ (sin arg) * diag )
main = mapM_ ( print . toWH) [
(16, 9, 40),
(64,27,29),
(3,4, 10.2) ]
917:デフォルトの名無しさん
20/11/03 01:33:31.56 psuX0FGw.net
お題
{1,2,3,4,5,6,7,8}
を幾つかの共通部分を持たない空でない集合にわけるやり方を完全列挙
例えば
{1,6}+{2,8}+{3,4,5,7}
と
{2,8}+{1,6}+{3,4,5,7}
は同じやり方になるので二重カウントしないこと
918:デフォルトの名無しさん
20/11/03 02:32:26.13 yN+x511c.net
>>902
[1..8]は流石にtoo large
haskell
import Data.List
parts [] = [ [ ] ]
parts [x] = [ [ [x] ] ]
parts ( x : xs ) = [ (x : ys) : zs |
ys <- subsequences xs,
zs <- parts $ xs \\ ys ]
main = do
print $ parts [2,3]
print $ parts [1,2,3]
print $ length $ parts [1..8]
----
[[[2],[3]],[[2,3]]]
[[[1],[2],[3]],[[1],[2,3]],[[1,2],[3]],[[1,3],[2]],[[1,2,3]]]
4140
919:デフォルトの名無しさん
20/11/03 08:10:12.54 WKYb8LN0.net
>>903
きれいだな
920:デフォルトの名無しさん
20/11/03 09:07:39.02 psuX0FGw.net
A:={1,2,3,4,5,6,7,8};
A_1:={A};
A_2:={ {a,b} \subset 2^A | a+b=A,~a+~b=A };
A_3:={ {a,b,c} \subset 2^A | a+b+c=A,~a+~b+~c=A };
A_4:={ {a,b,c,d} \subset 2^A | a+b+c+d=A,~a+~b+~c+~d=A };
A_5:={ {a,b,c,d,e} \subset 2^A | a+b+c+d+e=A,~a+~b+~c+~d+~e=A };
A_6:={ {a,b,c,d,e,f} \subset 2^A | a+b+c+d+e+f=A,~a+~b+~c+~d+~e+~f=A };
A_7:={ {a,b,c,d,e,f,g} \subset 2^A | a+b+c+d+e+f+g=A,~a+~b+~c+~d+~e+~f+~g=A };
A_8:={ {a,b,c,d,e,f,g,h} \subset 2^A| a+b+c+d+e+f+g+h=A,~a+~b+~c+~d+~e+~f+~g+~h=A};
B:=A_1+A_2+A_3+A_4+A_5+A_6+A_7+A_8;
count[expand B];
1:{{1},{2},{3},{4},{5},{6},{7},{8}}
2:{{1},{2},{3},{4},{5},{6},{7,8}}
3:{{1},{2},{3},{4},{5},{7},{6,8}}
4:{{1},{2},{3},{4},{5},{8},{6,7}}
5:{{1},{2},{3},{4},{5},{6,7,8}}
6:{{1},{2},{3},{4},{6},{7},{5,8}}
7:{{1},{2},{3},{4},{6},{8},{5,7}}
8:{{1},{2},{3},{4},{6},{5,7,8}}
9:{{1},{2},{3},{4},{5,6},{7,8}}
10:{{1},{2},{3},{4},{7},{8},{5,6}}
11:{{1},{2},{3},{4},{7},{5,6,8}}
12:{{1},{2},{3},{4},{5,7},{6,8}}
...中略....
4135:{{2,7,8},{1,3,4,5,6}}
4136:{{3,7,8},{1,2,4,5,6}}
4137:{{4,7,8},{1,2,3,5,6}}
4138:{{5,7,8},{1,2,3,4,6}}
4139:{{6,7,8},{1,2,3,4,5}}
4140:{{1,2,3,4,5,6,7,8}}
921:デフォルトの名無しさん
20/11/03 09:10:16.73 psuX0FGw.net
美しさだけなら某集合論用処理系に勝る
ものはないと思うが....
>>901の短時間回答能力とHaskelの潜在能力は
驚嘆すべきかも
922:デフォルトの名無しさん
20/11/03 09:15:47.91 psuX0FGw.net
間違ってたときのコード貼ってしまったw
~a+~b=A
とかは要らなかったw
a+b=A
とかだけでよかった
a \cup bが普通の和集合ね。
923:デフォルトの名無しさん
20/11/03 21:04:35.96 eC8ouzxK.net
>>892 bat
:: 引数は整数限定。結果は少数第2位を四捨五入。0~0.04の時のみ少数第2位まで表示
:: 少し大き目の値を与えるとoverflow
@echo off &setlocal enabledelayedexpansion
set /a "x=%1*100, y=%2*100, z=0, d=%3*254, s=x*x+y*y, a=s>>1"
:WHILE
if %a% NEQ %z% set /a "z=a, a=(a+s/a)>>1" &goto :WHILE
set /a w=x*d/a, h=y*d/a
for %%G in (w h) do (
if !%%G:~-1! GEQ 5 set /a %%G+=10
if !%%G! GEQ 100 ( set %%G=!%%G:~0,-2!.!%%G:~-2,1!
) else if !%%G! GEQ 10 ( set %%G=0.!%%G:~-2,1!
) else if !%%G! GEQ 1 ( set %%G=0.0!%%G!
) else if !%%G! EQU 0 ( set %%G=0.00
) else echo ERROR: %%G=!%%G!
)
echo=%w% %h%
924:デフォルトの名無しさん
20/11/04 00:20:20.72 rxWDSDf0.net
>>892 Lua
function f(x, y, l)
local a =2.54 * l / (x * x + y * y)^0.5
return x * a , y * a
end
print(string.format("%.1f , %.1f", f(16, 9, 40)))
実行結果
88.6 , 49.8
925:デフォルトの名無しさん
20/11/04 00:20:22.20 kNuSoIVx.net
windows知らんけど
バッチ・ファイルすげぇなww
926:デフォルトの名無しさん
20/11/04 18:59:14.79 M+x6liG8u
【アフィリエイト】ブログで「月100万円稼ぐ方法」を初心者向けにプロブロガーが解説
URLリンク(www.youtube.com)
【実例有り】ブログで月1万円稼ぐまでの具体的な道筋を教える【プロが解説】
URLリンク(www.youtube.com)
【案件も公開】ブログで月20万円稼ぐ方法の全て。具体的な道筋や戦略も全て公開【雑記でもいけた】
URLリンク(www.youtube.com)
ブログ収益が大きく伸びた、たった1つのきっかけを話す【ネタバレ:人と会う】
URLリンク(www.youtube.com)
ブログで稼ぐ仕組み徹底解説】初心者にもやさしく、丁寧に説明
URLリンク(www.youtube.com)
【ミスるとヤバい】特化ブログと雑記ブログ、どっちがいいの?おすすめの運営方法も解説!
URLリンク(www.youtube.com)
【危険】ブログで稼げずに「挫折」してしまう人の特徴【初心者は特に注意】
URLリンク(www.youtube.com)
927:デフォルトの名無しさん
20/11/04 20:24:03.31 uO47xEs9.net
>>902 Ruby
URLリンク(ideone.com)
928:デフォルトの名無しさん
20/11/05 03:19:19.40 EuRO0zRP.net
>>902
C++
URLリンク(ideone.com)
929:デフォルトの名無しさん
20/11/05 20:02:28.58 pDv0veJc.net
お題
'□'(正方形)と'_'(空白)で表される図形を45度回
930:転して描画せよ。 [例1] □ /\ \/ [例2] ___□ □□_□ _□□□ /\ \/\ /\/ /\ \/\/\/ \/\/ \/
931:デフォルトの名無しさん
20/11/05 20:47:59.87 uObXfCng.net
デカくなっててワロタ
良さげなお題
932:デフォルトの名無しさん
20/11/05 23:31:16.69 5bWXoO+B.net
>>914 html
<textarea style="transform:rotate(45deg)">
___□
□□_□
_□□□
</textarea>
933:デフォルトの名無しさん
20/11/05 23:39:12.30 W9kenpkY.net
>>916
すげぇな
今はCSSでこんなことまでできるのか
934:デフォルトの名無しさん
20/11/05 23:40:00.35 uObXfCng.net
:scale(2)もしとけ
935:デフォルトの名無しさん
20/11/06 01:21:28.35 DUBJiW5Z.net
>>914
haskell
URLリンク(ideone.com)
936:デフォルトの名無しさん
20/11/06 03:01:56.79 2mWV4tVe.net
>>902
Java
URLリンク(paiza.io)
937:253
20/11/06 13:23:23.40 1EHNC/LO.net
>>902 Perl5
use feature qw{current_sub say};
use Data::Dump 'dump';
@a = sub{
my $l = pop;
@_ ? ( map{
sub{
map{
sub{
sub{
push @{$_[$_]}, $l;
[@_]
}->(map{[@$_]} @_);
}->(@_)
} 0..@_
}->(@$_)
} __SUB__->(@_) ) : [[$l]];
}->(1..8);
say dump @a;
say scalar @a;
実行結果
~ $ perl 18_892.pl
(
[[1 .. 8]],
[[1 .. 7], [8]],
… 中略
[[1], [2], [3], [4], [5], [6], [7, 8]],
[[1], [2], [3], [4], [5], [6], [7], [8]],
)
4140
938:デフォルトの名無しさん
20/11/06 13:24:39.43 DUBJiW5Z.net
>>914
haskell
素直に内包表記使ったVer.
URLリンク(ideone.com)
939:デフォルトの名無しさん
20/11/07 15:16:17.29 dGj5mxP2.net
sed 's/□/◇/g'
あ、いや、なんでもないです。忘れてください。
940:デフォルトの名無しさん
20/11/07 15:50:17.56 0+q2MsjY.net
>>914 bat
@echo off &setlocal enabledelayedexpansion
if "%~1"=="" set "this=%~0" &"%~0" "□"
set /a n=0, Hmax=0
:GET_ARG
set "arg%n%=%~1"
set "arg%n%=!arg%n%:_=0 !"
set "arg%n%=!arg%n%:□=1 !"
shift
if not "%~1"=="" set /a n+=1 &goto :GET_ARG
for /L %%i in (0,1,%n%) do ( set h=0
for %%b in (!arg%%i!) do set /a a[%%i;!h!]=%%b, h+=1
if !h! GTR !Hmax! set /a Hmax=h
)
set /a t=n+Hmax, Hmax-=1
for /L %%a in (0,1,%t%) do for /L %%b in (0,1,%t%) do set R[%%a;%%b]=0
for /L %%a in (0,1,%n%) do for /L %%b in (0,1,%Hmax%) do (
set /a A=%%a+%%b, B=a+1, C=n+%%b-%%a, D=c+1
set /a "R[!A!;!C!]|=a[%%a;%%b], R[!A!;!D!]|=a[%%a;%%b], R[!B!;!C!]|=a[%%a;%%b], R[!B!;!D!]|=a[%%a;%%b]"
REM orをxorに替えればアウトライン表示
)
:: for /L %%A in (0,1,%t%) do (for /L %%B in (0,1,%t%) do set "P%%A=!P%%A!!R[%%A;%%B]!") &echo !P%%A!
for /L %%A in (0,1,%t%) do (
for /L %%B in (0,1,%t%) do (
set /a "M=%%A+%%B, M%%=2"
if "!R[%%A;%%B]!"=="0" (set "S%%A=!S%%A! ") else if "!M!"=="0" (set "S%%A=!S%%A!/") else set "S%%A=!S%%A!\"
)
echo=!S%%A!
)
endlocal
if not "%~0"=="_□□□" "%this%" "___□" "□□_□" "_□□□"
pause &exit /b
941:デフォルトの名無しさん
20/11/07 19:47:28.12 /E6xY+R5.net
バッチでやるとかいい根性してる
942:デフォルトの名無しさん
20/11/07 21:06:37.63 anINQjB0.net
>>914 Common Lisp
URLリンク(ideone.com)
943:デフォルトの名無しさん
20/11/07 22:21:52.44 alCltY04.net
>>918
scale(1.41421356)でしょ
944:デフォルトの名無しさん
20/11/07 23:04:28.88 zLEnd997.net
>>902
ビット操作で直接作れた
URLリンク(paiza.io)
945:デフォルトの名無しさん
20/11/08 00:05:04.78 DLA7KrcO.net
>>924
バッチファイル兄貴いいぞ
もっとやれ
946:デフォルトの名無しさん
20/11/08 00:15:55.29 ct8WHwWl.net
バッチよくやってるな
batにトランスパイルできるもっといい感じの構文の言語とかないの
947:デフォルトの名無しさん
20/11/08 02:24:23.73 vLTv8mzL.net
バッチで>>902やる猛者はいないのか?
QZならできそうだがだんまりか?
948:デフォルトの名無しさん
20/11/08 02:34:25.46 HKu5GaPi.net
>>928
このコードZen2までのAMDのCPUだと多分とんでもなく遅くなる
ここで使ってるpdep命令がintelのやZen3と比べて100倍以上遅いから
949:
20/11/08 03:02:51.65 H3a4zXqH.net
>>931
私は C しか書けません
950:デフォルトの名無しさん
20/11/08 03:56:26.07 YnyAcD/m.net
>>930
こんなのならあった
URLリンク(github.com)
moduleサポート:
export say_hello
echo Hello, %1!
end export
でエクスポート
import say_hello Takashi
でインポート(というかecho Hello, Takashi!に置き換わる)
値返却 (return) サポート:
export ask q
set /p result=%q%?
return %result%
end export
export delete_dir
import -> agree ask "Delete %1"
if "%agree%" == "yes" (
rmdir /S /Q %1
)
end export
globalキーワード:
module内の変数はデフォでlocal。
global変数にしたいときはglobalキーワードを使う。
global my_var=hogehoge
951:デフォルトの名無しさん
20/11/08 03:57:27.82 YnyAcD/m.net
>>934 の続き
再帰サポートのための2つのディレクティブ:
@safe_recursion
@follow_local
クラスとオブジェクト:
クラス作成
class ClassTest
export say_hello
echo Hello, %1!
end export
export say_bye
echo Bye, %1!
end export
end class
オブジェクト生成
new -> my_class ClassTest
メソッド呼び出し
import %my_class%.say_hello Takashi
import %my_class%.say_bye Takashi
他、クラスフィールドやマジックメソッドなど
952:デフォルトの名無しさん
20/11/08 04:20:05.05 YnyAcD/m.net
>>930
もうひとつ。
URLリンク(github.com)
>>934 がbatの拡張といったおもむきなのに対して、こちらは専用DSLからのトランスパイラ。Python製。
二値の平均:
avg(arg1, arg2, average)
fun avg {
num a = larg1 + larg2
num a = a/2
"echo" a
}
以下にトランスパイルされる
@echo off
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
call :avg %1,%2,%average%
@EXIT /B 0
:avg
set /a a=%~1 + %~2
set /a a=%a% / 2
echo %a%
EXIT /B 0
0から9999まで表示:
for (num i = 0;i < 10000;i+1){
"echo" i
}
トランスパイル結果略
953:デフォルトの名無しさん
20/11/08 05:03:48.08 YnyAcD/m.net
>>930
シェルスクリプトからの変換系:
URLリンク(github.com)
URLリンク(github.com)
あと専用言語からのトランスパイル系でもうひとつ凄いのがあった。
URLリンク(github.com)
タイプ的には >>936 と同じような感じなんだけどbatにもシェルスクリプトにもコンパイルできる。
こっちは凄いねスター4,000超えてるわ。
なんでこれが最初に見つからんのや…
プレイグラウンド( URLリンク(batsh.org) )もあってサンプルロード・コンパイルもできるから試してみて。
文法はオーソドックスなC系ですね。
954:デフォルトの名無しさん
20/11/08 05:16:53.07 YnyAcD/m.net
>>937
moongiftに紹介記事があった。
URLリンク(www.moongift.jp)のスクリプトを生成するプログラミング言語/
…そしてアドレスバー見たら既にお気に入りに登録されていた…
955:デフォルトの名無しさん
20/11/08 08:18:54.23 ct8WHwWl.net
>>937
これきれいだな
956:デフォルトの名無しさん
20/11/09 23:19:00.95 biYC5NlX.net
もうすぐポッキーの日
[お題] 人口合計でオール1
URLのページに都道府県別の人口が載っている。
今回使用するのは、2019/10のデータ
URLリンク(ideone.com)
同じ県は一回のみで、異なる県を何県でも選んでよい。
(つまり選び方は全部で 2^47 種類)
人口合計が"1"のみの数字となる選び方は何種類あるか?
(実質、1111万1111人, 1億1111万1111人になる選び方)
※一発正解問題、実行時間3秒程度。
同ページの他の年月人口でも計算できる程度のクオリティでok
※ちなみに 2015/10データだと916(40+876)種類だった。
957:デフォルトの名無しさん
20/11/09 23:52:24.94 XExSNiE1.net
11111111 は43?
111111111はオンラインコンパイラでタイムアウトorz
958:デフォルトの名無しさん
20/11/10 00:38:20.57 duQVrAg3.net
面白そうなお題
959:デフォルトの名無しさん
20/11/10 00:38:46.30 qJS2/p90.net
111111111 は650かな?
960:デフォルトの名無しさん
20/11/10 00:45:23.62 qJS2/p90.net
とりあえず
Haskell
spp19 = (小さいもの順に並べた元データ)
findSum :: Int -> [Int] -> Int
findSum x ys = case ys of
[] -> 0
( z : zs ) | z > x -> 0
( z : zs ) | z == x -> 1
( z : zs ) | otherwise ->
( findSum x zs )
+ ( findSum ( x - z ) zs )
main = do
print $ findSum 15105031 spp19
print $ findSum 11111111 spp19
----
650
43
961:デフォルトの名無しさん
20/11/10 02:25:54.45 903MPdZb.net
batコーイ!!
962:デフォルトの名無しさん
20/11/10 02:49:15.00 VuEsWlWs.net
>>940
URLリンク(ideone.com)
力任せなコードだけどどうにか時間内に終わった
963:デフォルトの名無しさん
20/11/10 13:44:24.83 3xGJBleZ.net
典型的なdp問題じゃねえの
964:929
20/11/10 17:29:30.75 q5cN/btj.net
>>940
・想定解はDPの数え上げ
さすがに1.1億×47は苦しいので、
1.1億に関しては、(全人口 - 1.1億)で計算する。
そうすれば、1600万×47の計算量で済む。
URLリンク(ideone.com)
下にpython(numpy)で想定解追加
965:253
20/11/11 00:47:47.87 vox+S3u3.net
(´・ω・`)
966:デフォルトの名無しさん
20/11/11 18:19:57.16 NMl7/e2v.net
暇つぶしに>>944がどれくらい再帰呼び出し読んでるか数えてもらった
findSum' x ys = let ( z : zs ) = ys in case ys of
[ ] -> 0
_ | z >= x -> 0
otherwise -> ( findSum' x zs ) + ( findSum' ( x - z ) zs ) + 2
----
2021619696
20億回ちょい
dpだと15,105,031×47=709,936,457で7億回ちょいだから35%ほどになるのか
勉強になった
967:デフォルトの名無しさん
20/11/12 15:39:00.87 VX9X1ew1.net
お題1
1~nまでの偶数をランダムに出力してください
お題2
[開始の数] [増分] [終了の数]を入力として受け取りランダムに出力してください
例
入力: 1 2 10
出力:
1
1
3
9
1
7
5
968:デフォルトの名無しさん
20/11/12 15:58:04.88 uK53dAw4.net
>>951 を読んで、やっぱり日本語は非論理的な言語だな、と思った。
969:デフォルトの名無しさん
20/11/12 16:04:34.29 VX9X1ew1.net
書き手の問題だと思うよ
970:デフォルトの名無しさん
20/11/12 18:42:17.55 HU5jtk1k.net
オレは深まりゆく秋を感じた
971:デフォルトの名無しさん
20/11/12 19:26:25.71 VX9X1ew1.net
ふーけゆくー秋の夜ー
972:デフォルトの名無しさん
20/11/12 19:34:08.43 nzp5rNOe.net
>>951 Ruby
p rand(2..$_.to_i) & -2 # => 32 while gets
-*- input -*-
2
10
100
-*- output -*-
2
6
78
p eval$_.gsub(/\s+/,'%s')%%w[.step(*[ , ].rotate).to_a.sample]while gets
-*- input -*-
1 2 10
1 2 10
10 5 99
-*- output -*-
7
1
85
973:デフォルトの名無しさん
20/11/12 23:53:28.13 HU5jtk1k.net
そゆいみか
入力パースするとこは略して
Haskell
import System.Random
import Control.Monad
randomABC a b c = let
r = [ a, a+b .. c ]
in ( r !! ) <$> ( randomRIO ( 0, length r - 1 ) :: IO Int )
main = do
print =<< ( replicateM 20 $ randomABC 1 2 10 )
print =<< ( replicateM 20 $ randomABC 5 7 40 )
----
[1,1,9,7,9,7,7,9,7,5,7,7,7,3,7,1,5,9,5,7]
[33,26,26,26,12,19,40,40,12,33,19,26,19,26,26,33,19,5,5,33]
974:デフォルトの名無しさん
20/11/13 20:43:02.05 3cTZftC0.net
>>951 bat
@echo off &setlocal
set /a n=8 &REM 出力個数
echo -3 9
for /L %%i in (1,1,%n%) do call :RAND_A2B -3 9
echo=&echo 3 -5
for /L %%i in (1,1,%n%) do call :RAND_A2B 3 -5
echo=&echo 4 4
for /L %%i in (1,1,%n%) do call :RAND_A2B 4 4
echo=&echo -5 2 2
for /L %%i in (1,1,%n%) do call :RAND_SiE -5 2 2
echo=&echo 2 -3 -12
for /L %%i in (1,1,%n%) do call :RAND_SiE 2 -3 -12
echo=&echo 2 3 -4
for /L %%i in (1,1,%n%) do call :RAND_SiE 2 3 -4
pause &exit /b
:: 1~n間の偶数をrandom出力 => a~b間の偶数をrandom出力
:RAND_A2B
set