プログラミングのお題スレ Part17at TECH
プログラミングのお題スレ Part17 - 暇つぶし2ch950:デフォルトの名無しさん
20/06/24 19:12:10.98 q+GJbQMN.net
>>890
60面体まで出来ました
60面体にもなると
5角形と6角形だけからなるものだけでも
極大点が10個以上にもなって
本当に最大が探せてるのかいまいち確信は持てないんですが...
収束は速いので形の概要が分かれば高精度化は簡単です
14面体以上は全て
5角形が12面、残りが6角形の多面体が最大です

951:デフォルトの名無しさん
20/06/25 04:19:24.67 tNtWnOVb.net
お題:多面体の面の構成を、以下のルールに従う面列で表現する。
頂点のリストで表現された面の集合(例:正四面体なら {[1,2,3],[1,3,4],[1,4,2],[4,3,2]})で多面体が与えられたとき、
それに対応する多面体の面列表現を出力せよ。
1. 3~9角形の面の表現を t,q,p,x,h,o,n とする。10角形以上の面がある場合はエラーとしてよい。
2. 適当な面を選び、その面の表現をまず面列の先頭に置く。
3. 選ばれていない面が残っている場合は、それまでの面列の後にハイフンを置き、続けて、既に選ばれている面の外周に接する面を順に列挙する。
  選ばれていない面がなくなるまでこのプロセスを繰り返す。
4. ハイフンの前後の面列の、それぞれ先頭の文字に対応する面は、互いに接しているものを選ぶ。
5. ハイフンで区切られた面列に、pppp のように繰り返し部分がある場合は、p4 のように繰り返し回数を数字で表す。
  繰り返しの対象が単一の面でない場合は対象の前後に括弧を置く。この括弧は入れ子にできる。(t(xp)2)2 = txpxptxpxp
  (この括弧の中にハイフンを含めることはできない)
6. 可能な表現が複数ある場合は、表現に含まれるアルファベットの個数が最も少ない表現を採用する。
例) 三角錐: t-t3, 六角柱: x-q6-x, 正十二面体: p-p5-p5-p
  切頂二十面体(サッカーボール形): p-x5-(xp)5-(px)5-x5-p

952:デフォルトの名無しさん
20/06/25 04:37:07.60 +RECDQKB.net
>>915
そのルールでは任意の多面体を表現出来ないと思うんですが

953:デフォルトの名無しさん
20/06/25 08:13:21 XUZZkb7Y.net
だね
トポロジー的に球面限定だし
その限定でも
4. が複数可能性があるから
>>915の表現では一意に決まらない

954:デフォルトの名無しさん
20/06/25 08:24:29.35 C/HPxaHa.net
>>912
これってエクセープサれた改行文字で渡されるのが標準的じゃない?
規格としてあるのかわからないけど

955:デフォルトの名無しさん
20/06/25 09:12:48.56 Nd1uEPT+.net
>>918
RFCだと>>912は合法みたいね
URLリンク(www.kasai.fm)

956:デフォルトの名無しさん
20/06/25 10:55:47 fOnLoXil.net
最初から区切り文字をエスケープする方法まで決まっていたらxmlなんて出てこなかったかもな

957:デフォルトの名無しさん
20/06/27 03:45:36.69 PxUOhUZY.net
>>914
面の数が可変のものを作ってしまったか・・・
20面体、32面体、42面体、72面体あたりが面白い形状だと思うよ

958:デフォルトの名無しさん
20/06/27 07:33:34.74 TsX0h7IG.net
14面体以上は全て5角形6角形のみで
あまり面白くない
対称性が良いか悪いかだけ
現在82面体
手抜きで一部計算オーダーが非常に悪い所があって進まなくなってきた
(面数の5乗オーダー)
100面まで到達するにはコードを変えないとダメかも

959:デフォルトの名無しさん
20/06/27 16:25:32.02 PxUOhUZY.net
対称性が良ければ良いほど最大解となるかというとそうではない
八面体の解をみてもそれはわかるし
四十二面体の対称性の高いのは切稜十二面体だと思うが、解はそれとは違う
面の数の5乗というのは総当たりをしているのかな
高速化するには焼きなまし法等を使うといいのかと思うがどうやるんだろう

