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

レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん
垢版 |
2020/03/13(金) 01:42:47.06ID:0rEhys36
プログラミングのお題スレです。

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

2 名前:デフォルトの名無しさん
  >>1 使用言語
  回答本文
  結果がある場合はそれも

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

宿題は宿題スレがあるのでそちらへ。

※前スレ
プログラミングのお題スレ Part16
https://mevius.5ch.net/test/read.cgi/tech/1573948822/
2020/07/01(水) 14:23:15.09ID:GoUt95hL
php htmlあとないかな
2020/07/01(水) 14:37:40.66ID:xploYGSU
>>925
#! /usr/bin/perl
print "Hello World";

#!/usr/bin/python
print "Hello World"

<?php
print "Hello World";
?>
2020/07/01(水) 17:33:04.53ID:S7tqJ4vi
>>925
$ 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";
2020/07/01(水) 19:07:27.63ID:QxhyVLlq
>>925 面白いね。俺の回答はつまらんけど

$ cat hello_world
print("Hello World!")'

$ruby hello_world
Hello World!

$perl hello_world
Hello World!

$python hello_world
Hello World!
930デフォルトの名無しさん
垢版 |
2020/07/02(木) 11:54:56.14ID:xIvurPw0
お題: CSV を、JSON に変換せよ

あ,い
1,2

[
["あ","い"],
["1","2"]
]

Convert CSV to JSON
https://www.convertcsv.com/csv-to-json.htm
931デフォルトの名無しさん
垢版 |
2020/07/02(木) 12:21:40.12ID:4foKXCae
あ,い
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' ] ]
932930
垢版 |
2020/07/03(金) 09:48:22.31ID:hVBUXcHj
CSV は、ヘッダー行なしの設定です!
2020/07/04(土) 14:42:26.88ID:xFbPiC8b
>>930 Ruby

require 'csv'
require 'json'

puts CSV.parse($<.read).to_json # => [["あ","い"],["1","2"]]
934デフォルトの名無しさん
垢版 |
2020/07/05(日) 05:09:15.05ID:w1OPzoRS
>>930
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 "]"}'
2020/07/05(日) 05:13:48.20ID:w1OPzoRS
>>930
>>934はレコードごとのカンマが抜けてた。ちょっと修正。

( 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]"}'
936デフォルトの名無しさん
垢版 |
2020/07/05(日) 19:57:21.17ID:MQ9nuMmc
>>909
Java
https://paiza.io/projects/u9iPzIR3Jul90BQ8JQR9iA
937デフォルトの名無しさん
垢版 |
2020/07/05(日) 22:13:54.68ID:HPvgh2UL
>>909
>>930
何気に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))
938デフォルトの名無しさん
垢版 |
2020/07/10(金) 21:08:49.94ID:+HNczGHj
お題:"チューリングマシン"を使って一行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行程度
2020/07/11(土) 11:44:08.13ID:60oNEnIZ
チューリングマシンなのにPythonとは?
意味不明だ
2020/07/11(土) 11:48:42.38ID:KPNFpi8s
メモリが無限にないので作れましぇん><
2020/07/11(土) 11:50:41.57ID:60oNEnIZ
正方形の面積を求める問題に対して
この世に正方形なんて存在しないから求められません
とか言っちゃう系?
2020/07/11(土) 11:51:57.60ID:KPNFpi8s
比喩がとんちんかんだぞ
今回は「チューリングマシンも自作すること」って明言されてますやん
2020/07/11(土) 11:56:32.56ID:8xOOoQBu
自作チューリングマシンを Pythonの改行15回程度で作れって?神だわ
2020/07/11(土) 11:57:52.68ID:60oNEnIZ
動作を規定すればよくて
実際に動く機械を作る必要はない
2020/07/11(土) 11:59:10.62ID:60oNEnIZ
と思ったが
Pythonでエミュレーターを作れって事か?
2020/07/11(土) 12:00:00.07ID:60oNEnIZ
別に無限にメモリがある必要は無いけど
実際に動くどんなプログラムにも限界がある
2020/07/11(土) 12:01:06.17ID:KPNFpi8s
>>946
メモリが有限だったらチューリングマシンとはいいましぇん><
2020/07/11(土) 12:01:59.62ID:2Qc0/uE/
適当な言語で状態遷移機械つくればええんちゃう
2020/07/11(土) 12:02:26.85ID:8xOOoQBu
しかもCSVパーサーって
つまりはPython15行でExcelを再現しろと?
2020/07/11(土) 12:13:26.90ID:6CWHpJ6z
>>938の生成言語
CSV → COL | COL ',' CSV
COL → '"' WCOM '"' | NCOM
WCOM → ε | 'a' WCOM | ',' WCOM | '\' '"' WCOM
NCOM → ε | 'a' NCOM | '\' '"' NCOM
状態セル10個前後でいけそう
2020/07/11(土) 12:46:36.38ID:6CWHpJ6z
>>938 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;
2020/07/11(土) 13:08:54.01ID:WonOAWfv
チューリングマシンわからんけどめっちゃ面白そう
953デフォルトの名無しさん
垢版 |
2020/07/11(土) 13:14:56.54ID:JFnadz6+
オートマトンを使ってってことなのね、なるほど
954デフォルトの名無しさん
垢版 |
2020/07/11(土) 13:56:56.88ID:R3MTOjCq
>>951
チューリングマシンを使っていないのでだめだ
そのオートマトンは文脈依存文法どころか文脈自由文法すら対応していない
これら全てに対応出来てこそチューリングマシンだ
(このことは将来エラーリカバリーを考える上で、重要になると思っている)
つまりテープヘッドは左右に動き状態関数でそれを指示出来る(文脈自由文法に対応)
チューリングマシンは受理状態を指定出来る

