1 名前:デフォルトの名無しさん mailto:sage [2020/07/14(火) 13:53:46 ID:jW5p6F/e.net] プログラミングのお題スレです。 【出題と回答例】 1 名前:デフォルトの名無しさん お題:お題本文 2 名前:デフォルトの名無しさん >>1 使用言語 回答本文 結果がある場合はそれも 【ソースコードが長くなったら】 (オンラインでコードを実行できる) https://ideone.com/ codepad.org/ compileonline.com/ rextester.com/runcode https://runnable.com/ https://code.hackerearth.com/ melpon.org/wandbox https://paiza.io/ 宿題は宿題スレがあるのでそちらへ。 ※前スレ プログラミングのお題スレ Part17 https://mevius.5ch.net/test/read.cgi/tech/1584031367/
669 名前:蟻人間 mailto:sage [2020/10/10(土) 19:24:31.52 ID:c6WyhNHP.net] お題: 振動数1000Hzの音を1秒間発振せよ。
670 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 19:32:24.80 ID:53GLINoh.net] >>649 c https://ideone.com/DbqsXs
671 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 19:46:18.01 ID:LCYuVeVr.net] haskell import Data.Maybe main = print $ product $ map ((fromJust).(flip lookup (zip ['\t'..] [1..]))) "&myC"
672 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 21:44:48.33 ID:0z4oJBva.net] >>658 js var ctx = new window.AudioContext var osc = ctx.createOscillator() osc.type = 'sine' osc.frequency.value = 1000 osc.connect(ctx.destination) osc.start() osc.stop(1)
673 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 23:07:21.98 ID:t1LUP7rm.net] >>649 haskell 改良 unicode = length . tail . (enumFromTo minBound) main = print $ product $ map unicode "ാᝇ"
674 名前:デフォルトの名無しさん [2020/10/10(土) 23:18:40.46 ID:iOujIiR/.net] >>644 Java https://paiza.io/projects/taHgDigIq_C5KjS66xaCfQ https://dotup.org/uploda/dotup.org2277678.png
675 名前:デフォルトの名無しさん mailto:sage [2020/10/11(日) 00:16:06.04 ID:6GsmNhIZ.net] >>649 JavaScript [1+1,1-1,1+1,1-1,1,1-1,1,1-1].reduce((acc,n)=>acc+n,'')
676 名前:デフォルトの名無しさん [2020/10/11(日) 01:54:01.50 ID:eYi6TEVp.net] >>614 Java https://paiza.io/projects/IVaRnsx6lYLlO1CcbniO-Q
677 名前:デフォルトの名無しさん [2020/10/11(日) 08:58:57.96 ID:luIvAMCe.net] >>649 J smoutput ,&":/ 'amp' i. 'papamama'
678 名前:デフォルトの名無しさん [2020/10/11(日) 11:20:41.53 ID:eXVrSXVr.net] >>649 bash aa=1; bb=$((aa-aa)); cc=$aa$bb$aa$bb; printf "%d" $((cc+cc)) $cc; echo
679 名前:デフォルトの名無しさん [2020/10/11(日) 17:59:24.67 ID:/6XslNRS.net] >>638 Perl https://paiza.io/projects/wfQXB4arB2zbu4DNYEiU5w eval が使えて楽なので、つい。
680 名前:デフォルトの名無しさん [2020/10/11(日) 18:12:54.16 ID:eYi6TEVp.net] >>611 Java https://paiza.io/projects/2bTy71EhJJcVemamRx8IPA
681 名前:デフォルトの名無しさん [2020/10/11(日) 19:16:59.76 ID:/6XslNRS.net] >>644 Kotlin https://paiza.io/projects/O1eUwROYKRQepDq3N-VyUA paiza.io はHTMLで出力させてブラウザに表示できるのでカラーバーも出してみました。
682 名前:デフォルトの名無しさん [2020/10/11(日) 19:36:20.38 ID:eYi6TEVp.net] これは良いこと聞いた
683 名前:デフォルトの名無しさん [2020/10/11(日) 19:48:34.94 ID:ki6dTuuo.net] >>649 Common Lisp (SBCL, 処理系依存) https://ideone.com/nImAgj
684 名前:デフォルトの名無しさん mailto:sage [2020/10/11(日) 20:05:13.72 ID:FQjAt+Dq.net] >>672 かわいい
685 名前:デフォルトの名無しさん mailto:sage [2020/10/11(日) 20:30:57.80 ID:vt3DXswM.net] >>649 brainfuck >+++++++[<+++++++>-]<+.--.++.--.+.-.+.-.
686 名前: mailto:sage [2020/10/11(日) 23:30:32.44 ID:A2vGg89g.net] >>614 C(C++) https://mevius.5ch.net/test/read.cgi/tech/1434079972/70
687 名前:蟻人間 mailto:sage [2020/10/11(日) 23:57:26.40 ID:4cQ/GxGI.net] お題: 整数0〜10の一様分布の乱数を百回発生させて、その統計結果を基に各整数を横軸、回数を縦軸とする棒グラフ(ヒストグラム)を描画し(棒の最大幅32字)、ほぼ一様であることを確かめなさい。
688 名前:デフォルトの名無しさん mailto:sage [2020/10/11(日) 23:59:14.77 ID:B+MSoWxK.net] paiza.io は、text, html, json で出力できるのか html も、部分的なタグだけを書いても動くのか
689 名前:蟻人間 mailto:sage [2020/10/12(月) 00:01:01.03 ID:rx5xRSFU.net] >>676 訂正。 (誤)各整数を横軸、回数を縦軸とする棒グラフ (正)各整数を縦軸、回数を横軸とする棒グラフ
690 名前:デフォルトの名無しさん mailto:sage [2020/10/12(月) 01:06:07.97 ID:eqKg5iqj.net] haskell import Data.List import System.Random trial records = do x <- randomRIO (0, 1) :: IO Double return $ (truncate $ x * 11) : records experience = iterate (>>= trial) (return [0..10]) showrecord (x,y) = let clsstr = id $ reverse $ take 2 $ ( ++ (repeat '0')) $ reverse $ show x barstr = replicate y '*' in concat [ clsstr," ", barstr,"\n"] main = do records <- experience !! 100 putStr $ id $ concat $ map showrecord $ map (\x -> (head x, length $ tail x)) $ group $ sort $ records
691 名前:デフォルトの名無しさん [2020/10/12(月) 01:14:47.03 ID:hVCmG980.net] >>649 Kotlin https://paiza.io/projects/32aoQfPBUWZ0tnk2E5fg2g ちょっと変わった感じにしようと思ってこうした。
692 名前:デフォルトの名無しさん [2020/10/12(月) 08:18:41.49 ID:fHHXzdlp.net] >>676 二項分布になるんじゃないかなあ
693 名前:デフォルトの名無しさん [2020/10/12(月) 16:10:06.27 ID:Wx/lfAmjI] 「頭使えよ貧乏人」に思う、寝てても金入るシステムを作る人 https://www.youtube.com/watch?v=VEB6M_s6abs バカ不平多し★へつらい生きてるからリストラ対象 https://www.youtube.com/watch?v=carOYI-xNoI 勝ちは偶然、負けは必然★負けて消えた人に足りなかったものは? https://www.youtube.com/watch?v=agAQTF1OaBU&t=38s リーダー達の給料が高いのは単純労働者じゃないから https://www.youtube.com/watch?v=8o9il6dVXGk できません、自信がありません、無理です★ボンクラにしたのは誰? https://www.youtube.com/watch?v=54YNXSQsxuM 稼げない人へ★
694 名前:報商材こそ稼げない分野が分かる https://www.youtube.com/watch?v=x_2nSmlx3og 9割の人は、ただの作業員★自学自習こそ仕事の基本 https://www.youtube.com/watch?v=vIGKDmmBJcs サラリーマン、10年経てばボンクラ説 https://www.youtube.com/watch?v=QdfVJnVuLlY [] [ここ壊れてます]
695 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 15:32:12.46 ID:M1NONSBM.net] >>658 オーディオ系はシステム依存度が高いから余りサンプルが出てこないね。 WindowsやMacOSなら簡単そうだが 1kHz の音源ファイルを使うのは違反かな?
696 名前:蟻人間 mailto:sage [2020/10/14(水) 17:27:12.50 ID:TNR/wFHW.net] >>658 C/C++ with Win32 #include <windows.h> int main(void) { Beep(1000, 1000); }
697 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 17:57:41.59 ID:qOYZdiW9.net] 答え出てきても試しようがない
698 名前:蟻人間 mailto:sage [2020/10/14(水) 18:19:22.34 ID:TNR/wFHW.net] >>658 Python with Windows import winsound winsound.Beep(1000, 1000);
699 名前:蟻人間 mailto:sage [2020/10/14(水) 18:24:27.45 ID:TNR/wFHW.net] >>658 Python with Mac import os os.system('play -n synth 1 sin 1000');
700 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 18:36:34.21 ID:Azmo5ss/.net] シェル経由でSoX playコマンド呼んでるだけやんけ Pythonもmacも関係ねぇわ
701 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 19:17:28.35 ID:Y0U/d7P+.net] OSにつく前置詞はwithじゃなくてonだろハゲ
702 名前:デフォルトの名無しさん [2020/10/14(水) 19:30:29.09 ID:pZU5VHHG.net] 試すと音が出て煩そうだから試す気になれない。
703 名前:蟻人間 mailto:sage [2020/10/14(水) 19:50:02.82 ID:TNR/wFHW.net] テレビの自主規制音と同じ音だよ。 https://ja.wikipedia.org/wiki/%E8%87%AA%E4%B8%BB%E8%A6%8F%E5%88%B6%E9%9F%B3
704 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 00:45:55.69 ID:BUh584nA.net] >>688 iOS じゃ、play コマンドがなさそうなんだよな。
705 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 01:18:37.79 ID:fqrOjoDi.net] 結局このスレで盛り上がるのは環境によらず言語によらず、でも多少は骨のあるようなお題なんだよな へぇその言語ならそんなにキレイに書けるのかとか普段自分が使ってない言語ではどうやって実現できるのか眺めたりするのが面白い 音鳴らすなんてお題として面白いわけがない
706 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 01:40:28.46 ID:S6IC+plr.net] ヒント:出題者
707 名前:デフォルトの名無しさん [2020/10/15(木) 11:44:28.12 ID:cDg3UiVL.net] 蟻人間さんへのお題: 文字列を受け取って、RFC 5322にしたがってSubjectヘッダを出力してください(MUST、SHOULDを満たすこと) 文字コードはUTF-8、エンコーディングはBエンコードを使用してください
708 名前:蟻人間 mailto:sage [2020/10/15(木) 13:28:00.67 ID:s1gNbcw/.net] >>695 Python text = 'Re: Re: This is a subject text. This is a subject text. This is a subject text.' if text[0:4] == 'Re: ': __while text[0:4] == 'Re: ': ____text = text[4:] __text = 'Re: ' + text import base64 text = 'Subject: ' + base64.b64encode(text.encode('utf-8')).decode('ascii'); ary = [] while len(text) > 78: __ary.append(text[0:78]) __text = text[78:] ary.append(text) import platform if platform.system() == 'Windows': __for item in ary: ____print(item) else: __for item in ary: ____print(item, end="\r\n")
709 名前:蟻人間 mailto:sage [2020/10/15(木) 13:49:36.74 ID:IXtC9lOP.net] >>696 訂正。 (誤) while len(text) > 78: (正) while len(text) >= 78:
710 名前:デフォルトの名無しさん [2020/10/15(木) 14:30:46.93 ID:cDg3UiVL.net] >>696 いろいろ違うので・・・メールのソース眺めたが良いです
711 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 19:14:52.90 ID:QzXinxJa.net] 頭の悪いお題を連投してるやつはやっぱり頭悪いんだな
712 名前:デフォルトの名無しさん [2020/10/15(木) 19:22:03.88 ID:cDg3UiVL.net] そんなことないと思うけどな あまり他人の悪口言わない方が良いよ
713 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 19:28:33.00 ID:QzXinxJa.net] くっそみたいなお題延々と出し続けてウザいじゃん
714 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 19:29:59.48 ID:MTvivIgb.net] >>638 なんかはいいと思うんだけどな eval使えないHaskellerにはいい練習問題になってる
715 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 19:38:14.90 ID:QzXinxJa.net] ウェブアプリつくれだのGUIアプリつくれだの酷い事散々言いまくってるじゃん ◆QZaw55cn4cの方がまだマシ
716 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 19:40:03.02 ID:MTvivIgb.net] まぁ音出せとかカラーバー出せとかはクソお題だな
717 名前:デフォルトの名無しさん [2020/10/16(金) 19:48:26.76 ID:2tllxc0n.net] お題 自然数nを 2進数にした時、 1が連続する個数の最大値を求める。 例 20201016 -> 5
718 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 20:25:28.88 ID:YQH8/KbW.net] haskell import Data.List maxConsOne = maximum . map length . filter ((==1).head) . group . unfoldr (\n ->if n == 0 then Nothing else Just (mod n 2, div n 2)) main = print $ maxConsOne $ 20201016 ---- 5
719 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 21:03:20.03 ID:a9PKFHNt.net] >>705 ruby f = ->(n) {n.to_s(2).chars.chunk(&:itself).map {|k, a| k == '1' ? a.size : 0}.max}
720 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 21:35:06.98 ID:XtprH8ZD.net] >>705 JavaScript const f = (n = 0) => Math.max(...(n.toString(2).match(/1+/g) ?? ['']).map(m => m.length)) console.log(f(20201016)) //=> 5
721 名前:253 mailto:sage [2020/10/16(金) 23:46:14.30 ID:5gS0lg4h.net] >>705 Perl5 use List::Util max; print max map{length} sprintf('%b', 20201016) =~ /(1+)/g; 実行結果 $ perl 18_695_bin1.pl 5
722 名前:デフォルトの名無しさん [2020/10/17(土) 00:12:43.05 ID:7ct7R1y+.net] >>705 Ruby p 20201016.to_s(2).split("0").max.size
723 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 00:24:53.85 ID:u2s9P3C4.net] haskell 無名関数というインチキ使ってしまったので再挑戦バージョン import Data.List main = print $ maximum . map sum . group . map (flip mod 2) . takeWhile (/=0) . iterate (flip div 2) $ 20201016
724 名前: mailto:sage [2020/10/17(土) 00:46:45.25 ID:4JRxXuyk.net] >>705 https://ideone.com/hQRZsi
725 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 01:58:38.41 ID:S6LboNFt.net] >>705 Ruby n = 20201016 nl = 0 while n > 0 nl = ((nc = (n.odd?)? nc + 1 : 0) > nl)? nc : nl n >>= 1 end puts nl
726 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 01:59:32.64 ID:u2s9P3C4.net] >>712 125の時1になった
727 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 02:41:53.51 ID:AbkDXvLA.net] これだからQZ
728 名前: mailto:sage [2020/10/17(土) 02:53:09.41 ID:4JRxXuyk.net] >>705 C++: https://ideone.com/7H5HBx >>712 にはロジックに欠陥がありました >>714 ご指摘ありがとうございます。
729 名前:703 mailto:sage [2020/10/17(土) 09:22:46.57 ID:S6LboNFt.net] >>714 自分の >>713 も - nl = 0 + nc = nl = 0
730 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 12:19:37.13 ID:a+zi+w45.net] >>705 C++ https://wandbox.org/permlink/udZVzwy6pQKbcPa5
731 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 13:46:27.15 ID:eBu6AjRf.net] >>705 C https://ideone.com/DwvfL2
732 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 18:57:16.23 ID:S6LboNFt.net] >>705 Ruby n = 20201016 i = 0 while n != 0 n &= n << 1 i += 1 end puts i
733 名前:デフォルトの名無しさん [2020/10/17(土) 19:11:03.54 ID:wXdm0x1E.net] >>720 うまいやり方だな。それには気付かなかった。
734 名前:デフォルトの名無しさん [2020/10/17(土) 19:29:10.40 ID:wXdm0x1E.net] >>705 Kotlin script 2進数文字列に変換してから 0 を区切り文字にして分割してその中の一番長い文字列の長さを出すというやり方。 fun max1(n: Int) = n.toString(2).split('0').map { it.length }.max() println(max1(20201016)) これで 5 が出る。 同じやり方を perl5 で(特にモジュール使わずに)やるとこんな感じ。 perl -e '$n=20201016; $m = (sort { $b <=> $a } map { length($_) } (split /0+/, sprintf("%b", $n)))[0]; print "$m\n"' 同じく5が出る。
735 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 20:05:12.33 ID:vimxgZ9f.net] >>705 JavaScript let num = 20201016 let ans = num.toString(2).split`0`.sort().pop().length console.log(ans) //=> 5
736 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 20:50:55.84 ID:w8j3NnhR.net] >>705 octave https://ideone.com/dO1WZp f = @(n) max(cellfun(@numel, strsplit(dec2bin(n), '0'))); f(20201016)
737 名前:デフォルトの名無しさん [2020/10/17(土) 20:54:06.81 ID:frzgm+pU.net] >>705 Perl https://paiza.io/projects/VO9_CFHPOVbO5iI8uDc__A
738 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 23:22:21.08 ID:P3PLPttw.net] いつもRubyの人からなにかしら学ぶことがある
739 名前:デフォルトの名無しさん [2020/10/18(日) 00:42:32.49 ID:nYmbGZmV.net] ハトにエサを与えないで下さい
740 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 01:06:12.01 ID:qT62bbHa.net] QZは自分の頭が悪いのをわざわざ周知してもらうためにクソコードを晒すのか ドMだな
741 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 03:42:01.18 ID:DpwMGaW+.net] >>720 なるほどな、感心した n>>1 でもいいわけだな
742 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 04:21:53.35 ID:xWXtsYNK.net] >>710 のほうが速いと思うが
743 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 04:36:21.54 ID:F/EhVBet.net] rubyよく分からないけど>>720 の方が100倍くらいは速そうに思える
744 名前:デフォルトの名無しさん [2020/10/18(日) 05:53:44.51 ID:28u9FaXE.net] うん。速そうだね。数値計算しかしてないし。
745 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 10:06:25.57 ID:ARbR7jXS.net] 20201016みたいに桁数が少ないならそうだけど桁数が増えるとルーブが答え×桁数回だからアルゴリズムそのものは遅い 桁数が少ないうちは内部関数しか使ってない利点で早いとは思うけど
746 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 12:07:22.14 ID:GUbLWvo/.net] >>733 >>710 ,720 をベンチマークで比較してみた https://ideone.com/t0ZYLg https://ideone.com/DUEWmC 20201016 では 5~6倍 巨大な数だと 7000倍以上
747 名前: mailto:sage [2020/10/18(日) 15:53:00.51 ID:xUpUEWAV.net] >>703 残念ながら、私の出題もイマイチ人気がありませんでした‥‥
748 名前:デフォルトの名無しさん [2020/10/18(日) 21:20:25.30 ID:wanN/5Zd.net] >>695 Java https://paiza.io/projects/frlfP3US1doeAO_HZBnLWQ
749 名前:デフォルトの名無しさん [2020/10/18(日) 21:43:52.67 ID:wanN/5Zd.net] >>678 Java https://paiza.io/projects/0xfQrdW_qpJoUbOO6ux6wg
750 名前:デフォルトの名無しさん [2020/10/18(日) 22:06:12.69 ID:wanN/5Zd.net] >>676 Java https://paiza.io/projects/x3j0kbjqsSoVGNJX5qun2g
751 名前:デフォルトの名無しさん [2020/10/18(日) 22:14:01.64 ID:wanN/5Zd.net] >>705 Java https://paiza.io/projects/Eo4-fSXmdnoqjyHOMsi92Q
752 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 22:45:56.62 ID:F/EhVBet.net] >>734 x = n while x != 0 x &= x << 1 i += 1 end ruby知らないから適当に書いたけど こんな感じにしないと二回目以降nが0でやってるっぽい こうすると22倍くらいの差だった
753 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 22:54:22.98 ID:F/EhVBet.net] 連続してるビット数が多いときはこの方が速くなったけど すごいごちゃごちゃになった i = 0 s = 1 x = n while x != 0 t = x & (x << s) if t == 0 then if s == 1 then i += 1 break end s = 1 else x = t i += s s = (s << 1) end end
754 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 22:56:30.98 ID:QW0aA1Hz.net] >>734 GJ
755 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 06:30:07.92 ID:8QFJcUQW.net] >>705 echo "obase=2; 20201016" | bc | sed 's/./&\n/g' | uniq -c | perl -lane 'if ($M < $F[0]) {$M = $F[0]}; END{print $M}' 5
756 名前:724 mailto:sage [2020/10/19(月) 15:26:08.35 ID:u+lqDWSF.net] >>740 ご指摘の通りでした https://ideone.com/DUEWmC を修正しました >>720 は 1の連続が多いと弱いですね
757 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 17:41:48.20 ID:Sd7Rn+fr.net] お題 2^(1/3)を百桁表示せよ 出力 1.2599210498948731647672106072782283505702514647015079800819751121552996765139594837293965624362550941543102560356156652593990240 参考 a(n+3) = 3*a(n+2) + 3*a(n+1) + an a(1) = 3, a(2)=3, a(3)=15 で決まる数列について min (a(n)/a(n+1), a(n+1)/a(n+2), a(n+3)/a(n+3) ) . < 2^(1/3)-1 . max (a(n)/a(n+1), a(n+1)/a(n+2), a(n+2)/a(n+3) ) で lim a(n)/a(n+1) = 2^(1/3)-1となる
758 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 21:36:44.38 ID:gq9726ze.net] >>743 echo "obase=2; 20201016" | bc | sed 's/0\+/\n/g' | wc -L でよくね?
759 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 22:00:17.27 ID:gq9726ze.net] >>745 Bash $ echo "scale=100;e(l(2) / 3)" | bc -l 1.25992104989487316476721060727822835057025146470150 79800819751121552996765139594837293965624362550940
760 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 22:30:56.87 ID:14xSvmON.net] >>745 dc dcには平方根の演算子はあるが立方根はないので c^(1/3) = sqrt(c/sqrt(c/sqrt(c/...))) と変形して適当に反復 100k[2z333>av/]dsaxp 1.2599210498948731647672106072782283505702514647015079800819751121552\ 996765139594837293965624362550941
761 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 23:54:32.40 ID:mPlPc+C9.net] >>745 参考を誰も参考にしてくれないのにワロタ 参考を元に作ったコード Haskell https://ideone.com/ywJPjx ちなみにrubyのpi.rbが同じテクニック使ってます そっちは定数係数でない三項間関係の漸化式パージョン
762 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 02:36:31.61 ID:gFGmv7lM.net] >>746 たしかに
763 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 04:08:13.14 ID:Mf7a0fdE.net] おっせえじゃん
764 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 21:07:35.93 ID:hsuNVmIy.net] お題:ぼくがかんがえたさいきょうのちょうわへいきん 2変数調和平均 f(x, y) = 2 / (1 / x + 1 / y) 但し xまたはyがゼロの時、f(x, y) == 0 の計算を考える。 Cのdoubleに相当する精度で計算する際に、理論値(≒多倍長精度で計算したものを double相当に丸めたもの)と一致しない割合(エラー率)をモンテカルロ法で求めよ。 x, yは、正規分布N(0, 1)の絶対値に従うものとする。 発展的なお題: 前掲の調和平均の式を変形し、エラー率の変化を調べよ。例えば、 f(x, y) = 2 * x * y / (x + y) のエラー率は、前掲の式と比較してどうだろうか? また、2 / (1 / x + 1 / y)よりエラー率が低い式は在るだろうか? 発展的なお題その2: x, yがベンフォードの法則に従う場合はどうなるか。 正規分布N(0, 1)の絶対値の場合と比べて、エラー率の順位は入れ替わるだろうか?
765 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 01:17:43.95 ID:rA+WIIWx.net] ...but nobody answered
766 名前:253 mailto:sage [2020/10/23(金) 09:17:13.74 ID:7L0FHKID.net] 正規乱数をモンテカルロ法で算出して doubleと多倍長浮動小数点でそれぞれ計差した2変数調和平均に 差がある率を求めれば良いの? 正規乱数なら書かなくともライブラリにあるんだよね。 あるいは誤り率の計算そのものにモンテカルロ法を使うようなやり方なのかな
767 名前:デフォルトの名無しさん mailto:sage [2020/10/23(金) 14:48:32.25 ID:oxO2c12D.net] 次のプリーズ
768 名前:デフォルトの名無しさん [2020/10/23(金) 20:02:36.14 ID:Vzf4XOui.net] お題 乱数を使ってシミュレーションしてください ジョーカーを除くトランプ52枚から1枚抜き取って箱に入れました その後、残った51枚から3枚引いて確認したら3枚ともダイヤでした では最初に抜き取った箱の中が1枚がダイヤである確率はいくらか?
769 名前:デフォルトの名無しさん mailto:sage [2020/10/23(金) 20:27:24.17 ID:LovVc5SM.net] >>756 Ruby DECK = [*0..51] def hoge a, *b = DECK.sample(4) until b&.all?{|v| v % 4 == 0} a % 4 == 0 end def fuga(n) 1.0 * n.times.count{hoge} / n end p fuga(1e6) # => 0.20414 p 10 / 59 # => 0.20408163265306123