960:デフォルトの名無しさん
20/06/27 22:18:45.29 TsX0h7IG.net
1面少ない体積最大の立体から1面足した形を探索
なので最大が突然変異すれば最大を見逃すかもしれない
ランダムよりは効率が良さそう
構造計算のオーダーが4乗
ここはおそらく2乗くらいに減らせると思う
極大の収束は良くある微分を使うやつ
収束時も毎回構造計算してるけど
(ほぼ)同じ構造であるのでオーダーは1乗に減らせる

961:デフォルトの名無しさん
20/06/27 22:21:59.32 TsX0h7IG.net
形自体はもう面白くないので
改善はしないかも
むしろ体積が小さい極大の方がいろんな形になって面白い

962:デフォルトの名無しさん
20/06/28 05:11:29.32 pVjwcc2f.net
>>924
数値はこれと同じ?
9    0.076898933926867766
10   0.078734752898039751
11   0.080055026399577983
12   0.08168837182418255218049
13   0.082432267303420834
14   0.083349245941114841
16   0.084742718358283536
17   0.085264872589057683
20   0.086626966830007951
32   0.089493100466131958
33   0.089603827451613424
42   0.090574499972086386

963:デフォルトの名無しさん
20/06/28 08:32:06.86 BWJrAYP0.net
同じ

964:デフォルトの名無しさん
20/07/01 11:38:56.92 EROZsrNo.net
お題: 3つ以上の言語で動く"Hello World"(標準出力 改行有無不問)

965:デフォルトの名無しさん
20/07/01 14:23:15.09 GoUt95hL.net
php htmlあとないかな

966:デフォルトの名無しさん
20/07/01 14:37:40.66 xploYGSU.net
>>928
#! /usr/bin/perl
print "Hello World";
#!/usr/bin/python
print "Hello World"
<?php
print "Hello World";
?>

967:デフォルトの名無しさん
20/07/01 17:33:04.53 S7tqJ4vi.net
>>928
$ cc hw.c && ./a.out
Hello, World!
$ bash hw.c
Hello, World!
$ perl hw.c
Hello, World!
$ cat hw.c
#if 0 /*
/ 2>\/dev\/null
print() {
echo Hello, World!
}
2>\/dev\/null /;
#*/
#endif
#include <stdio.h>
#define print main() { printf ("Hello, World!\n"); } char *p =
print "Hello, World!\n";

968:デフォルトの名無しさん
20/07/01 19:07:27.63 QxhyVLlq.net
>>928 面白いね。俺の回答はつまらんけど
$ cat hello_world
print("Hello World!")'
$ruby hello_world
Hello World!
$perl hello_world
Hello World!
$python hello_world
Hello World!

969:デフォルトの名無しさん
20/07/02 11:54:56.14 xIvurPw0.net
お題: CSV を、JSON に変換せよ
あ,い
1,2
[
["あ","い"],
["1","2"]
]
Convert CSV to JSON
URLリンク(www.convertcsv.com)

970:デフォルトの名無しさん
20/07/02 12:21:40.12 4foKXCae.net
あ,い
1,2
2, 3

[
{ "あ": 1, "い": 2 },
{ "あ": 2, "い": 3 }
]
とかじゃないんだな
❯ node
> const csv2json = text => text.trim().split('\n').map(line => line.split(','))
undefined
> text = `
あ,い
1,2`
> csv2json(text)
[ [ 'あ', 'い' ], [ '1', '2' ] ]

971:930
20/07/03 09:48:22.31 hVBUXcHj.net
CSV は、ヘッダー行なしの設定です!

972:デフォルトの名無しさん
20/07/04 14:42:26.88 xFbPiC8b.net
>>933 Ruby
require 'csv'
require 'json'
puts CSV.parse($<.read).to_json # => [["あ","い"],["1","2"]]

973:デフォルトの名無しさん
20/07/05 05:09:15 w1OPzoRS.net
>>933
sh というか awk というか

( echo あ,い ; echo 1,2 ) | awk -F, 'BEGIN{print "["} { printf "[\"%s\"", $1; for (i = 2; i <= NF; i++) printf ",\"%s\"", $i; print "]"} END{print "]"}'