今回、状態の数は受理状態を省略して5個でいける(もっと少なく出来るかもしれんが)
状態関数は状態5*記号4のマトリックスを考えて、その中の12個を埋めればいい
955デフォルトの名無しさん
垢版 |
2020/07/11(土) 16:08:31.89ID:R3MTOjCq
訂正
×状態関数
◯状態遷移関数
2020/07/11(土) 16:29:47.46ID:2Qc0/uE/
>>954が正解を出してくれるんだそうだ
2020/07/11(土) 16:36:53.77ID:rnrtUK1e
例を出してくれ
2020/07/11(土) 17:01:50.43ID:KPNFpi8s
そもそも作問の時点でおかしいんだよ!
959デフォルトの名無しさん
垢版 |
2020/07/11(土) 17:09:33.35ID:R3MTOjCq
>>958
どこがおかしい?
線形有界オートマトンといえば納得するか?
そんな言葉使わなくても実装出来る
と言うかこのスレにこの言葉知ってる奴いないだろ
2020/07/11(土) 17:49:01.47ID:3Cd1PF49
焉んぞ牛刀を用いん
2020/07/11(土) 17:53:42.33ID:60oNEnIZ
チューリングマシンの設計じゃなくて
チューリングマシンエミュレーターの設計だよな
962デフォルトの名無しさん
垢版 |
2020/07/11(土) 18:17:04.37ID:R3MTOjCq
>>951
\aやらを認めてるのが気になるがそれを直したら遷移関数はあってるな
後はチューリングマシンとして完成させるだけ
俺の遷移関数に冗長があったから直したら一致した
>>960
HTMLは文脈自由文法だが
WebKitのHTMLパーサーは非文脈自由文法として実装されている
そこでチューリングマシンが有用かはさせおき、非文脈自由文法を考えるキッカケになることもある思う
>>961
エンドマーカーを省略した線形有界オートマトンの実装な
2020/07/11(土) 19:08:07.36ID:2M7rjl8q
>>947
解ける問題に制限ができるだけの話
964デフォルトの名無しさん
垢版 |
2020/07/11(土) 20:23:08.26ID:feKeXoV6
そういやチューリングってゲイだったんだってね。
965デフォルトの名無しさん
垢版 |
2020/07/11(土) 20:30:57.47ID:JFnadz6+
イミテーション・ゲームという映画が面白かった
キーラ・ナイトレイ美しすぎ
2020/07/11(土) 20:51:48.92ID:qWNdyupY
チューリング、イギリスのお札になるってよ
967デフォルトの名無しさん
垢版 |
2020/07/13(月) 10:36:22.79ID:0ATtS2UF
お題
日本将棋連盟のサイトにあるレーティングで
AとBが対戦してAが勝った場合のA、Bの
新しいレーティングを求める。
2020/07/13(月) 12:03:42.96ID:JZTlaHWi
お題じゃなくてツール作成依頼でしょ?
2020/07/13(月) 17:09:42.48ID:aaJV9hNQ
解答を持ちあわせていて、ただドヤりたいだけのスレなのに?
解答期限をつけるべきだと思う
2020/07/13(月) 20:25:51.06ID:8wNaSmrQ
>>969
そんなドヤお題最近あったか?
971デフォルトの名無しさん
垢版 |
2020/07/13(月) 21:28:01.53ID:UGEHS+NK
イロレーティングの実装ってことでいいのかな?
だとするとあまりに簡単すぎないか?
漢字覚えるのに上からなぞるだけみたいな問題だと思った
考える要素が皆無でもこのスレの趣旨に反しないのか?
現にイロレーティングの実装なんかググったらすぐ見つかるわけだし。
そんなんでもいいんだったらいくらでも出せる。組合せ最適化問題の本に書かれているのそのまま出せばいいわけだし。
後、入力が何で出力が何で、どれくらいで実装できるものか書いてくれたら分かりやすくなると思う
2020/07/13(月) 21:54:58.06ID:nR5el41K
結果後の数値出すだけだから2つの数値受け取って計算して出力するだけでしょ
三角形の面積を求めよ、と同じ問題
計算式知ってるか、ググれるかだけ
2020/07/13(月) 22:30:47.09ID:WwiIS8F6
お題: 九九の表の1×1〜9×9をSQLデータベースに書き出せ。
2020/07/13(月) 22:53:17.28ID:WwiIS8F6
お題: サイン関数の表をSQLテーブルに出力し、そのテーブルへのSQL問い合わせを使ってサイン関数を再現する関数を作れ。精度はテキトーで構わない。
975デフォルトの名無しさん
垢版 |
2020/07/13(月) 23:56:34.26ID:UGEHS+NK
テイラー展開でいいの?
2020/07/13(月) 23:57:43.03ID:WwiIS8F6
>>975
お好きなように。
977デフォルトの名無しさん
垢版 |
2020/07/14(火) 00:00:00.37ID:5rX6+9jh
>>974
出来たけど5chはSQLは貼れないのかな?w
間違ったSQLインジェクション対策なのかもw
2020/07/14(火) 00:08:27.23ID:kYSYwo9X
SELECT * FROM threads;
979デフォルトの名無しさん
垢版 |
2020/07/14(火) 00:08:30.45ID:5rX6+9jh
>>974
SQLはブロックされて貼れないけど3行で出来た
1. x、y、y_hatのカラムでテーブル作成
2. INSERT SELECT文とPGのgenerate_series関数を使ってxに乱数をINSERT
3 .UPDATE文でsin関数をyに、テイラー展開版sin関数をy_hatにINSERT
2020/07/14(火) 00:09:09.45ID:rFkkEmf3
>>977
ideoneかcodepadを
2020/07/14(火) 00:19:29.80ID:rFkkEmf3
原始的なSQL injection対策か?
982デフォルトの名無しさん
垢版 |
2020/07/14(火) 01:07:26.62ID:5rX6+9jh
>>973
やっぱりSQL貼れないねぇ

