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

■ このスレッドは過去ログ倉庫に格納されています
2018/01/01(月) 11:15:04.40ID:2Vr1CPKy
プログラミングのお題スレです。

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

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

2 名前:デフォルトの名無しさん
  >>1 使用言語
  回答本文

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

宿題は宿題スレがあるのでそちらへ。
2018/01/15(月) 21:12:20.18ID:u3cYdd8C
>>85
へぇ。なるほどわからん。
でも、円も楕円の内ってことなら無いって可能性もあるのか?とか。
楕円暗号は辞書と併用するとわけわからんな。

爆発です。
87デフォルトの名無しさん
垢版 |
2018/01/16(火) 02:44:51.59ID:hWpj+IiO
>>41
やっとできた。Kotlin。
https://paiza.io/projects/4yVCO5JcqQwIn4QLt63uuQ
なんだかすごく長くなってしまったよ。きっとよくわかる人が作ると物凄く短くなるんだろうなあ・・・。
2018/01/16(火) 12:34:48.36ID:VgOvX4GN
>>34,41,83,84
http://mevius.2ch.net/test/read.cgi/tech/1434079972/34
2018/01/17(水) 07:05:39.08ID:errnxjlD
こんなのが勃ってるぞ

QZは自作自演を停止せよ
http://mevius.5ch.net/test/read.cgi/tech/1514820197/
2018/01/17(水) 16:53:26.57ID:qYzFevXN
宿題スレの変態に文句あるならスレ落せって言ってるのにかきこむから落ちない。
じぶんでも保守しといて自演扱いだから矛盾してる。
ちなみに俺はQzの人じゃないよ。
前に解答書いたらQzの人扱いされた。
2018/01/21(日) 18:29:37.95ID:XQq46tQk
>>41>>42 Perl5
https://ideone.com/WY0Jb6

※perlのfor ... はiteratorに最適されるので
>>1-10000000000000000 などが指定されてもメモリ消費は少ない
2018/01/21(日) 18:37:01.12ID:XQq46tQk
>>91は早とちりした

>>41の要件
・リストに変換
・重複は許さない
・結果のリストは昇順
を満たしていないや
テヘペロ
2018/01/22(月) 00:57:45.27ID:ksg0WZZw
>>91,92 修正

>>41>>42 Perl5
https://ideone.com/fp3VSt

これで良い筈。
2018/01/22(月) 02:08:53.18ID:FhCwy9L9
>>91,93
0は範囲外w
2018/01/22(月) 05:52:35.20ID:YeXv1dis
>>289494
[99999]

貼るのならせめて仕様どおりの実装かどうか最小限のチェックをしてから貼れや
最初の回答なら多少違ってても中間報告っぽくして誤魔化したりしつつ他人のアイデア盗んだり出来るけど二番煎じではそれは無理。
2018/01/22(月) 22:53:07.25ID:xL0hK3i2
オレがおっちょこちょいで確認不足だった。