974:デフォルトの名無しさん
20/07/05 05:13:48 w1OPzoRS.net
>>933
>>937はレコードごとのカンマが抜けてた。ちょっと修正。

( echo あ,い ; echo 1,2 ) | awk -F, 'BEGIN{print "["} {if(NR>1)print","; printf "[\"%s\"", $1; for (i = 2; i <= NF; i++) printf ",\"%s\"", $i; printf "]"} END{print "\n]"}'

975:デフォルトの名無しさん
20/07/05 19:57:21.17 MQ9nuMmc.net
>>912
Java
URLリンク(paiza.io)

976:デフォルトの名無しさん
20/07/05 22:13:54 HPvgh2UL.net
>>912
>>933
何気にPythonの仕様が気になったので。
import csv
import io
import json

with io.StringIO("""
1,abc,"def
ghi",4
2,abc,"def
ghi",4
""") as f:
__print([r for r in csv.reader(f) if r])

with io.StringIO("""
あ,い
1,2
""") as f:
__print(json.dumps([r for r in csv.reader(f) if r], ensure_ascii=False))

977:デフォルトの名無しさん
20/07/10 21:08:49.94 +HNczGHj.net
お題:"チューリングマシン"を使って一行CSVパーサーを作る
チューリングマシンも自作すること
【CSVの仕様】
・カラム値は「a」、「,」、「"」、の組み合わせ、または「」(値無し)しか取らない
・カラム値に「,」が含まれる場合は「"」で囲む必要がある、含まれない場合はどっちでもいい
・カラム値に「"」が含まれる場合は「\"」とエスケープする
入力例) "aa,a",aa,,"aa\"aa"
チューリングマシンからの出力例、Pythonの場合) [None, 'a', 'a', ',', 'a', None, 'X', 'a', 'a', 'X', 'X', None, 'a', 'a', None, '"', 'a', 'a', None]
(Noneは無視、'X'は区切りポイントを表している)
【開発規模】Pythonで15行程度

978:デフォルトの名無しさん
20/07/11 11:44:08.13 60oNEnIZ.net
チューリングマシンなのにPythonとは?
意味不明だ

979:デフォルトの名無しさん
20/07/11 11:48:42.38 KPNFpi8s.net
メモリが無限にないので作れましぇん><

980:デフォルトの名無しさん
20/07/11 11:50:41.57 60oNEnIZ.net
正方形の面積を求める問題に対して
この世に正方形なんて存在しないから求められません
とか言っちゃう系?

981:デフォルトの名無しさん
20/07/11 11:51:57.60 KPNFpi8s.net
比喩がとんちんかんだぞ
今回は「チューリングマシンも自作すること」って明言されてますやん

982:デフォルトの名無しさん
20/07/11 11:56:32.56 8xOOoQBu.net
自作チューリングマシンを Pythonの改行15回程度で作れって?神だわ

983:デフォルトの名無しさん
20/07/11 11:57:52 60oNEnIZ.net
動作を規定すればよくて
実際に動く機械を作る必要はない

984:デフォルトの名無しさん
20/07/11 11:59:10 60oNEnIZ.net
と思ったが
Pythonでエミュレーターを作れって事か?

985:デフォルトの名無しさん
20/07/11 12:00:00.07 60oNEnIZ.net
別に無限にメモリがある必要は無いけど
実際に動くどんなプログラムにも限界がある

986:デフォルトの名無しさん
20/07/11 12:01:06.17 KPNFpi8s.net
>>949
メモリが有限だったらチューリングマシンとはいいましぇん><

987:デフォルトの名無しさん
20/07/11 12:01:59.62 2Qc0/uE/.net
適当な言語で状態遷移機械つくればええんちゃう

988:デフォルトの名無しさん
20/07/11 12:02:26.85 8xOOoQBu.net
しかもCSVパーサーって
つまりはPython15行でExcelを再現しろと?

989:デフォルトの名無しさん
20/07/11 12:13:26.90 6CWHpJ6z.net
>>941の生成言語
CSV → COL | COL ',' CSV
COL → '"' WCOM '"' | NCOM
WCOM → ε | 'a' WCOM | ',' WCOM | '\' '"' WCOM
NCOM → ε | 'a' NCOM | '\' '"' NCOM
状態セル10個前後でいけそう