答え:PostgreSQLで確認
http://codepad.org/qGD8d2IU
※会員登録してないからそのうち消える
983デフォルトの名無しさん
垢版 |
2020/07/14(火) 03:12:25.26ID:5rX6+9jh
>>974
これもしかしてサイン関数の表は荒いから補完法を使ってサイン関数を作れって意味だったのかなー
2020/07/14(火) 05:10:48.70ID:kYSYwo9X
テーブル作らなくても行けそうだと思ったけど必要なのか
2020/07/14(火) 06:05:28.09ID:BHFrzCgy
>>973
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 '"';
986デフォルトの名無しさん
垢版 |
2020/07/14(火) 06:24:26.46ID:5rX6+9jh
>>974
問題の意味がよく分からなかったけど、荒いsine関数表を元に補間法によって任意の値に対するsine関数を完成させろという意味なら出来た
PostgreSQL用
http://codepad.org/Z81nscIT
※会員登録してないからそのうち消える
987デフォルトの名無しさん
垢版 |
2020/07/14(火) 06:36:16.97ID:5rX6+9jh
>>974
>>986をちょっと修正した
http://codepad.org/ZdYWwgrm
2020/07/14(火) 07:41:02.95ID:i9nYbez+
>>974
mysql> delimiter //

mysql> CREATE FUNCTION SIN (angle DOUBLE )
-> BEGIN
-> SELECT angle FROM tbl_sin ;
-> END//

mysql> delimiter ;

mysql> SELECT SIN(45);
989デフォルトの名無しさん
垢版 |
2020/07/14(火) 11:28:46.13ID:5rX6+9jh
>>938のお題は誰も解答しないの?
990デフォルトの名無しさん
垢版 |
2020/07/14(火) 11:59:10.89ID:q9pbneb4
>>974
>>987のコメント部分の修正とコメント追加
http://codepad.org/7HANT66s
2020/07/14(火) 12:43:06.54ID:xUpKMtHj
そろそろ次スレ
2020/07/14(火) 13:54:37.55ID:jW5p6F/e
プログラミングのお題スレ Part18
https://mevius.5ch.net/test/read.cgi/tech/1594702426/
993デフォルトの名無しさん
垢版 |
2020/07/14(火) 17:21:12.98ID:1/ePl1B5
>>991
解答締め切りと採点と答え合わせは?
ちゃんとフラグ回収してよね
2020/07/15(水) 12:20:15.70ID:2zn904g+
お題: 過去スレからお題と回答を抽出し、検索できるようにしろ
2020/07/15(水) 14:13:59.93ID:fkxllX2L
>>994
print "ろくなお題もまともな回答もありませんでした。"
2020/07/16(木) 05:51:13.84ID:Tv2xtriA
お題: 三次元タートルグラフィックスを実装し、森林・臓器・シェルピンスキーの立体ギャスケットのいずれかを描画せよ。
奥行きの表現には任意の遠近法か任意のレンダリングエンジンを使うこと。

【実装例】
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() // ペンを上げる(描画を止める)
2020/07/16(木) 06:23:09.04ID:33WC3be6
うめ
2020/07/16(木) 06:23:13.93ID:33WC3be6
うめ
2020/07/16(木) 06:23:45.03ID:33WC3be6
うめ
2020/07/16(木) 06:24:07.53ID:33WC3be6
次スレ

プログラミングのお題スレ Part18
https://mevius.5ch.net/test/read.cgi/tech/1594702426/
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 125日 4時間 41分 20秒
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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