1 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 20:45:14.49 ID:ZY7R7Sru.net] プログラミングのお題スレです。 前スレ プログラミングのお題スレ Part10 https://mevius.5ch.net/test/read.cgi/tech/1514772904/ 【出題と回答例】 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/ 宿題は宿題スレがあるのでそちらへ。
730 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 18:40:53.56 ID:splKqZqj.net] >>707 bash (かぶった) https://paiza.io/projects/ESODDaszatdKxnhAzHsFWA
731 名前:709 [2018/08/10(金) 19:22:50.97 ID:q2LOavXt.net] >>712 あ、そうか。その方が簡単だな。
732 名前: mailto:sage [2018/08/10(金) 23:01:27.70 ID:H9lF8aPc.net] お題:10兆までの素数のリストを作ってみませんか? https://tech.nikkeibp.co.jp/it/article/Watcher/20100519/348242/ 条件:既存のライブラリ、モジュール、外部コマンド等を利用するのは不可 すべて自分で記述すること int64_t, uint64_t の使用は許可する
733 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 00:01:26.30 ID:DgZEeL87.net] Ruby では百万までで、処理に数秒掛かって、78,498個の素数があった class PrimeNumber # 素数 def initialize (to = 20) @to = to @prime_numbers = [] end def add_table (n) limit = Math.sqrt(n).ceil @prime_numbers.each do |prime_num| # 割り切れたら、素数ではない return if n % prime_num == 0 # sqrt より大きいなら、確かめずとも素数である break if limit < prime_num end @prime_numbers.push n # 割り切れない end def print (2..@to).each do |n| add_table n end puts @prime_numbers.length end end
734 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 02:38:16.74 ID:7kLiHGgf.net] >>714 perl 一応これで理屈の上ではできるとは思うんだが、477577まで行ったところでアホらしくなって止めたw #!/usr/bin/perl use strict; use warnings; my @pn = (2); my $n = 1; print "$n: $pn[0]\n"; $n++; LOOP: for (my $i = 3; $i <= 10000000000000; $i += 2) { for (@pn) { next LOOP unless ($i % $_); } push(@pn, $i); print "$n: $i\n"; $n++; }
735 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 03:54:44.08 ID:QfTJwHhj.net] >>714 Ruby 10兆なら改良されたAtkinの篩を使ってガシガシやるしかないだろう citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.192.4926&rep=rep1&type=pdf sup = 10**7 primes = [2, 3] 5.step(sup, 6){|i| 2.times{ primes << i if primes.none?{|pr| break true if pr*pr > i; i % pr == 0} i += 2 } } primes.pop if primes[-1] > sup p primes.size #=> 664579
736 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 07:04:06.66 ID:N9ICkOCi.net] >>714 昔やった アセンブラ & AVX & マルチスレッド 探してみる
737 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 07:37:04.51 ID:N9ICkOCi.net] みつかりました そんなに昔じゃなかった 2年半前 41兆くらいまで求めてます マルチスレッドではありませんでした 処理内容はよく覚えていません 素数表作成 ビットパターン作成 ふるい のようなコメントがあります 105単位でなにかやってます
738 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 09:37:18.90 ID:y6G1YdWM.net] だんだん思い出してきました 6n+1, 6n+5 に対応するビット列を保持 小さな素数の倍数はマスクを作ってAVX命令でANDしていって 大きな素数の倍数はp(210n+48個の値) にしぼって ビット命令でひたすらふるう感じ キャッシュサイズを考えて小さなバッファでやってます
739 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 16:27:34.72 ID:VD7zYIqC.net] いいからコード貼れや
740 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 13:15:41.49 ID:DNU8qmV7.net] お題: ロト6で申込数字のいずれかが必ず5等以上に当選する 最小の申込数字の組み合わせを作ってください ロト6は01〜43の数字から異なる数字6個を順番不問で選び 申込数字6個のうち3個以上が本数字と一致すれば5等以上に当選となります
741 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 14:21:49.33 ID:ZHEExUj+.net] >>722 ・5等の当選条件を満たしている ・5等以上のいずれかの当選条件を満たしている この2つは同値なの?
742 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 14:57:56.60 ID:1gNSypiF.net] >>723 それを聞いてどうするの?
743 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 15:09:35.79 ID:ZHEExUj+.net] >>724 1〜5等に該当するならば必ず当選番号と同じ数字が少なくとも3つ入っているということがはっきりしない限り解けないでしょ
744 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 15:11:11.96 ID:ZHEExUj+.net] ごめん 申込数字6個のうち3個以上が本数字と一致すれば5等以上に当選となります を 申込数字6個のうち3個以上が本数字と一致すれば5等に当選となります と読み間違えてたわ
745 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 15:14:32.85 ID:1gNSypiF.net] >>723 と>>725 の質問内容が違う件
746 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 15:17:25.19 ID:ZHEExUj+.net] >>727 同値だよ
747 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 15:22:10.21 ID:O4fOyJLk.net] 15万個くらいの数字を吐き出して終わり?
748 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 15:26:16.88 ID:1gNSypiF.net] >>728 >>723 は>>722 とは無関係だが >>725 は(>>722 の解釈次第では)無関係ではない
749 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 15:29:22.68 ID:1gNSypiF.net] >>725 は 3個以上一致 <===> 5等以上に当選 3個以上一致 ====> 5等以上に当選 のどちらかをたずねたのかと思った
750 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 15:39:13.61 ID:ZHEExUj+.net] >>731 そもそもこっちが>>723 と>>725 で「申込数字6個のうち3個ちょうど本数字と一致すれば5等に当選」って誤解してたのが始まりなんだ わけわかんないこと言ってごめんね
751 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 17:47:14.42 ID:9O3GHV+n.net] >>707 Squeak Smalltalk ('01:23:45' subStrings: ':') reversed polynomialEval: 60 "=> 5025 " ('333:33:33' subStrings: ':') reversed polynomialEval: 60 "=> 1200813 " Pharo Smalltalk (('01:23:45' substrings: ':') collect: #asInteger) reversed polynomialEval: 60 "=> 5025 " (('333:33:33' substrings: ':') collect: #asInteger) reversed polynomialEval: 60 "=> 1200813 "
752 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 18:43:07.08 ID:9O3GHV+n.net] >>714 Squeak/Pharo Smalltalk で 100億まで | count | count := 0. Integer primesUpTo: 1e10 do: [:prime | count := count + 1]. count '=> 455052511 ' 組み込みだけど、書くとしても同じアルゴリズムで書くと思うので… https://ideone.com/zKMZYx
753 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 21:48:09.01 ID:cX8lnXZC.net] >>722 C++ https://ideone.com/gCsPec コンビネーション使う方法と、確率DPの二通りでやってみた。 (ちなみに5個当り222本は 6本が2等で、216本が3等) ※確率、期待値系は苦手だ
754 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 21:51:28.06 ID:AkqOEQdA.net] お題:ローカルホストの一覧を出力しなさい
755 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 23:20:11.13 ID:YPN3vVTA.net] >>735 >>722 って、 ・抽選される6個の数字が43C6通りのどの組み合わせでも5等以上が当たるようにくじを買う。 ・くじの購入数はできるだけ少なくなるようにする。 ってことじゃないのん?
756 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 23:45:52.09 ID:3JJNsMDc.net] それ以外にどんな解釈が?
757 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 00:22:36.49 ID:yY3qu6sZ.net] >>737 完全に恥ずかしい誤読しました。
758 名前:デフォルトの名無しさん [2018/08/13(月) 04:38:57.55 ID:z6+TJcGX.net] >>736 いいのかこんなんで? cd /etc grep localhost hosts
759 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 09:43:58.01 ID:ux+ef9t8.net] >> 699 Ruby 実数、逆関数 https://ideone.com/lflSc0
760 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 15:57:52.91 ID:LVcLEl+f.net] >>736 訂正 お題:LANに繋がっているホストの一覧を出力しなさい
761 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 16:34:44.91 ID:z6+TJcGX.net] >>742 Linux 等の UNIX 系OSで ping -b ブロードキャストアドレス とやると同じセグメントに繋がっているやつは ICMP ECHO を返して来て IP アドレスが分かるかも知れない。 但しファイヤーウォールの設定で返さないかも知れない。また他のセグメントにはパケット送らないのでわからない。
762 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 16:35:44.08 ID:z6+TJcGX.net] あ、ごめん。これは IPv4 限定の話かも知れない。
763 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 15:41:32.33 ID:N93NyTwd.net] 身長と体重がいくつか与えられるのでBMIを求めなさい なお身長と体重は1以上1000未満の整数とする 出力精度は小数第三位を四捨五入 各言語で一番短くかけた人が勝ち 例 ruby while gets end # input 150 50 160 55 180 120 # output
764 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 15:47:03.36 ID:N93NyTwd.net] ミスった。 単位は身長cm, 体重kg 例 ruby while gets h, w = $_.split.map &:to_i puts '%.2f' % (1e4 * w / h**2) end # input 150 50 160 55 180 120 150 225 # output 22.22 21.48 37.04 100.00
765 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 17:20:36.25 ID:6wrElEJt.net] https://ideone.com/lsWdqo
766 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 19:23:09.62 ID:N93NyTwd.net] >>747 67Bまで縮めてみた C https://ideone.com/ivxfS2
767 名前:デフォルトの名無しさん [2018/08/17(金) 21:08:30.56 ID:7hC1UKUq.net] >>745 Perl https://paiza.io/projects/4DM4_8fx_EiOXO4D3aOV4A 普通ならダブルクォーテーション使いそうな箇所で qq() 使ってクォートしている理由は今Androidのタブレット使っててうまく入力出来なかったため。
768 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 23:22:41.44 ID:eWaVkn5S.net] >>746 Python3で66バイト https://ideone.com/qWiKey
769 名前:デフォルトの名無しさん [2018/08/18(土) 02:50:37.57 ID:K3y6E3T8.net] 鈴木貫太郎 灘中 https://youtu.be/BnS7vMsVV2s 6桁の整数、ABCDEF の一番上の位のAを、 一の位へ移動した数、BCDEFA が、元の数の3倍になるとき、 この条件を満たす、元の数をすべて(2つ)答えよ ヒント。x = BCDEF とおいて考える 答え、142857, 285714
770 名前: mailto:sage [2018/08/18(土) 07:04:47.65 ID:/9y7PjMS.net] >>751 n/7 循環列問題ですか…
771 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 15:32:13.56 ID:h7OdrOPI.net] >>745 Ruby 43 bytes #!ruby -pa $_='%.2f'%eval('1e4/'+$F*'**2*') >>751 3 * ABCDEF = BCDEFA ∧ A != 0 <=> 42857 * A = BCDEF ∧ A != 0 <=> 42857 * A = BCDEF ∧ A = 1, 2 <=> ABCDEF = 142857, 285714
772 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 01:16:27.70 ID:tX8wxXbT.net] >>751 C(ただの力技) https://ideone.com/MljBH1
773 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 01:18:54.67 ID:tX8wxXbT.net] お題: 1.BINGOカードを作る 2.BINGO抽選機を作る ここで使われるビンゴカードは5x5のマス目に1から75までの数字が ランダムに配置されており、数字が見つけやすいように左の列から B列(1〜15), I列(16〜30), N列(31〜45), G列(46〜60), O列(61〜75)が 配置された一般的によく使われるタイプ。 5x5のマスの中央はFree(すでに開いた状態)。 出力例:https://ideone.com/R6eADP (この形に従う必要はないです) 回答例(C言語): カード作成 https://ideone.com/aJBJ9v 抽選機 https://ideone.com/NuIRYm
774 名前:デフォルトの名無しさん [2018/08/19(日) 03:52:23.20 ID:FQWxbBlW.net] >>751 Kotlin https://paiza.io/projects/BFd9v2qeKaNcdssTQuj5Jw これも力業だな。ただループして調べているだけ。 尚、最上位桁が0の場合も含めると0も該当する値になる。
775 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 04:55:18.29 ID:FQWxbBlW.net] >>755 Kotlin カード作成 https://paiza.io/projects/YeZEal6Ke6l3goeaDt9JuQ 抽選機 https://paiza.io/projects/j-F4qhKHa_nNTCBEtFbk_w
776 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 02:30:06.13 ID:V9a8ZDkH.net] >>755 Perl カード生成 https://ideone.com/82oHLD 抽選機 https://ideone.com/ZICMOi
777 名前:UNIXプログラミング質問スレより mailto:sage [2018/08/21(火) 03:04:43.91 ID:34Jmks75.net] お題:【構造のあるテキストの処理】各項目の内容をそれぞれソートして元のテキストに埋め込め。 ====== 標準入力 ========== * Fruit apple banana orange banana * Animal dog cat penguin ====== 標準出力 ========== * Fruit apple banana orange * Animal cat dog penguin 条件:ソートには外部コマンドを用いること。
778 名前:758 mailto:sage [2018/08/21(火) 03:11:53.68 ID:34Jmks75.net] ソートに外部コマンドを使うのは、テキストの処理を取り替える拡張を想定しています。 例えば sort -u コマンドを tr '[a-z]' '[A-Z]' に置き換えて * Fruit APPLE のようにできるようにしたい。 UNIXプログラミング質問スレにて、 このような処理はシェルスクリプトには荷が重く Powershell や Ruby が向いている、みたいなことを伺いました。 ぜひ回答を参考にしたいです。
779 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 14:35:58.26 ID:2YpoFUMY.net] >>759 Ruby ext_cmd = 'sort -u' ary = $<.read.scan(/\*.*?\n(?:(?=\n)|\z)/m) str = ary.map.with_index do |s, i| temp_fname = "temp#{i}" File.write(temp_fname, s[/\n\K.*/m]) heading = s[/\A.*/] execed = `#{ext_cmd} #{temp_fname}` File.delete(temp_fname) [heading, execed] * $/ end puts str * $/
780 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 14:40:47.02 ID:2YpoFUMY.net] catを使うように修正 catのヒアドキュメントさえ使えれば一時ファイル作らなくて済むんだけど ext_cmd = 'tr a-z A-Z' ary = $<.read.scan(/\*.*?\n(?:(?=\n)|\z)/m) str = ary.map.with_index do |s, i| temp_fname = "temp#{i}" File.write(temp_fname, s[/\n\K.*/m]) heading = s[/\A.*/] execed = `cat #{temp_fname}|#{ext_cmd}` File.delete(temp_fname) [heading, execed] * $/ end puts str * $/
781 名前:デフォルトの名無しさん mailto:sage [2018/08/22(水) 01:46:46.02 ID:wb9Zg9xS.net] >>759 Perl https://paiza.io/projects/8vYRslCsu29ZvqFXGkZC7A 項目の区切りは連続した2つの改行になってます。
782 名前:デフォルトの名無しさん mailto:sage [2018/08/22(水) 01:56:27.69 ID:PmiUKg2L.net] >>759 zsh setopt rcquotes; sed -n '/^*/h; /^*/!{x;p;x;p;}' | paste - - \ | awk -F' ' -v OFS=' ' '$2 { print $1,$2 } ! $2 { printf "%c",0 }' \ | xargs -0 -n 1 -I@ -- zsh -c 'echo ''@'' | tee >(read -e | cut -f 1) | sed ''$d;'' | cut -f 2 | sort -u ;echo' null区切りでチャンク分け。構造がもっと複雑になるとこの方針では対応できない。
783 名前:デフォルトの名無しさん [2018/08/22(水) 03:09:32.13 ID:wb9Zg9xS.net] >>759 bash https://paiza.io/projects/Xq6KyZBO0dqynoJNUYhlEg
784 名前:デフォルトの名無しさん mailto:sage [2018/08/22(水) 04:46:03.18 ID:h82tfzI1.net] 単純に、別々のファイルに、分割すれば良いのでは? * Fruit のファイル * Animal のファイル 各ファイルを、sort, unique する
785 名前:765 mailto:sage [2018/08/22(水) 05:05:39.72 ID:h82tfzI1.net] 一旦、別々のファイルにしたなら、PowerShell で、 cat .\test.txt | sort | gu gu は、Get-Unique のエイリアス。 漏れのPowerShell では、uniq のエイリアスは使えない
786 名前:デフォルトの名無しさん mailto:sage [2018/08/22(水) 08:57:59.02 ID:AfGRGNs6.net] このスレでbashが多いのは何故?
787 名前:デフォルトの名無しさん mailto:sage [2018/08/22(水) 09:06:48.94 ID:AfGRGNs6.net] 今見返したらそんなに多くなかった‥
788 名前:デフォルトの名無しさん [2018/08/22(水) 09:44:37.32 ID:zudhoHB+.net] >>768 Linuxのディストリビューションでは最初からインストールされてるのがよくあってある程度有名で、sh互換でshしか知らなくても書けるからではないかな。 それとWebの実行環境があるというのも理由かも。こういう所で公開するのには都合が良い。
789 名前:デフォルトの名無しさん mailto:sage [2018/08/22(水) 12:27:54.30 ID:AfGRGNs6.net] >>770 そうなんですね! みんなの回答見てると正規表現や少ないコードや難しい表現でコーディングできてて関心します‥ 自分にはとても到達出来ない‥
790 名前:泣gの名無しさん mailto:sage [2018/08/22(水) 15:46:06.44 ID:PmiUKg2L.net] >>759 zsh setopt rcquotes; sed -E -e 's:^(\* .*):{ echo ''\1''; sort -u; echo } << *:' -e 's:^$:*:' | zsh xargsの区切り文字の辛さからは開放されたが、echo ''\1'' がイマイチだ。 なるほど、構造のあるデータはむしろファイル階層として表現したほうが自然か…
791 名前:デフォルトの名無しさん [2018/08/22(水) 23:06:19.28 ID:YlEU3d3x.net] >>759 Vim $ cat odai-pt11-758.input | vim -es '+:g /\%(^\*.*\n\)\@<=/,/[ \t\n]*\%(\n\*.*\|\%$\)/ !sort | tr a-z A-Z | nl' '+%p' '+:q!' /dev/stdin * Fruit 1 APPLE 2 BANANA 3 BANANA 4 ORANGE * Animal 1 CAT 2 DOG 3 PENGUIN $
792 名前:デフォルトの名無しさん mailto:sage [2018/08/22(水) 23:55:42.77 ID:h82tfzI1.net] 64ビットWindows10 なら、WSL で、Ubuntu を入れると、 bash, vim, Python は最初から入っている WindowsのExplorer では、BOMなしUTF-8 のファイルは検索できないから、 WSL でLinux側から、grep で検索している シェルスクリプトの欠点は、パイプラインがテキスト渡しになる。 オブジェクトの型が無くなって、すべて文字列になる 一方、PowerShell ではオブジェクト渡しだから、オブジェクトの構造・型が維持できる >>759-760 外部コマンドを切り替えるという抽象的な処理を、処理間にはさむのは難しい。 すべての処理の冒頭か最後で、一括でフィルターする方がバグらない
793 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 00:19:08.54 ID:FMBOl46f.net] >>774 なるほど… Powershellでの完全な回答例を見せていただけませんか? 標準入力からファイルに落として出力に吐くまで。オブジェクト渡しの雰囲気を感じたいです。
794 名前:765 mailto:sage [2018/08/23(木) 09:28:38.07 ID:qUZ5eK5Q.net] Set-PSDebug -Strict # 変数宣言を強制する $file = ( cat in.txt ) # 入力ファイル $dat_basenames = @() # 拡張子なしのファイル名の配列 foreach ( $line in $file ) { # 各行 if( $line.Length -eq 0 ){ continue } # 空行は処理しない if ( $line.Substring( 0, 1 ) -eq '*' ) { # 1文字目が、* なら $fname = $line.Substring( 2 ) $dat_basenames += $fname # 追加 $fname += '.dat' # 拡張子つき } else { Add-Content $fname $line # 追記 } } foreach ( $dbname in $dat_basenames ) { # 各 .dat ファイル $fname = $dbname + '.dat' # 拡張子つき $str = "* ${dbname}`r`n" $tmp = cat $fname | sort | gu # sort, unique $str += ( $tmp -join "`r`n" ) # 改行区切り echo $str } PowerShell で作った。 cd で、作業フォルダへ移動してから実行して 入力ファイル、in.txt から、各ファイルへ分割する。 分割後のファイル名を、Fruit.dat, Animal.dat として、各ファイルを処理した
795 名前:デフォルトの名無しさん [2018/08/24(金) 05:00:24.02 ID:QxK4Y8yu.net] 点が10個一直線に並んでおり、各点が他の点との右方向の距離をいくつか知っている時、最も左にある点を求めよ 最も左にある点が求められない時はあと何の情報があれば求められるのかを最低個数で列挙すること 例1 a,b,cの点がある。 a点はb点が30右にあることを知っている。 b点は何も知らない。 c点はb点が-40右にあることをしっている。 結果 最も左にある点はa点 例2 a,b,c,dの点がある。 a点はb点が30右にあることを知っている。 b点は何も知らない c点はd点が20右にあることを知っている。 d点は何も知らない。 結果 求められない。必要な情報は a点からc点までの距離
796 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 05:58:44.74 ID:rBPgXHvS.net] >>777 実際に自分で書いてみて、求められたら解答例を提示できる?
797 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 08:02:12.41 ID:ZkSPfVdV.net] 「知っている」の主語が点に見えるけど そうじゃないよね? なんでそういう文にしたの?
798 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 10:33:50.94 ID:phPhGhWW.net] 連結リストを使って、出来上がったグラフが連結なら求められる つまり、出来上がったグラフが二つ三つそれ以上に分かれている非連結グラフになってると、距離は分からない ……直感的には多分こうだが、何かしらの証明は必要 「連結グラフだが距離が分からない」反例があればいい
799 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 11:28:11.41 ID:qtSNV1ih.net] >>777 点が10個あるなら例1,2両方とも判断不能。どっちもあと最低7個必要 しかも直線がRなのかR∪∞∪-∞なのかで解が変わるから提示しろ あと出力はともかくデータの与えられ方くらい提示しろ
800 名前:765 mailto:sage [2018/08/24(金) 12:34:38.87 ID:ZgK6e0Tb.net] text = File.read 'in.txt' # 入力ファイル header = "" str_hash = { } result = [ ] def sort_string ( head, hash, res ) res.push head Hash[ hash.sort ].each_key { |key| res.push key } # sort hash.clear # 空にする end text.each_line do |line| # 各行 line.chomp! # 末尾の改行を削除する next if line.empty? # 空文字は処理しない if line.start_with? '*' # 先頭文字が、* なら sort_string( header, str_hash, result ) unless str_hash.empty? # 空でなければ header = line else str_hash[ line ] = true end end sort_string( header, str_hash, result ) puts result Ruby で作った。 PowerShell よりは断然、作りやすい。 ただ、sort_string( ) を2か所で呼ぶのが、ダサイ
801 名前:デフォルトの名無しさん [2018/08/25(土) 17:43:06.40 ID:nE7N9dPk.net] お題 将棋の初期状態の駒40枚を 利き筋に他の駒がないように配置する
802 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 20:05:04.08 ID:486ljwsa.net] 1000垓通り表示しろとでも?
803 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 20:45:34.12 ID:WT6GNhg9.net] 明記されてない条件は好きにしていいのがこのスレのルールですよ
804 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 20:55:52.54 ID:N/q1MSK+.net] お題を出す前に出題者は自分の解答を(解くことが可能かの確認も兼ね)作っておくのもルールだ 適切な入出力例や問題文にあるべき条件が抜けてるっていうのはそれをやってない証拠
805 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 22:57:36.63 ID:yggGxXGy.net] >>783 有名な作品がいくつかあるね 全て同じ方向を向いたヤツも >>784 全ての組み合わせを数えた人がいるの?
806 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 08:39:25.15 ID:8NHhsyIb.net] トランプの配置についてのアルゴリズムを考えてます。 トランプの横幅をX トランプの高さをYとし 並べるトランプは偶数枚 全てのトランプを配置した時の全体を、トランプ配置と呼ぶとして トランプ配置の横幅と縦幅の割合を、おおよそX:Yとしたい この場合、アルゴリズムはどう考えたらいいでしょうか?
807 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 09:35:40.65 ID:/JFPzkHn.net] ゴリ押しの総当たり 並べる枚数横にx縦にyが無尽蔵に大きくなれば比率に近づく 並べるトランプの上限が決まって無くて偶数枚だけが条件なら延々と並べる枚数を増やせばいい 一兆枚くらい並べれば比率はX/Yに近づく 1000000000億兆枚くらいのトランプを使えば横幅X高さYなんて充分に蟲出来るから全体の割合を調整するのは枚数が多ければ多いほどラク 10那由多ほど並べれば、本当にカードは点くらいなもので、縦横比率はx、yの枚数だけで決まる
808 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 09:52:42.49 ID:O9adGcKd.net] >>788 おおよそとかいまいちよくわからん 例を示して
809 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 09:59:10.89 ID:O9adGcKd.net] >>789 バカなの? > 並べるトランプの上限が決まって無くて偶数枚だけが条件 なら、縦横2枚ずつ(計4枚)並べればいいだけ
810 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 11:08:57.34 ID:MXsSoN4T.net] n枚をnX nYの長方形の対角線上に斜めにならべれば X:Yになるけど 問題あってる?
811 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 13:16:22.70 ID:HHP/3bjy.net] >>788 ┌─┐ │ ?│ └─┘ これを偶数枚並べて縦横比同じにするなら こうだよね ↓ ┌─┬─┐ │ ?│ ?│ ├─┼─┤ │ ?│ ?│ └─┴─┘ アルゴリズムもクソもないように思うのだが? 問題の書き方間違ってない?
812 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 13:22:25.82 ID:6zIp6UvA.net] さすがに、 枚数は外から与えられるのでは?
813 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 16:57:45.44 ID:2xrJOS4Z.net] 枚数nに対して p * q = n を満たす正の整数 p, q の内 |p - q| / |p^2 + q^2| が最小になる組み合わせを求めるだけでしょ?
814 名前: mailto:sage [2018/08/26(日) 23:44:29.53 ID:TLwXHnMN.net] https://mevius.5ch.net/test/read.cgi/tech/1480579110/981 に引き続いて、現に困ってしまった問題を出題 windows コマンドラインの xcopy コマンドを実装せよ コマンドラインから「xcopy パス1 パス2」 と入力すると パス1 以下にあるファイルをすべてパス2以下にコピーするようにせよ ディレクトリについては、再帰的にコピーせよ ・現実の xcopy コマンドには色々なオプションがあるが、それは実装しなくてもよい ・読み込み対象のファイルの属性については考慮しなくてよい、読み込めるファイルのみ所定のパスにコピーできればそれでよい ・その他、コピーに問題のある状態が発生したときには、標準エラー出力にエラー内容を表示すればそれでいい Windows Update の度にPCが激遅になるのに堪えかねて、C ドライブを SSD に換えることにしました。OS は再度インストールしなおすつもりです。 現在の C ドライブの内容は別途コピーしておいて、困ったときには参照できるようにしたいと思いました。 ところが、「xcopy c: x:/tmp」とすると、「メモリーが足りなくなった」といって途中で止まるのです…困りました…
815 名前: mailto:sage [2018/08/26(日) 23:57:13.93 ID:TLwXHnMN.net] >>796 条件を追加します ハードリンクやシンボリックリンクは考えなくともよい xcopy パス1 パス2 のパス2 がパス1 の下にある場合、実装がまずいと永遠にコピーし続ける困ったことになるが、それも考慮しなくてもよい (今回やりたいことは、「xcopy c: x:/tmp」であるので、これが問題なく動けばそれでよい…)
816 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 00:30:49.02 ID:FMLlc3nv.net] お金くれたら書くよ
817 名前: mailto:sage [2018/08/27(月) 00:37:15.85 ID:W4qvSHyH.net] >>798 ビットコインではいかがでしょう?
818 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 03:58:54.01 ID:EFFRlxLO.net] >>796 https://qiita.com/himrox/items/3dc7dec2c0e584a78e3d xcopy メモリで検索したらこんなページ出たがこれじゃあかんと?
819 名前:デフォルトの名無しさん [2018/08/27(月) 10:42:11.16 ID:ywsjsNTA.net] >>796 Windowsならエクスプローラ使ってただコピーするのでは何か不都合があるのか? まあ、お題としてそういうのなしで作れというのはアリだが、なんとなくWindowsの場合はエクスプローラが使っているのと同じライブラリ関数を一回呼び出すだけで終わってしまいそうな気がしてならない。
820 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 11:41:58.10 ID:ba8BcfX3.net] xcopy ではなく、robocopy を使えば?
821 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 21:06:25.46 ID:wliJqEsP.net] >>793 他の人も勘違いしてるけど、横縦比をx:yにする問題だよ。おおよそらしいけど。
822 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 21:25:27.41 ID:C1HpzEi0.net] >>803 問題を読んでみな
823 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 21:34:12.17 ID:wliJqEsP.net] 失礼しました…
824 名前:デフォルトの名無しさん [2018/08/27(月) 21:37:25.51 ID:l2rfNjjd.net] >>803 トランプの横幅がYで高さがXでしょ? で、偶数枚並べてX:Yにするんでしょ? 4枚でなるじゃん。およそどころかぴったりX:Yに。
825 名前:デフォルトの名無しさん [2018/08/27(月) 21:41:44.66 ID:l2rfNjjd.net] ごめん。逆か。まあしかしわかるよね。
826 名前: mailto:sage [2018/08/28(火) 00:09:17.09 ID:mZeP8xuo.net] >>796-797 https://mevius.5ch.net/test/read.cgi/tech/1434079972/52 >>800 有用な情報ありがとうございます なるほど、256バイト以上のパスは受け付けない、ですか… MSDN https://msdn.microsoft.com/ja-jp/library/cc429198.aspx なんかをみると、「この関数の Unicode 版を呼び出し、パスの前に "\\?\" という接頭辞を追加してください。」と書いてありますね でも、C++ でユニコードバージョンに対応させるってどうするのだろう?#define UNICODE だけではダメみたいだし…
827 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 00:22:03.08 ID:LPHHle1d.net] >>808 https://qiita.com/jugemjugemu/items/4db1dfd3d2737d3979df CreateFileW
828 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 00:26:01.26 ID:04IHxsB7.net] >>808 そろそろ適切なスレに移動したら?
829 名前: mailto:sage [2018/08/28(火) 00:29:32.20 ID:mZeP8xuo.net] >>810 >適切なスレ って、あなたはどこを想定しているのですか?
830 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 02:44:52.27 ID:Z7hOIgIF.net] スレタイも読めないのかこいつは・・・