990:デフォルトの名無しさん
20/07/11 12:46:36.38 6CWHpJ6z.net
>>941 Perl 状態セル4個
$ cat input
"aa,a",aa,,"aa\"aa"
$ perl odai938 < input
[None, 'a', 'a', ',', 'a', None, 'X', 'a', 'a', 'X', 'X', None, 'a', 'a', None, '"', 'a', 'a', None]
$ cat odai938
%maton = (
'N' => { 'a' => ['N', q('a')] , ',' => ['N', q('X')] , '"' => ['Q', q(None)] , '\\' => ['E', q(None)] },
'Q' => { 'a' => ['Q', q('a')] , ',' => ['Q', q(',')] , '"' => ['N', q(None)] , '\\' => ['F', q(None)] },
'E' => { 'a' => ['N', q('a')] , ',' => ['N', q(',')] , '"' => ['N', q('"') ] , '\\' => ['N', q(None)] },
'F' => { 'a' => ['Q', q('a')] , ',' => ['Q', q(',')] , '"' => ['Q', q('"') ] , '\\' => ['Q', q(None)] },
);
@res = ();
$state = 'N';
for $c ( split //, <> ) {
($next, $out) = @{$maton{$state}{$c}};
last unless defined $next;
push @res, $out;
$state = $next;
}
printf "[%s]\n", join ', ', @res;

991:デフォルトの名無しさん
20/07/11 13:08:54.01 WonOAWfv.net
チューリングマシンわからんけどめっちゃ面白そう

992:デフォルトの名無しさん
20/07/11 13:14:56.54 JFnadz6+.net
オートマトンを使ってってことなのね、なるほど

993:デフォルトの名無しさん
20/07/11 13:56:56.88 R3MTOjCq.net
>>954
チューリングマシンを使っていないのでだめだ
そのオートマトンは文脈依存文法どころか文脈自由文法すら対応していない
これら全てに対応出来てこそチューリングマシンだ
(このことは将来エラーリカバリーを考える上で、重要になると思っている)
つまりテープヘッドは左右に動き状態関数でそれを指示出来る(文脈自由文法に対応)
チューリングマシンは受理状態を指定出来る
今回、状態の数は受理状態を省略して5個でいける(もっと少なく出来るかもしれんが)
状態関数は状態5*記号4のマトリックスを考えて、その中の12個を埋めればいい

994:デフォルトの名無しさん
20/07/11 16:08:31.89 R3MTOjCq.net
訂正
×状態関数
◯状態遷移関数

995:デフォルトの名無しさん
20/07/11 16:29:47.46 2Qc0/uE/.net
>>957が正解を出してくれるんだそうだ

996:デフォルトの名無しさん
20/07/11 16:36:53.77 rnrtUK1e.net
例を出してくれ

997:デフォルトの名無しさん
20/07/11 17:01:50.43 KPNFpi8s.net
そもそも作問の時点でおかしいんだよ!

998:デフォルトの名無しさん
20/07/11 17:09:33 R3MTOjCq.net
>>961
どこがおかしい?
線形有界オートマトンといえば納得するか?
そんな言葉使わなくても実装出来る
と言うかこのスレにこの言葉知ってる奴いないだろ

999:デフォルトの名無しさん
20/07/11 17:49:01.47 3Cd1PF49.net
焉んぞ牛刀を用いん

1000:デフォルトの名無しさん
20/07/11 17:53:42.33 60oNEnIZ.net
チューリングマシンの設計じゃなくて
チューリングマシンエミュレーターの設計だよな

1001:デフォルトの名無しさん
20/07/11 18:17:04 R3MTOjCq.net
>>954
\aやらを認めてるのが気になるがそれを直したら遷移関数はあってるな
後はチューリングマシンとして完成させるだけ
俺の遷移関数に冗長があったから直したら一致した
>>963
HTMLは文脈自由文法だが
WebKitのHTMLパーサーは非文脈自由文法として実装されている
そこでチューリングマシンが有用かはさせおき、非文脈自由文法を考えるキッカケになることもある思う
>>964
エンドマーカーを省略した線形有界オートマトンの実装な

1002:デフォルトの名無しさん
20/07/11 19:08:07.36 2M7rjl8q.net
>>950
解ける問題に制限ができるだけの話