>>41>>42 Perl5
https://ideone.com/LDJrW8
2018/01/22(月) 23:05:50.55ID:xL0hK3i2
>>96
貼ってから気がついたけどSTDINのテストデータでは問題を起こさないが
7行目が
$a[1] = $a[0] unless $a[1];
だと$a[1]=0のときに誤動作の元だな…
$a[1] //= $a[0];
にすべきでした。
98愛知人
垢版 |
2018/01/25(木) 16:10:27.67
その質問の主だが結局こうしたでな
https://ideone.com/SxLQUO
2018/01/25(木) 19:38:18.47ID:+OI4mbzo
>>98
アンカーの先頭と終端のペアを持つってアルゴリズムさ、
>>66と同じっぽいのでGPLv3に引っかかってないか?
100愛知人!id:ignore
垢版 |
2018/01/25(木) 20:21:47.54ID:oIA0WROS
そうなん?俺はそんなの読んでないけどな。
2018/01/25(木) 23:36:56.13ID:mFGjgyfD
アルゴリズムが同じだとして何か問題?
2018/01/26(金) 03:04:21.26ID:UBBQh08e
アルゴリズムはフリーだよな
2018/01/26(金) 03:47:46.91ID:mrmbkYhg
あれ?アルゴリズムってライセンスに乗らないの?
2018/01/26(金) 03:52:53.09ID:mrmbkYhg
http://www.orsj.or.jp/~wiki/wiki/index.php/《アルゴリズム特許》
アルゴリズム特許が取れる以上ライセンスに乗ると思うけど。
2018/01/26(金) 03:57:51.29ID:mrmbkYhg
https://ja.wikipedia.org/wiki/ソフトウェア特許
『「発明」とは、自然法則を利用した技術的思想の創作のうち高度のものをいう』
アルゴリズムの中で自然的なモノは特許取れないけど、創意工夫の入ってるものは取れる。
そこから考えて、アルゴリズムをライセンスするということは普通にあると思う。
2018/01/26(金) 04:05:42.65ID:mrmbkYhg
https://www.catch.jp/oss-license/2011/11/19/gpl2bsd/
ここだと大丈夫になってるなぁ。
まぁ、特許取ったわけじゃないから翻訳はOKなのか。
ふむふむ。
2018/01/26(金) 04:11:50.53ID:mrmbkYhg
http://kenakamatsu.tumblr.com/post/55869087710/二次創作同人小説が合法って本当
これだな。ほぼ内容の同じ2次小説。
偶然似たのだいいわけすれば逃げれるのだとさ。ふむふむ。
お題出しといて読んでないとは思えないけど。
2018/01/26(金) 04:14:37.18ID:mrmbkYhg
まぁいいか。著作権に引っかかってる可能性が微レ存とだけは言えるかな。
GPLってそうなのか。翻訳されちゃうと取れちゃうんだなぁ。ふむふむ。
2018/01/26(金) 10:06:06.80ID:2nQXk4BN
ソフトウェア特許には異論が多いよ
つカーマーカー特許

特許は著作権とは別で、特許申請側がお金を払う必要がある
ライセンスはどちらかというと著作権の側
110愛知人
垢版 |
2018/01/26(金) 11:20:40.97
C++読めん
長すぎて読む気すら起きん
111デフォルトの名無しさん
垢版 |
2018/01/26(金) 15:41:03.21ID:lz5gZOTM
新しいお題

Base64への変換と逆変換

Base64の仕様は下記参照
https://ja.m.wikipedia.org/wiki/Base64
112デフォルトの名無しさん
垢版 |
2018/01/26(金) 16:44:25.72ID:WGHyQmfj
>Base64への変換と逆変換

昔、必要になって自作したことがあったが
いまどき使うんかな
2018/01/26(金) 17:34:48.17ID:EG68/Csg
>>111 ruby
base64ライブラリ未使用
https://ideone.com/vYRY3F
114111
垢版 |
2018/01/26(金) 17:40:18.25ID:c2BX1X7C
>>112
意識的に使うことはあまりないかも知れない。使うとしてもライブラリあるから普通は自分で考える必要はない。
しかしお題としては簡単すぎず難しすぎず丁度良さそうな感じがしたので出してみた。
115111
垢版 |
2018/01/27(土) 03:53:53.42ID:ibqNKJrC
自分で作ってみた。Kotlin。
https://paiza.io/projects/DIOtmtRHfxiejGE2h589sQ
2018/01/27(土) 08:50:52.13ID:61JA97EI
数字があわねー。なんでやー。
2018/01/27(土) 08:51:39.94ID:61JA97EI
今作ってるんだけど、数が合わない。
サンプル間違えてるのかと思ったけどそうでもないようだ。
どうしたらええんや?
2018/01/27(土) 08:59:45.43ID:61JA97EI
https://ideone.com/bXrP3L
C++。途中まであってるのになんかうまく動かないよくわからない残骸。
もう無理ー。
結構丁寧に作ったんだけど、全然うまくいかない。
2018/01/27(土) 09:37:36.05ID:61JA97EI
ロジック変えてないのに書き方変えたら治った。
怖い怖い。
2018/01/27(土) 09:47:13.66ID:61JA97EI
https://ideone.com/QDl5p3
C++。メインロジック変えてないのになぜかバグがなくなった恐怖のコード。
なんでやー!!
2018/01/27(土) 10:34:28.86ID:61JA97EI
できたけど、イデオン落ちてる。
あーひどい目に合った。
2018/01/27(土) 10:41:15.68ID:61JA97EI
>>111
https://ideone.com/NhAocK
C++。完成。あーひどい目に合った。自業自得なのかは知らんけど。
123今北産業
垢版 |
2018/01/28(日) 00:57:39.34ID:Q5D0xdcE
>>111 Perl5
https://ideone.com/G9kQkc

script言語のPerlで書いたけれど、
ASCII文字列のみならずバイナリデータもbase64にエンコードデコードできるように作った
2018/01/28(日) 01:41:35.62ID:xxBRO3qy
>>111 rust
https://ideone.com/2Ax53r
125111
垢版 |
2018/01/28(日) 04:59:53.26ID:bdrFjlI3
>>115のプログラムは動作は同じだが少し修正した。
ほんのちょっとだけ無駄がなくなる。
126124
垢版 |
2018/01/28(日) 13:50:48.21ID:xxBRO3qy
>>111 rust
https://ideone.com/vZk4Oh
・flat_mapでちょっとだけスッキリ?
2018/01/28(日) 17:50:50.19ID:/LCgFVoW
>>111
http://mevius.2ch.net/test/read.cgi/tech/1434079972/35

結構難問みたいで、これまでの回答者の結果が同一にならない

>>113
"ABCDEFG", "Hello, World!" のデコードが私には再現できない

>>115
コードを読み解けなかった、ごめんなさい

>>122
再現できました、ただし他の場合はためしていません

>>123
"12ab34cd56ef78" のデコードが再現できない

>>124, 126
"0123456789"#$%&'()`=@" のデコードが再現できない
128愛知人
垢版 |
2018/01/28(日) 18:25:42.93ID:QV+bfV+F
その問題っておまえが出した?
129デフォルトの名無しさん
垢版 |
2018/01/28(日) 18:42:27.46ID:UfNDpnrp
Base64 が難問なわけねーわ。

簡単簡潔だから採用され普及したんだし。
130愛知人
垢版 |
2018/01/28(日) 18:45:16.82ID:QV+bfV+F
ネタバレだけどC言語スレで「3バイトを4バイトに変換するだけ」って言ってたぞ〜
2018/01/28(日) 18:48:28.67ID:4hSG/ySR
>>127

> >>123
> "12ab34cd56ef78" のデコードが再現できない

>>123の「12ab34cd56ef78」のテストケースは、文字列としてBase64にエンコードしているのではない。
「12ab34cd56ef78」を16進とし、7byteのバイナリ列にしてEncodeしている。

それに対してあんたのjavaコードは「12ab34cd56ef78」を文字列としてBase64にエンコードしている。
だから、>>123とエンコード結果が合わない。

しかし異様に長いな…
なぜかは、オレは調べないでおくけど。
2018/01/28(日) 18:49:59.25ID:4hSG/ySR
>>131、スマソ誤記があった
誤 java
正 C++
2018/01/28(日) 19:09:24.53ID:/LCgFVoW
>>131
了解

>>131
>長いな
うん、ライブラリを知らずいちいち書いてるから長くなるのも止むを得ない
2018/01/28(日) 19:13:55.34ID:/LCgFVoW
>>128
出題者は私じゃありません
135愛知人
垢版 |
2018/01/28(日) 19:15:15.98ID:QV+bfV+F
ここまでに出てるやつって>>130のアルゴリズム使ってるやつある?
2018/01/28(日) 19:24:07.36ID:4hSG/ySR
>>133
"ABCDEFG", "Hello, World!" は、藻前さんのエンコード結果であってるとおもうよ
137111
垢版 |
2018/01/28(日) 20:43:46.22ID:4RSN9gye
>>135
最初それで作ろうかと思ったが複雑になりそうだったので止めた。
結局レジスタ代わりの変数に8bitシフトして6ビット取り出すとか、
6ビットシフトして8ビット超えたら取り出すという方式にした。

