プログラミングのお題スレ Part10
■ このスレッドは過去ログ倉庫に格納されています
1 5 8 2 ? ? 7 6 ?
? ? 7 ? ? ? 8 ? ?
6 4 ? ? ? 8 ? ? ?
8 ? 6 4 ? ? 5 7 ?
? 2 ? ? ? 6 ? 1 ?
? ? ? ? ? 5 6 ? 9
4 ? ? ? 1 ? ? ? ?
? 9 ? ? ? ? 1 ? 7
7 ? 1 ? ? 2 ? ? 5
この問題はどのぐらい簡単? 158293764
937641852
642758391
816429573
529376418
374185629
485917236
293564187
761832945
と出たが... 矛盾はないでしょ。解1つしかないしだし
難度でいえば、基本ルール(縦、横、3*3でかぶらない)だけでとけるから一番簡単な部類なんじゃない ? ? 1 ? ? ? 9 ? ?
3 ? ? 9 ? 1 8 2 ?
7 ? ? ? ? ? 1 4 5
1 ? ? ? ? 2 ? 3 ?
4 ? ? ? ? 7 5 ? ?
8 7 6 ? 4 ? 2 ? ?
9 ? ? 7 ? 6 ? ? ?
? ? 8 ? ? 9 ? ? ?
? 1 7 ? 2 ? 6 ? ?
これはもう少し難しい? >>342
唯一解を仮定するか背理法使わないと解けないから中〜上級くらいじゃない
てか数独スレで聞けばいいじゃん 数独はどれほど難しくてもこのスレで公開されたプログラム等を使えばほとんど瞬時に答えが出てしまうわけで、難易度判定は答えを求めるのとは違う何かが必要なのではないか? 人間と同じ様に候補を消して行くだけで解けるのは初級〜中級を予め埋まってる多さで分けて、総当たりでしか解けないのを上級、
答えが複数あって全て解くのをスペシャル級としたらいい。
でもどれも一瞬で解けちゃうんだけどね。
むしろ画像認識でカメラから問題を入力してくれよ。 >>346
その場合、正解は全組み合わせを網羅するしかないからなぁ すべての数独の問題の解答を書けというようなもんだからなw 簡単なお題
ローマ字入力された文字列を日本語の平仮名の文字列に変換する。
記号はそのままでも良い。
変換不能な文字列を発見したらその部分はエラーとしてわかるように出力する。
同じ音の表現が複数ある場合は一つの表現の平仮名にして良い(SHA と SYA を「しゃ」にする等)。 名詞とかにある母国語綴りとか混雑してると途端に難問になる悪寒。 ローマ字変換のルールに幅がありすぎてなぁ……
"tttttte"は"っっっっって"なのかエラーとするのか
"xn"は"ん"なのかエラーとするのか
"patchi"は"パッチ"なのかエラーとするのか
"qi"は"くぃ"なのかエラーなのかとか 細かいルールは自分で決めちゃっても良いよ。こういう時はこうなるとコメント等に書いておいてくれれば。 自分でお題出しといて解かないのもあれなので一応作った。
結構面倒だな。w
Kotlin
https://paiza.io/projects/0yfrz9O4yGVgr3CPHAmVFw
しかしあまりKotlinらしい書き方ではないような気がする。 気づいたらAI同士で独自言語で話してて慌てて停止ですね。 捕捉
使っていいビット演算 and or not xor ビットシフト
負の数の定義 自由
四則演算の定義域と値域 税数→税数 タイポ
四則演算の定義域と値域 整数 → 整数
使える数値比較 ==
if for whileとかは自由 >>369
そこら辺はOK
ただ、曖昧で恐縮なんだけど、
for(i = 0; ++i0 i < m * n) ++multi
とかでm*nを計算したりするのはNGということで 除算以外が実装できていればできるとおもうがな。
逆数と平方根を求める高次収束アルゴリズム
http://www.finetune.co.jp/~lyuka/technote/fract/sqrt.html
逆数法
http://www.nextftp.com/swlabo/m0_pctech/hp_ultraprecision/up_820.htm
除算 (デジタル) - Wikipedia
数値的(ディジタル)な除算アルゴリズムはいくつか存在する。それらのアルゴリズムは、低速な除算と高速な除算の2つに分類できる。
高速な除算技法
ニュートン-ラプソン除算
ゴールドシュミット除算
二項定理 数値比較が==以外使えないのがつらい
バグがある除算はできたん・・・ -2147483648が絡んだ除算が(´・ω・`) あ、そーか。xorした結果がビット単位の結果になってandした結果がシフトレフトして足す値か。 お題:
ある会社の社員A君は下記のC言語のコードで変数aを素因数分解したものを画面に表示したい
しかしA君は心身ともに限界な状態であり、あと53回キーを叩くと過労で死んでしまう
どうにかして52文字以内(記号、スペースを含む)で/*こちら*/の部分を入るaの素因数を全て表示するプログラムを考えろ
ただし表示にはprintf関数を使い、一つの素因数ごとに改行すること
#include<stdio.h>
int main(void){
int i=0;
int a=720;/*任意の値*/
/*こちら*/
return 0;
} >>378
出題者ですが状況が変わりました
A君はあと51回キーを叩くと死ぬようになりました
なのでコードの制限は50文字以内に変更してください
一応安価付けときます >>378
for(i=2;a>1;printf("%d\n",i),a/=i)for(;a%i;i++); >>380
すごい48文字でできたんだ
恐れ入りました
ちなみにforの条件のa>1はaでも大丈夫だから46文字になるね >>381
>ちなみにforの条件のa>1はaでも大丈夫だから46文字になるね
終了しないことを許容することによる短縮か… いや、終了しなくていいなら ;a>1; は ;; で ok か >>384
ごめんそれは今俺も気づいてこれダメじゃんと思ってた
もうだめだ俺ポンコツだ #include<stdio.h>
int main(void){
int i=0;
int a=720;/*任意の値*/
for(i=2;a>1;printf("%d\n",i),a/=i)for(;犯人はヤス・・・
return 0;
} お題:考えられる数列aを全て求め、出力せよ
ただし、数列aは次の式を満たす(Nは自然数全体)
a⊆N
∀i,j∈N,i<j;a_i<a_j
log(Σa_i)=Σlog(a_i)
∀i;1≦a_i≦10^18 >>389
1, 2, 3
くらいですかね、これを計算で出すのはしんどいなあ log(ab)=log(a)+log(b)だからログ関係なくナイカ?
a1<a2<・・・・<anで、Σai =Πaiを満たすってことだろ。 まず{a_n}が上に有界な時点で∀i , j ∈ N i < j; a_i < a_j が成り立たないから問題として破綻している a+b+c = abcならば、c = (a+b)/(ab-1)だから、これが整数になるようなやつ見つければいいかと。
たとえば(2+3)/(2*3-1) = 1。 それは増加数列を言いたかったんじゃないか。 a1<a2<・・・・<an
∀i , j i<j ならばai < ajでは? 4変数のときを考えると。
上と同様に、d = (a+b+c)/(abc-1)となるから。
これは分母のほうがデカイはずで、分子を割り切るならd=1に限るか?
そうすると、abc = 1 + a+b+c か。
aについて解くと、a = ( 1 + b + c) /( bc - 1 ) か。
これが再び1ではダメで、しかし分母のほうがデカイはずだから割り切るならa=2に限るか?
2bc - 2 = 1 + b + c か。
bについて解くと、b = (3 + c)/(2c-1)か。c=4ならば、b=1になるが? 一応、数列は全部で7個になるはず
8個目はa_61が1152921504069976064>1.15×10^18で上限だから
数列の並び方は>>394でお願い、任意の並び方にしちゃうと組み合わせ爆発が発生するかなって思って付けた制約なので ん?
n
ΠAi = ΣAi < n An
i=1
An で割って
n-1
Π Ai < n
i=1
で左辺は (n-1)! 以上だから n はたかだか 3 じゃない? ……あ、やっべ
これお題として成立していないことに気付いた ごめんなさい、このお題は無しで
完全数の導出問題のつもりだったけど、aの要素を1個にするだけで10^18通りの解がある
twitterで流れてきた話を投げるべきではないな……反省して暫くお題出さないです >>394
それなら解はaの位数が1か、a = {1, 2, 3} のみだね
ってプログラミングで解く問題でもないと思うんだけど 1,2,4,7,14
1,2,4,8,16,31,62,124,248
など 何の話をしているのかサッパリわからんのだが、どうやら終わったようなのでまあいいか。 出題者が出題内容を理解してなさそうだからサッパリわからない人がいても当然 お題
任意の実数の総有効桁数を2にせよ
丸め方法は問わない
R
https://ideone.com/cpLlLw >>405 Ruby
[12345,
12.34,
1.234,
0.0123].each{|i|puts"%.1e"%i}
#=>
1.2e+04
1.2e+01
1.2e+00
1.2e-02 >>405
>>406とほぼ同じ。perlでコマンドラインからそのまま実行。
$ perl -e 'for(12345,12.34,1.234,.0123){printf("%.1e\n",$_)}'
1.2e+04
1.2e+01
1.2e+00
1.2e-02
$
printf()の%e使わないで自分で何とかするやつ作った方が良いかな? >>405 Ruby sprintfフォーマット使わない場合
[12345,
12.34,
1.234,
0.0123].each{|i|p i.floor(1-Math.log10(i).floor)}
#=>
12000
12
1.2
0.012 解答としては>>408を推す
他は文字列化しただけで実数を変換できてない 任意のx > 0 に対して x を有効桁数n(n ∈ N)で表わした数 c は
r = 10^([log10(x)] - n + 1)
とおくと
c = [x / r] * r
なんだけど、これを丸め誤差を考慮して簡単に解析的に修正するのはちょっと骨が折れるね まずは大学入試以前に、中学高校の入試問題や公務員試験などを人工知能で解かせたい。
そして現在の人工知能に何が出来て何が出来ないのかを知りたい。
新井紀子教授のAIやコンピュータに関する知識は素人に毛が生えた程度
新井紀子教授の『AI vs. 教科書が読めない子どもたち』という本が大変売れているようです。
私も本を購入し精読させていただきました。
一言で感想を言うと、新井紀子教授のAI技術に関する知識はせいぜいAI関連ニュースに詳しい人レベルであり、
そのベースであるコンピュータに関する知識もほぼ素人だということがわかりました。
https://mywarstory.tokyo/inconvenient-truth/
↑
人工知能の先生方がこんなんでは、どこで誰に学んだらいいのかわからない! 批判に対して女性差別だと返してるところが何だかなあって感じ。
男だったらそもそも人目に触れるポジションにさえ来れていないだろうから、確かに批判はされないんだろうけど。 日本の国、まさにPC-98を中心としているアセンブラの国であるぞということを国民の皆さんにしっかりと承知をして戴く 日本語の単語がひらがなで与えられる。
これらを用いてしりとりをしたときに最も長く続くケースで使われる単語の数を出力せよ。
ただし;
・一行目は与えられる単語の数(1以上100000以下)
・「ん」から始まる単語はない
・「ゐゑぁぃぅぇぉゃゅょゎー」を含む単語はない
*sample input*
10
あなご
いくら
うなぎ
えい
おくら
かしゆうなつつ
ごはん
ばたあ
ゆば
らあゆ
*sample output*
7
(えい いくら らあゆ ゆば ばたあ あなご ごはん) ウィキってみたら同じNP困難問題ではあるけどナップサック問題に近いのかな? 動的計画法???
なんかめんどいからオナニーでもしよっと 俺もしりとりのお題出そうと思って色々考えた挙句止めたんだよな。何で止めたんだっけかなあ?
まあいいか。 あなご ごりら らあゆ ゆば ばばあ あなご
とか永久に続いちゃう場合は? >>424
同じ単語は高々1回しか使えないということで input
6
けんばんはーもにか
かみのけ
もうないでしよ
あるよ
けっこんしよう
うん
output
? >>428
けんばんはーもにか → かみのけ → けっこんしよう → うん
以外に考えられるの? >>429
「足し算のプログラムを書け、入力は3と4」
という問いに「7しかないでしょ」と答えてるようなもんだぞそれ >>431
いや>>428は問題の不備を指摘してるように見えたんだけど違うの
違うならなんなの? すまんすまんよく読んでなかった
どんな不備?
outputは4で良さそうに思えるが >>428
・「ゐゑぁぃぅぇぉゃゅょゎー」を含む単語はない
>けんばんはーもにか
'ー'
'を' とか 'う゛'(Unicodeでは1文字) は含むんだろうか?
濁音・半濁音の扱いもローカルルールがあるようだけど? ■ このスレッドは過去ログ倉庫に格納されています