1003:デフォルトの名無しさん
20/07/11 20:23:08.26 feKeXoV6.net
そういやチューリングってゲイだったんだってね。

1004:デフォルトの名無しさん
20/07/11 20:30:57.47 JFnadz6+.net
イミテーション・ゲームという映画が面白かった
キーラ・ナイトレイ美しすぎ

1005:デフォルトの名無しさん
20/07/11 20:51:48.92 qWNdyupY.net
チューリング、イギリスのお札になるってよ

1006:デフォルトの名無しさん
20/07/13 10:36:22.79 0ATtS2UF.net
お題
日本将棋連盟のサイトにあるレーティングで
AとBが対戦してAが勝った場合のA、Bの
新しいレーティングを求める。

1007:デフォルトの名無しさん
20/07/13 12:03:42.96 JZTlaHWi.net
お題じゃなくてツール作成依頼でしょ?

1008:デフォルトの名無しさん
20/07/13 17:09:42.48 aaJV9hNQ.net
解答を持ちあわせていて、ただドヤりたいだけのスレなのに?
解答期限をつけるべきだと思う

1009:デフォルトの名無しさん
20/07/13 20:25:51.06 8wNaSmrQ.net
>>972
そんなドヤお題最近あったか?

1010:デフォルトの名無しさん
20/07/13 21:28:01.53 UGEHS+NK.net
イロレーティングの実装ってことでいいのかな?
だとするとあまりに簡単すぎないか?
漢字覚えるのに上からなぞるだけみたいな問題だと思った
考える要素が皆無でもこのスレの趣旨に反しないのか?
現にイロレーティングの実装なんかググったらすぐ見つかるわけだし。
そんなんでもいいんだったらいくらでも出せる。組合せ最適化問題の本に書かれているのそのまま出せばいいわけだし。
後、入力が何で出力が何で、どれくらいで実装できるものか書いてくれたら分かりやすくなると思う

1011:デフォルトの名無しさん
20/07/13 21:54:58 nR5el41K.net
結果後の数値出すだけだから2つの数値受け取って計算して出力するだけでしょ
三角形の面積を求めよ、と同じ問題
計算式知ってるか、ググれるかだけ

1012:蟻人間
20/07/13 22:30:47.09 WwiIS8F6.net
お題: 九九の表の1×1~9×9をSQLデータベースに書き出せ。

1013:蟻人間
20/07/13 22:53:17.28 WwiIS8F6.net
お題: サイン関数の表をSQLテーブルに出力し、そのテーブルへのSQL問い合わせを使ってサイン関数を再現する関数を作れ。精度はテキトーで構わない。

1014:デフォルトの名無しさん
20/07/13 23:56:34.26 UGEHS+NK.net
テイラー展開でいいの?

1015:蟻人間
20/07/13 23:57:43.03 WwiIS8F6.net
>>978
お好きなように。

1016:デフォルトの名無しさん
20/07/14 00:00:00.37 5rX6+9jh.net
>>977
出来たけど5chはSQLは貼れないのかな?w
間違ったSQLインジェクション対策なのかもw

1017:デフォルトの名無しさん
20/07/14 00:08:27.23 kYSYwo9X.net
SELECT * FROM threads;

1018:デフォルトの名無しさん
20/07/14 00:08:30.45 5rX6+9jh.net
>>977
SQLはブロックされて貼れないけど3行で出来た
1. x、y、y_hatのカラムでテーブル作成
2. INSERT SELECT文とPGのgenerate_series関数を使ってxに乱数をINSERT
3 .UPDATE文でsin関数をyに、テイラー展開版sin関数をy_hatにINSERT

1019:蟻人間
20/07/14 00:09:09.45 rFkkEmf3.net
>>980
ideoneかcodepadを

1020:蟻人間
20/07/14 00:19:29.80 rFkkEmf3.net
原始的なSQL injection対策か?

1021:デフォルトの名無しさん
20/07/14 01:07:26 5rX6+9jh.net
>>976
やっぱりSQL貼れないねぇ

答え:PostgreSQLで確認
URLリンク(codepad.org)
※会員登録してないからそのうち消える