>>127
読み取れなかった? C言語でも作ってるので気長に待ってて。
多分そちらはなんとなく分かるだろうと思う。
138124
垢版 |
2018/01/28(日) 21:00:32.08ID:xxBRO3qy
>>111 rust
https://ideone.com/sxPlp1
・ちょっと部分的に整理
>>127で指摘してもらって気付いたバグを修正
2018/01/28(日) 22:03:30.34ID:/LCgFVoW
お題:>>111 の系
1) base64 を実装せよ
2) base64 は 6 ビットごとに一文字を当てるが、これを@5ビットごとに、あるいはA3ビットごとに割り当てるように変更せよ
変換表は base64 の部分とせよ
base64 の実装コードから最小元の変更で済むように構成せよ
※デコード時の '=' の出力仕様は実装しなくともよい
2018/01/28(日) 23:14:42.76ID:xxBRO3qy
>>139 rust
https://ideone.com/LEjBFW
2018/01/28(日) 23:19:10.39ID:Q0fHNoLK
>>139
なんでコンピュータで奇数扱おうとするんですか〜。
個人的にはだけど、すごい気持ち悪い。
ぴったりはまらないから何個も変数マタグし。
2018/01/28(日) 23:22:37.93ID:Q0fHNoLK
>>137
>>122は、3バイトを4分割してるよ。逆変換もしてるよ。
6bit*4で24ビットなのでちょうど3バイトだよ。
まぁ、エラー処理あってるかよくわかってないけど。
143140
垢版 |
2018/01/29(月) 00:30:27.71ID:ZvaF3IbW
>>139
https://ideone.com/MOd0La
・'='追加のバグ修正
144今北産業
垢版 |
2018/01/29(月) 01:26:52.75ID:4Ja8daQT
>>139 Perl5
https://ideone.com/82DbUR

幅が5や3のときに=を何個補完すべきか明確じゃなくなるので
=の追加は省いています。
145今北産業
垢版 |
2018/01/29(月) 01:52:00.25ID:4Ja8daQT
>>144 バグってた。orz
6行目の$W-2は$W-1でなければならない。
この間違いにより幅5のときのABCDEFGのエンコード結果の末尾が1カラム欠ける。

修正版
>>139 Perl5
https://ideone.com/KNxABI
146愛知人
垢版 |
2018/01/29(月) 01:53:47.97ID:pcTu+bOr
ideoneは後から編集できるんだしコッソリ書き換えとけばよくね
2018/01/29(月) 01:59:30.35ID:F1m2sdEz
お題。
暇な人向け。
ボゴソートを実装し、処理が終わるか確認せよ。
https://ja.wikipedia.org/wiki/ボゴソート
発展お題として大体どれくらいの要素数までが現実的か確認せよ。

サンプル:https://ideone.com/Fb8x80
2018/01/29(月) 12:23:05.32ID:EdrsOOA2
>>147
https://ideone.com/WGZ2WG
12文字が限界でしたか…
149愛知人
垢版 |
2018/01/29(月) 15:58:00.28ID:pcTu+bOr
>>111
今更だけど
C言語
https://ideone.com/80cjOY
2018/01/30(火) 00:03:42.09ID:HSoIFMEj
>>148
参加してくれてありがとう。
俺のお題は不人気なんだよね。
どうでもいいお題ばかりだからだけど。
2018/01/30(火) 00:11:56.31ID:fLRARGcM
>>150
いえいえ、一度やってみたかったのです、みてのとおり手数はわずかですみました
コードを書くのは楽しいのに、そのネタがみつからず状況で渡りに船でした
それに私のお題も不人気で、それは過去ログが示しています
152111
垢版 |
2018/01/30(火) 00:35:59.04ID:9ZRSIjLC
>>111をC言語で作ってみたものの、open_memstream()が使えるサイトが見つからず、
結局似たような機能ものを自作してしまいかなり長くなってしまった。orz
https://paiza.io/projects/9mjG00te6x5pMJTZzPF3Dw

直接 FILE * から一文字つづ読みながら変換した方が小さくなるな。
153愛知人
垢版 |
2018/01/30(火) 00:49:23.55ID:nQQmpnBb
>>147
C言語
https://ideone.com/02P7xy

11個でした。
2018/01/30(火) 00:58:03.51ID:HSoIFMEj
>>153
thank you for playing!
まぁ、乱数の質とかが問題になるような気がするのでその分布だときつそうだ。
155111
垢版 |
2018/01/30(火) 01:05:16.85ID:9ZRSIjLC
>>139
ほんのちょっと変更したらできた。ビット数変更は最初の B64BIT の定義を変えるだけ。今は3ビットになってる。
https://paiza.io/projects/aGQZdP5PKfNESdBXh3tHyw
156今北産業
垢版 |
2018/01/30(火) 01:49:35.30ID:dcSCjb3l
>>149
こういう実装は個人的に好みだな。
オレがCで書くならこれに近いイメージ。
encodeMap decodeMapはまったくの静的定数テーブルでもいいけど、
初期化コードで設定すればステートメントが減って見た目もすっきりする
かもね…
157愛知人
垢版 |
2018/01/30(火) 02:17:30.68ID:ZNnrL6O6
無駄な動作が一切ないもんな(多分)
158111
垢版 |
2018/01/30(火) 12:37:43.63ID:Hqo+QOWq
メモリを多く使って高速化するか、それとも使わずに普通に動かすかといった違いかな。
この程度のメモリは今時の普通のPCだと全く問題にならないが、組み込みでメモリがちょっとしか使えないとか、環境に応じて使い分ける必要がある。
159愛知人
垢版 |
2018/01/30(火) 13:14:13.97ID:nQQmpnBb
定数配列はフラッシュメモリに置いたままにできるからメモリ関係ないぞ
160デフォルトの名無しさん
垢版 |
2018/01/30(火) 13:16:52.58ID:KYTb3auw
これやってる人いる? N=41とか難しいやつだったような。


自然数Nに対して、平面上の円でその円周上の整数点がちょうどN個となる円の最小半径を求めよ。
161111
垢版 |
2018/01/30(火) 13:56:11.56ID:Hqo+QOWq
>>160
問題の意味がわからない。
162デフォルトの名無しさん
垢版 |
2018/01/30(火) 14:25:08.29ID:KYTb3auw
XY平面上に適当なサイズの円をおいたとき、
その円周上でX座標、Y座標もともに整数となる点の個数が定まる。
たとえば、中心(0,0)で半径1の円ならば、整数点は4のはず。(1,0) (-1,0) (0,1) (0-,1)
163デフォルトの名無しさん
垢版 |
2018/01/30(火) 14:43:14.34ID:KYTb3auw
しかし、x^2 + y^2 = 1
が4点の最小半径ではなく、

(x-0.5)^2 + (y-0.5)^2 = 0.5 
は、(0,0) (1,0) (0,1) (1,1)で成り立つのでこっちのほうが小さい半径。
2018/01/30(火) 17:06:36.99ID:4rQPa5qI
その条件だとN=1の時の正しい答えが分からないので俺には無理だ
2018/01/30(火) 18:24:23.70ID:BKgDyTE/
1はさすがに除外だろ
適当な3点で円作って、交点の座標調べていくくらいしか思いつかんわ
166愛知人
垢版 |
2018/01/30(火) 18:40:10.88
お題:IPアドレスのリスト(改行区切り)をホスト名のリストに変換せよ
167愛知人
垢版 |
2018/01/30(火) 19:02:43.92ID:nQQmpnBb
ネットつながるのパいざだけでワロタ
168111
垢版 |
2018/01/31(水) 01:37:53.83ID:Mw3vWzBx
>>166
Java
https://paiza.io/projects/gmdnr--vMsOdJg4mgYPVWg
2018/01/31(水) 02:49:17.63ID:Mw3vWzBx
>>166
Perl
https://paiza.io/projects/i-FzOG_EexLNXTX2_QYEpA
2018/01/31(水) 03:29:20.85ID:6DbHoJ9J
C++
2018/01/31(水) 03:30:11.21ID:6DbHoJ9J
う。C++には標準ネットワークライブラリが無いので環境依存になる。
そして俺はLINUXしらない。
2018/01/31(水) 04:17:16.49ID:/WNIOTt0
nodejs
var odai = `
216.58.197.14
98.139.180.180
`;
var out = [];
odai.trim().split`\n`.forEach(ip => dns.reverse(ip, (err, hostnames) => {
out.push(hostnames[0]);
}));
out.join`\n`;
2018/01/31(水) 13:04:01.66ID:tcQ8gYGT
名前の解決には DNS NIS WINS hostsファイルの4種類で行うこと
という条件付けたらどの言語使うのが簡単なんだろう
2018/01/31(水) 14:12:55.10ID:OaylDx9I
>>160
昔やってた(コード貼らずに計算結果だけスレに貼ってた)よ。
2年半くらい前の書き散らしたコード、見てもよーわからんくなってる。
175デフォルトの名無しさん
垢版 |
2018/02/02(金) 00:14:41.12ID:1WRiv4Qn
>>147
Rubyで。
N=11が限界みたいだ。

N = 11
org_ary = (1..N).to_a
wrk_ary = org_ary.dup

cnt = 0
while (wrk_ary = wrk_ary.shuffle) != org_ary
cnt += 1
end
p cnt

# 実行結果
# ruby odai-10-147.rb 17.10s user 0.15s system 96% cpu 17.906 total
# 22093802
# ruby odai-10-147.rb 35.19s user 0.27s system 98% cpu 35.950 total
# 6677838
# ruby odai-10-147.rb 10.64s user 0.11s system 96% cpu 11.170 total
# 26014838
2018/02/02(金) 07:34:54.92ID:/o1efu5t
>>147 ruby
1分以内ならN=12が限度かと

N=ARGV.first.to_i
m=(1..N).reduce(:*)
p (1..1.0/0).each{|i|rand(m).zero?&&(break i)}
2018/02/02(金) 11:55:37.20ID:yvAhkhAB
>>175-176
どちら様も参加してくれてありがとう。サンキュー。

>>175 の試行回数は参考になるな。
N=12位が現実的か。ふーん。
ベンチマーク的に言って結構できるなーって感想だけど、実用には程遠いな。
コンピュータもまだまだやな。

面白いね。
178111
垢版 |
2018/02/06(火) 18:09:43.58ID:f/L9N2Qc
お題:数独を解くプログラム

問題の入力は凝ってもいいけどテキストをファイルや標準入力から読んでもよい。
テキストファイルで数が分かっている所はその数字、分かっていない所は*にして9桁9行で入れとくとかね。

これもほんのちょっと難しいだけの初心者向けお題かな。
2018/02/06(火) 19:36:44.66ID:HIHjrXQm
NP完全問題って回答が似たり寄ったりになるよね
2018/02/06(火) 19:38:56.97ID:CbvV7VOe
うーん、SMTソルバ!w
2018/02/06(火) 23:49:05.88ID:SGfj8ZmY
>>178
過去ログに俺の書いたやつあるよ。
2018/02/07(水) 10:41:58.75ID:XQxF/gRF
数独は、各マスに候補となる数字のテーブル作って、縦横に重複してる数字を消して行き、残った一つを確定するって作業を繰り返すだけの処理で完成さ。
2018/02/07(水) 11:03:49.05ID:Fs+ewjw+
>>182
それで済むのは初級問題だけ
2018/02/07(水) 11:12:34.29ID:XZkgmMto
https://ideone.com/mtcLac
昔書いたやつ。発掘してきた。もう覚えてないからバグあっても治せん。
2018/02/07(水) 17:52:17.81ID:9l0mg5Zf
>>178 Ruby
https://ideone.com/YRslIS
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況