1022:デフォルトの名無しさん
20/07/14 03:12:25.26 5rX6+9jh.net
>>977
これもしかしてサイン関数の表は荒いから補完法を使ってサイン関数を作れって意味だったのかなー

1023:デフォルトの名無しさん
20/07/14 05:10:48.70 kYSYwo9X.net
テーブル作らなくても行けそうだと思ったけど必要なのか

1024:デフォルトの名無しさん
20/07/14 06:05:28.09 BHFrzCgy.net
>>976
mysql>CREATE DATABASE testdb;
mysql>use testdb;
mysql>CREATE TABLE tbl_kuku(
'1' int, '2' int, '3' int,
'4' int, '5' int, '6' int,
'7' int, '8' int, '9' int
) ;
mysql>load data local infile
"/Users/user/Desktop/kukutable.csv "
into table tbl_kuku
fields terminated by ','
optionally enclosed by '"';

1025:デフォルトの名無しさん
20/07/14 06:24:26 5rX6+9jh.net
>>977
問題の意味がよく分からなかったけど、荒いsine関数表を元に補間法によって任意の値に対するsine関数を完成させろという意味なら出来た
PostgreSQL用
URLリンク(codepad.org)
※会員登録してないからそのうち消える

1026:デフォルトの名無しさん
20/07/14 06:36:16.97 5rX6+9jh.net
>>977
>>989をちょっと修正した
URLリンク(codepad.org)

1027:デフォルトの名無しさん
20/07/14 07:41:02.95 i9nYbez+.net
>>977
mysql> delimiter //
mysql> CREATE FUNCTION SIN (angle DOUBLE )
-> BEGIN
-> SELECT angle FROM tbl_sin ;
-> END//
mysql> delimiter ;
mysql> SELECT SIN(45);

1028:デフォルトの名無しさん
20/07/14 11:28:46.13 5rX6+9jh.net
>>941のお題は誰も解答しないの?

1029:デフォルトの名無しさん
20/07/14 11:59:10.89 q9pbneb4.net
>>977
>>990のコメント部分の修正とコメント追加
URLリンク(codepad.org)

1030:蟻人間
20/07/14 12:43:06.54 xUpKMtHj.net
そろそろ次スレ

1031:デフォルトの名無しさん
20/07/14 13:54:37.55 jW5p6F/e.net
プログラミングのお題スレ Part18
スレリンク(tech板)

1032:デフォルトの名無しさん
20/07/14 17:21:12.98 1/ePl1B5.net
>>994
解答締め切りと採点と答え合わせは?
ちゃんとフラグ回収してよね

1033:デフォルトの名無しさん
20/07/15 12:20:15.70 2zn904g+.net
お題: 過去スレからお題と回答を抽出し、検索できるようにしろ

1034:デフォルトの名無しさん
20/07/15 14:13:59.93 fkxllX2L.net
>>997
print "ろくなお題もまともな回答もありませんでした。"

1035:蟻人間
20/07/16 05:51:13.84 Tv2xtriA.net
お題: 三次元タートルグラフィックスを実装し、森林・臓器・シェルピンスキーの立体ギャスケットのいずれかを描画せよ。
奥行きの表現には任意の遠近法か任意のレンダリングエンジンを使うこと。
【実装例】
walk(長さ) // 現在のペンの状態で現在の方向へ前進する
set_pos(x, y, z) // 位置をセット
pos = get_pos() // 現在位置を保存
set_dir(dx, dy, dz) // 方向ベクトルをセット
dir = get_dir() // 現在の方向を保存
turn(dx, dy, dz) // 向きを調整(方向ベクトルを回転)
pen_on() // ペンを下ろす(描画を開始)
pen_off() // ペンを上げる(描画を止める)

1036:デフォルトの名無しさん
20/07/16 06:23:09.04 33WC3be6.net
うめ

1037:デフォルトの名無しさん
20/07/16 06:23:13.93 33WC3be6.net
うめ

1038:デフォルトの名無しさん
20/07/16 06:23:45.03 33WC3be6.net
うめ

1039:デフォルトの名無しさん
20/07/16 06:24:07.53 33WC3be6.net
次スレ
プログラミングのお題スレ Part18
スレリンク(tech板)

1040:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 125日 4時間 41分 20秒

1041:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch