プログラミングのお題スレ Part10
レス数が1000を超えています。これ以上書き込みはできません。
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文字) は含むんだろうか?
濁音・半濁音の扱いもローカルルールがあるようだけど? >>428
>>436のプログラムでこうなった。
入力
単語数: 6
けんばんはーもにか
かみのけ
もうないでしよ
あるよ
けっこんしよう
うん
出力
単語数: 4
けんばんはーもにか
かみのけ
けっこんしよう
うん なるほど
お題としては数字とかアルファベットのが見通しがいいな >>419
https://ideone.com/TCBMbc
C++。サンプルは解けたが相変わらず日本語表示には厳しいな。
こんな感じでいい? そういえば、必ず”ん”で終わらなければならないっていう制約はないよね。
言葉が尽きても負けなんだし。 すげぇ
しりとりは普通に組むとオーダーが大きくなるからなぁ
お題の単語数10^5に対応するプログラム書ける気がしない
辺は少ないし、これ最大流で解けるんだっけ? あんまり、オーダー爆発起こすとちょっと大変だな。
次に続く単語数の数が多いほど爆発する。
最大N!だけど、そういうケースは少ないよ。 最適化閃いたけど、無理筋やった。
3変数ごにょごにょするだけで枝切できるかと思ったんだけど。 >>419
https://ideone.com/LYz9cE
ひらがなは 7bit程度で表せるので、頭と尻だけ数値化、頭でテーブルを分けた。 >>446
スタックを展開するだけだからなぁ。
めんどくさいけど、理論は楽。 https://ideone.com/29wlkp
全探査しなくてもいいので、同じ階層に'あかい','あおい','あさい'など頭と尻が同じ語は枝刈り出来る。 >>444
>最大N!だけど、そういうケースは少ないよ。
可能な末尾の文字の種類をRとすると次の語を選ぶ選び方は(先頭は与えられているので)末尾違いの高々R
(中間が異なるものからはどれを選んでもいいので先頭のを選べばいい)
先頭の文字別にリストにでも格納しておけば N 単語での計算量は高々 O(N ^ R) お題
桁の並びが大きい順になっている数をすべてもとめる 9876543210の各桁を表示する・しない、で2^10-1(=1023)通りってことかの? >>451 Ruby
(1..10).each{|i| puts [*0..9].reverse.combination(i).map(&:join)} rubyがわからないのでわからん
どういうこと?
今スマホでアクセスしてるから試すのもできない すまほでもコピペしてideoneで試せるんじゃね?
https://ideone.com/ihH1LH >>457
おお。動いた。
あー。そういう意味か。 お題: n!の末尾の0の個数を数える
たとえば、n = 9のとき9! = 362880なので末尾の0の個数は1
n = 10 のとき 10! = 3628800なので末尾の0の個数は2
制限事項: gmpなどのライブラリは使用不可。以下の5問を合計1.8秒以内で。
n = 132 , # = ?
n = 743 , # = ?
n = 54321 , # = ?
n = 2147483647 , # = ?
n = 4294967296 , # = ? >>459 Ruby 0.015秒くらい
[132, 743, 54321, 2147483647, 4294967296].each{|n| puts "n = %d => #%d" % [n, (1..log(n, 5)).map{|i| n / 5**i}.sum]}
# output
n = 132 => #32
n = 743 => #183
n = 54321 => #13576
n = 2147483647 => #536870902
n = 4294967296 => #1073741816 >>459
https://ideone.com/sSfH5w
>以下の5問を合計1.8秒以内で。
は未達成、これは難しい‥‥ 面白いね
何かお題が出て(>>451)それに対して意味不明の即答’>>452)、
まぁそれはそれでごもっともと思ったらrubyのコード(>>454)が出て、
その後はあーだこーだとレスが続いてく
前スレから見始めた初心者だけど、
未知の課題に対するコーディング能力ってやっぱり大事だ >>451
https://ideone.com/SLwoYB
https://ideone451.com/AGDBWO
C++。普通に解いたら20秒くらいかかるからさらに脳筋な方法で解こうと思ったらメモリ足りなかった。
とはいえ階乗では解きたくないし。まぁいいか。 省メモリで解こうと思ったらGCCに匙投げられた。
コンパイルタイムはこれからやな。
https://ideone.com/CScvWR ruby のを J に移植してみた
入力
(2,#d)$d,>(3 : '+/<.y%5^1+i.<.5^.y') each d=.132 743 54321 2147483647 4294967296
結果
+--+---+-----+---------+----------+
|32|183|13576|536870902|1073741816|
+--+---+-----+---------+----------+
5を数える他の有力なやり方ってどんなだろう コピペミス
結果は
132 743 54321 2147483647 4294967296
32 183 13576 536870902 1073741816
が正しかった (どうでもいいか) ちなみに頭の(2,#d)$d,>がないと>>466の出力となる int count(unsigned int n){
int sum=0;
while(n){
n/=5;
sum+=n;
}
return sum;
}
この関数を5個の整数値に対して実行するのに
1.8秒以上かかるのかよw
(アセンブラでやる限り)8bitマイコンでもそこまで
かからない希ガスw 俺の頭ではいまだにやり方がわからない。
既に1.8日を超えたような気がする。 n!を素因数分解した時の5の指数が求める数だから
Σ{k∈N}[n/5^k] を計算すればいいだけ Σ 総和
∈ 左は右の元である
N 自然数
[ ] 越えない最大の整数
/ 除算
^ べき乗 意味わからん暗号て。。。
論理と集合やらんかったのか?
まだ習ってない歳なの? こういう数式をTEX記法でup出来るサイトなかったっけ? >>477
文系だからではなく、元々バカなだけだろううな。
今時は普通なら、知らん事は自分で調べる。 そもそも「素因数分解した時の5の指数」が分からんし!
なんでそれが0の数と関係あるのかも分からんし!
文系を迫害すんなや >>480
mediawiki を採用しているところですね
でも自分で mediawiki をビルドしようとすると、TeX 表記導入のところで嵌ります、うまくいかない これ分からなくなって八つ当たりしてんな、一旦ROMって落ち着けよ
10!=3628800=36288x10^2のように、後ろの0の数は10が何個掛けられているかで決まる
10=2x5だから2と5の掛けられている数のうち小さい方とも言えるな
で、一例として10!=1x2x3x4x5x6x7x8x9x10=2^8x3^4x5^2x7=2^6x3^4x7x(2^2x5^2)だから、0が2つ付くと言える
どう考えても2の素因数は5の素因数より多くなるので5の素因数の数だけ分かれば良い
この時、5の素因数の数はnが5の倍数になった時(n/5)+nが5^2の倍数になった時(n/(5^2))+…と計算すれば求まる 端数切り捨てな >>484
> どう考えても2の素因数は5の素因数より多くなる
そうとは限らないじゃん
2の素因数の数も数えなきゃ不正確じゃん >>485
それを主張するなら、2の方が多くなる事例をあげるか、証明するかしないと。 >>485
任意の2以上の整数nとする. n!に対して素数kの素因数の数が F(n, k) になる事は機知とする.
F(n, k) = [n/k] + [n/(k^2)] + ...
またガウス記号の定義([x] は x を超えない最大の整数)から任意の実数 x に対して,
x - 1 < [x] <= x ……☆.
m_k を n/(k^m_k) >= 1 となる最大の整数とすると,
n/(k^m_k) >= 1 ⇔ n < k^m_k ⇔ log_k(n) >= m_k なので, m_k = [log_k(n)].
また m_k より大きな任意の整数 i に対して n/(k^i) < 1 なので, [n/(k^i)] = 0.
従って, F(n, k) = [n/k] + [n/(k^2)] + ... + [n/(k^m_k)].
さて, ☆より
F(n, 5) <= n/5 + n/(5^2) + ... + n/(5^m_5)
= n*(1/5)*(1 - 1/(5^m_5))/(1 - 1/5)
= n*(1 - 1/(5^m_5))/(5 - 1)
= n*(1 - 1/(5^[log_5(n)]))/(5 - 1)
<= n*(1 - 1/(5^log_5(n)))/(5 - 1)
= (n - 1)/4,
F(n, 2) > n/2 - 1 + n/(2^2) - 1 + ... + n/(2^m_2)
= n*(1/2)*(1 - 1/(2^m_2))/(1 - 1/2) + (-1)*m_2
= n*(1 - 1/(2^m_2)) - m_2
> n*(1 - 1/(2^(log_2(n) - 1))) - log_2(n)
= n - log_2(n) - 2.
依って2以上の任意の整数nに対して,
F(n, 5) <= (n - 1)/4 < n - log_2(n) - 2 < F(n, 2)
となり題意は示された.
((n - 1)/4 < n - log_2(n) - 2 は増減表を書くなりして確かめて) a,bをとりあえず非負実数
[a]をaを超えない最大の整数として
a>=b→[a]>=[b]
[a+b]>=[a]+[b]
はすぐにわかる。
n!を割る2べき数の最大指数は1からnまでに偶数が[n/2]個
あることより[n/2]以上であることもすぐわかる
5^m<=n<5^(m+1)として
[n/5]+[n/5^2]+...+[n/5^m]
<=[n/5+n/5^2+...+n/5^m]
<=[n/5+n/5^2+...]=[n/4]<=[n/2]<=n!を割る2べき数の最大指数 >>486
「素因数 2 の数は 素因数 5 の数よりも多い」
を使うのなら証明は使う側がしないといけないだろう?一定の範囲では 2の倍数の方が 5 の倍数よりも多いとはわかるが、素因数の数について正確なことをいえるかな? [n/5]+2[n/5^2]+3[n/5^3]+...+m[n/5^m]
を評価しなければいけなかった(。。)
mを非負整数とするときm[a]<=[am]
だから
[n/5]+2[n/5^2]+3[n/5^3]+...+m[n/5^m]<=
[n/5]+[2n/5^2]+[3n/5^3]+...+[mn/5^m]<=
[n/5+2n/5^2+...+mn/5^m+...]<=
[n (1/5)(1+2(1/5)+3(1/5)^2+....)]
=[n(1/5)/(1-1/5)^2]
=[5n/16]<=[n/2]
あとは同じ 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f) なんか長々と書かせちゃってごめん
正の整数の全範囲が対象じゃなくてあくまで「n!」だってこと忘れてたわ >>462
>未知の課題に対するコーディング能力
とか言ってるが、高校数学ではよくある問題だぞ?
ttp://examist.jp/mathematics/integer/kaijyou-soinsu/
ttp://www.geocities.jp/math12345go/math-qa/kaijou.htm
ttps://www.school-turnup.com/p-12594/
ttps://www.shinko-keirin.co.jp/keirinkan/tea/kou/jissen/sugaku/201603/index.html
高卒なんて言い訳になんねーよ >>495
数I・Aで100点だったが、数II・Bで0点取って、数III・Cは選択しなかった俺に謝れ プログラミング的には、n!を割る最大の5のべき乗の指数が最大の2のべき乗の指数
を超えないということを使わずに(=知らずに)
それでも十分な速度(実質>>469程度の処理しかしない)なものが書けるかということが課題
高校レベルの課題に見えて実は決してそうじゃないな select max(m) from select m where 10^m|n!
と同レベルの可読性だが
やることは割り算しながら足し算となるコードなんて
そもそもあるのかよw >>498
>知らずに十分な速度
その程度なら2の個数も数えるだけだから簡単だし高速だと思う
が、普通はちょっと考えて5だけで良いなと5だけ数えるコードを書くんじゃないかな
何も知らず何も考えず計算機任せの力技ってのだけがプログラミングじゃないでしょ。 高校レベルの数学をすっかり忘れたおぢさんにやさしく教えておくれ。 素因数の数が
m := [log(n)/log(k)]として
m
Σ[n/k^i]
i=1
明らかにmも[]の中もkに対して(広義)単調減少なんだから
素数が大きくなるほどn!のその素因数の数が減ることも明確というお話 >>498
中学生が手計算で出来るレベルだ
数学苦手でしょ? >>502
1〜132の整数の中に5の倍数は何個ある?
1〜132の整数の中に25の倍数は何個ある?
1〜132の整数の中に125の倍数は何個ある?
1〜132の整数の中に625の倍数は何個ある?
...
132の階乗を素数の積で表したとき
5は何回出てくるる?
132の階乗の右に並ぶ0の数は? >>506
132という値を出した理由は?
5,25,125,625を出した理由は? こんだけ話題が伸びてる問題なのに出題後高々10分でほぼ理想的なコードが掛かれてるってのが面白いな 個々の住人数学が滅茶苦茶できてコードが3割みたいな人いるからな。 >>508
> 132という値を出した理由は?
1問目の数値からから
> 5,25,125,625を出した理由は?
考えてみよう 俺は理想的なコードは割って足すループの方だ
可読性だなんだの風潮はあるが、ああいう一工夫がこういうプログラミングの煌めき
と思う >>510
というか至極単純なコードならついついゴルフしたくなってしまうというか お題
与えられたデータを間引きして小さいな順に並べる
間引くデータの個数の最小値を求める 任意の有限長の実数列に対し
単調増加列の中で最大長となる部分列を求めよ
って感じ? >>509
すぐに「n!の末尾の0の個数」などをググって
WEBに書かれている方式をコーディングするか、
自分の頭で方式から考えはじめるかの違いだろうな >>513
そのわりには>>469に至るまで出てきてないわけだが
コロンブスの卵にケチ付けた奴みたいだな >>519
ググるような問題か?
普通に義務教育を出てれば一瞬でわかると思うのだが >>522
「小さいな順」ってどっちだろうね?
単調増加か単調非減少か
私は単調増加だと思ったから答えは2個
普通のソートだと単調非減少だから単調増加?
どっちにしろアルゴリズムは大して変わらん >>523
義務教育でlogはやら無いぞ
何分でコーディング完了して動作確認までいったのよ >>526
何番のお台の話をしてるんだよ
ずれてるぞボケが ずれたとしたら俺のせいではない
>>519か>>525が悪い んで、お前はその簡単な問題を
何分で問題解決しコーディング完了して動作確認までいったのよ log使ってんじゃん
普通に義務教育を出てれば一瞬でわかると思って
お前はその簡単な問題を
何分で問題解決しコーディング完了して動作確認までいったのよ
上の方のレスでどれがお前の回答よ >>531
簡単すぎて書く気にもならんレベル
logなんか使わん >>534
じゃあlogを使わない計算量の多い方法でもいいよ。
義務教育を出てれば一瞬でわかる問題を
お前が一から考えて自力で解いてコーディングして動作を確かめ
書き込んだレスは上の何番だよ 人のレスをを見たら簡単だと印象を持ったんだろ
自力ですぐには解けなかったんだろ >>524
順に並べるということから同値の連続は許して広義の単調増加でよいのでは
工夫のない力技のを描いてみた
https://www.onlinegdb.com/ByuL67-iG ↑
一応2行ほど費やしてほんのちょびっとだけ枝刈りしてある なら自分も広義単調増加で
LISだし二分探索のO(NlogN)で実装
https://ideone.com/kN5UFU >>544
やっべLISで作ったから答えがLISのままだわ
n-出力に脳内変換しておいて >>546
広義単調増加だよな?
そのプログラムだと
1, 3, 6, 8, 9, 10, 6, 5, 6, 7
が5で出力される(解は1,3,6,6,6,7より4) >>515
間引きする関数というか方法は?サンプルもないのにどうしろと。 ほらサンプル
元のデータ 1, 3, 6, 8, 9, 10, 6, 5, 6, 7
これの 1, 3, 6, (8, 9, 10,) 6, (5,) 6, 7
括弧内の4つを間引けば昇順1,3,6,6,6,7になる
最小の間引く個数は4 >>549
1, 3, 6, 8, 9, 10, (6, 5, 6, 7)
これでいけない理由は? >>551
残るものが変わってくるんだから、たまたま同じだったではすまんだろう。 たまたまじゃなくてどちらでも同じだから良いって言ってるんだよ
最小の個数が算出されれば良いんだよ
>>542を例にして説明するとv1とv2の長さが等しいとき、
選び方によって間引方は変わるがどちらを選んでも
同じ答え(個数)になるからどちらでもいい 「選び方」というのは等しいときv1を使うかv2を使うかってことね これ、プログラムのお題じゃなくてイジワル問題ってやつだ。
一応間引くとは言ったけど、どのように間引きたいかは書いてない。
それを考えろっていうもんだいで、じょうけんとしては何もだされていない。
べつに大きくしてもよい。
が、大きくする必要性もないので、条件内でやる最善手がソートして昇順にするだけででも満たされうる。
以上。 https://ideone.com/G4cjeS
C++。これが間違ってるんだったらその理論を聞きたい。 なんだその、「牛乳を1個買ってきて。卵があったら6個買ってきて」と言われて卵があったから牛乳を6個買ってくるような行動
リアルでこんな奴いるんだな……
間違ってるわけではないのが余計質悪い >>563
ん?だから説明が悪いっていのを体現しただけ。
>>558 で書いてるでしょ。
多分思想問題なんだよこれ。 例えばね、例えば。
この数字が暗号で間引くと人が死ぬとかいうシチュエーションでそもそも間引く必要あるの?っていう趣旨返しなわけ。 与えられたデータが数列とも限らないし勝手に解釈して好きなように作る以外にやりようがない問題
自由度が大きい問題はあらゆる答えが正解ともいえるから一つの正解にたどり着く過程を楽しむ数学好きとかには不評だろう おいおいおいおい
勝手に解釈して好きなように作るしかない問題(←否定的な表現)だからあらゆる答えが正解だ、というの?
これは「どう解釈しても構わないから好きなように答えれば良い問題」っていうんだよ。
例えばソートのアルゴリズムだって別に数値かどうかなど決めずとも考察も品評もできる
「比較回数だけでいうならo(1)のバケツソートが最高。はい論破」とか言うのも自由
答えが一個ならただの問い、クイズだよ [[[[[[][}[[[ [ {} [] ]]][ [[ [ >>556
荒らしっていうかさ
その子はこのスレにながく張り付いてる
無職でかつガイジ
かわいそうな子だから放置しといてあげて A(間引く)の処理の後にB(小さい順に並べる)の処理をすると読んでしまったのは内緒 お題
以下の配列pで与えられるツリー構造を図示せよ
・pの要素数はN
・p[i]はノードiの親ノードを表す
・p[i]=-1の場合、ノードiは根ノードである
・pに含まれる-1の数はちょうど1つ
[input]
1 2 -1 0 0 1 1 2
[outupt]
2
|-- 1
| |-- 0
| | |-- 3
| | `-- 4
| |-- 5
| `-- 6
`-- 7 お題にツリー構造って明記されてるから閉路は無いのでは 条件には書いてない
根が1個という条件だけ中途半端に書いてある
はて 条件には書いてない!(書いてある)
目か頭かどちらかあるいは両方おかしい。
頭の方ならこれからエクストリーム言い訳が来るだろうから楽しみにしてるw >>577以外のやり方以外のやり方考えるの面倒だな。
てか、いきなり最適解が出てしまった感あるな。
他の言語に書き換えるのは簡単だが移植しただけになってなんとなく無意味。 階層構造なのに再帰使わないのは辛いなあ。自分でデータを積む事になるだろうし。しかしそれぐらいしかないか? そだね
なにかアクロバティックな解法でもあれば面白いんだけど凡才で思いつけん お題
5以上の素数が与えられたとき1番近い6の倍数を求める 5以上の素数しか与えられない?
素数以外も与えられることもある? 素数列挙がメンドだから日本語で。
素数を6で割って、ラウンドして1プラスして、6倍する。
であってる? >>588
5以上の素数が与えられなかった場合の動作については何も書かれてないので
好きに仕様を決めれば良いんだよ エラー表示
動作不定
与えられるまでまつ
など
>>589
仕事だとそういうところでもめたりするのだ
今回は仕事じゃないので好きに決めればいい それ言い出したら、言語によっては実数も文字列も行列も与えられるし、きりがないよ int q587(int p){//pは5以上の素数
return (p % 6==1)? 6*(p/6):6*(p/6+1);
} >>595
「今回は仕事じゃないので好きに決めればいい」 >>591>>592
7が与えられたら結果はいくつになるそれ? >>587
こっちの方がいいか。除算は切り捨て
n - 1 + n%6/5*2 n+1 ってのを -~n と短縮してるわけか
面白い お題
整数n(0 <= n < 2^32)を英語で表記する
0 => zero
134 => one hundred thirty four
1000000 => one million
4294967295 => ??? その???のところどんな形式でもいいの?
それともtwo to the power of thirty two subtracted by oneじゃないとダメ? >>588
https://ideone.com/d3UrjB
C++。プライム検出をダメコードででっち上げて書いた。正直遅い。 >>598
下がる方考慮してなかったから考慮したコード書いたよ。 鈴木貫太郎
北海道大学 2種類の数字でできてるn桁の数字の個数
https://youtu.be/SHdUszy0qQs
2種類の数字だけでできている、4桁の数字は、いくつあるか?
答え、567
2種類の数字だけでできている、N桁の数字は、いくつあるか?
答え、81(2^(N-1) - 1)
N=5 の時も、求めて >>611
普通に 81 * (2^(5 - 1) - 1) = 1215 なのに何を求めるの
10C2 * 5C2 - 9*5 + 10C2 * 10P2 - 9 * 10 = 1215 みたいに場合分けしてもう一度計算しろってことかね >>587
その問題って元の値が素数かどうかは関係ないのでは?
Perl だとnが正の整数なら int((n+3)/6)*6 の計算で出来てしまうと思うが。
/ の割り算が整数で出るような言語なら整数化も不要。(C言語で int n だった場合等)。 素数は奇数だから、6 で割った余りのうち、1, 5 のみが素数になり得る。
つまり、6N + 1, 6N + 5 (6N ± 1)だけ。
6N + 3 は、3 の倍数になるので、素数にならない
この動画を参照
鈴木貫太郎
整数、素数、京都大学入試問題 数学
https://youtu.be/PCX6sqN9FhA
p, q が共に素数のとき、
p^q + q^p が素数になる、p, q をすべて求めよ
ヒント、どちらか一方は必ず、2 となる。
答え、(2, 3), (3, 2)
ちなみに、答えが合っていても、0点です。
それ以外に解が存在しないという、証明に加点される n = p^q + q^p, p <= q とすると
n >= 8 なのでnは奇素数
よって p = 2, q >= 3
q > 3 の時 n = 2^q + q^2 = 2 + 1 = 3 mod 6 で矛盾
q = 3 の時 n = 17 で必要条件を満たしている
よって (p, q) = (2, 3), (3, 2)
でこれをSATソルバーでも使って解けっていうのかね ttp://next.rikunabi.com/rnc/img/1820/o/0015904477.jpg
犯人は誰だ? >>577
訂正
https://ideone.com/yYE1Jb
[-1, 0, 1, 2] の出力が
0
└─ 1
│ └─ 2
│ │ └─ 3
となって間違った枝が伸びてました。
文字列を積みながら再帰は気持ち悪いから
フラグのリストとかの方がいいかも。 >>611
N桁(4, 5桁)の数字の場合、どうプログラミングする?
ややこしい
誰か、N桁で一般化して、Ruby で書いて 算数で止まってるから証明できないけどモンテカルロなら書けるよ。 Xがi個YがN - i個あるときの考えらえれる数字の数は
(10_C_2 - 9) N_C_i
だから
((10_C_2 - 9)/2) Σ{i in 1..N - 2}N_C_i
=(81/2)*(2^N - 2)
=81*(2^(N - 1) - 1)
81*(2^(N - 1) - 1)を計算すればいいだけなんだから算数でしょ https://ideone.com/YyAuGf
C++。というわけで書いた。
算数だとこんな感じになる。 桁分割するときに%を&って書いてハマってた。><; >>611
N桁(例えば4桁)で、aaaa 〜 bbbb までのすべての順列を作るのは、
どうプログラミングする?
4桁と限定せず、N桁で一般化して、誰かRuby で書いて
aaaa, aaab, aaba, aabb, abaa, >>625の態度が気に入らないので、日本語で書く。
桁数の文字をA分とB分をプッシュバックしてソートして順列回す。
文字が2種なのでオーダー爆発はあまり起きないと思う。 というか、競プロこんな解き方してREDになっても全く意味がない。
最上級に上り詰めてかってに市ね。 >>625 Ruby
[*0..9].combination(2).flat_map{|(a,b)|(1..n-1).map{|i|
([a]*i+[b]*(n-i)).permutation.uniq.reject{|e|e.first.zero?}.map{|e|e.join.to_i}}
}.flatten コンビネーションいいなー。頭悪いから実装できないし毎回実装したくない。
はぁ・・・。 Ruby に、product という順列を作るメソッドがある
[1,2].product([3,4],[5,6])
# => [[1,3,5],[1,3,6],[1,4,5],[1,4,6],[2,3,5],[2,3,6],[2,4,5],[2,4,6]]
これで考えてみる 可読性が低い、C++ を読んで解析するのが、面倒
スマソ >>625 Ruby 2.5.0
def f(n)
return [] if n == 1
(1..9).flat_map{|i|
[10*i] + ([*1..9] - [i]).flat_map{|j| (10**n - 10)/9*i + j}
} + f(n - 1).flat_map{|e| e.digits.uniq.map{|i| 10*e + i}}
end ruby限定で、
しかもアルゴリズムを競うわけでもない単なるコード例ならrubyスレでやってくれと強く感じる 訂正
def f(n)
return [] if n == 1
(1..9).flat_map{|i|
([*0..9] - [i]).flat_map{|j| (10**n - 10)/9*i + j}
} + f(n - 1).flat_map{|e| e.digits.uniq.map{|i| 10*e + i}}
end プログラミングは、このスレのためのものだから、
他の言語でも何でも、自由にプログラミングして下さい
言語にこだわらず、やって下さい。
その言語をやってる人が見るはず 言語を指定しないでください
宿題等の依頼は遠慮願います 宿題じゃない。プログラミングのお題
他の言語でも何でも、自由にプログラミングして下さい 宿題、学習「等」が目的であればここではなく然るべきところで >>641
その宿題とやらが問題として面白いものであれば、それならそれを解くことは個人的にはありうることでしょうね 競争性の放棄とコードも書かないのに他人を煽る。ギルティですね。 俺は書いたけど、無視されるわ、あげく必要ないっていわれましたからね。
70行も読めないなんてたかが知れてる。 >>645のことは考えてないですよ?611とやらに怒ってます。
やったこと無駄でした。ヒント与えなければよかった。 お題
ビンゴゲームでリーチ数が最大の盤面をすべて列挙せよ >>648 Ruby ただしπ/2回転させた解は省略
出力はi行目に穴の空いていないマスの列数(0〜4)を表示
[*1..4].combination(2).flat_map{|i,j|
[*1..4].combination(2).map{|k,l|
a = [4, 0, 1, 3, 2]
a[i], a[j] = a[j], a[i]
a[k], a[l] = a[l], a[k]
next if (1..4).any?{|i| a[i] == 4 - i} || a[2] + a[3] > 4 || a[1] + a[4] > 4
a
}
}.uniq.compact
#=> [[4, 0, 1, 3, 2], [4, 2, 0, 3, 1], [4, 1, 3, 0, 2], [4, 1, 0, 2, 3]] >>641
俺も>>642と同意見かな
出題者は勝手に出すだけ
回答者は勝手に回答するだけ
出題者の意図も回答者の意図もどっちも問わない
ただ、頼まれもしないのに延々糞コード書いて晒すやつは脳の障害とは思う 回答者は回答するだけってのはまさにその通り
なんかc++の変なコードあげる人いるじゃん
変なコードは別に見ないからいいんだけど、その上 構ってちゃんなのがちょっとあれなのよね あ、おれが糞コードつってんのもそいつのことねw
といかこのスレで糞コードつったらそれしかないけど
まともにC++やってきた人間からしたら血圧上がるような糞コードなw c++ で書いてるヤツなんて俺以外いないよ…と思ったがNGID解除してみるといた
ruby のコードは読みやすいからruby使った回答は歓迎なんだけど、
回答もしたいからあんまり限定して欲しくはないな
(rubyで回答するほど好きではないから) ダラダラ長ったらしく書かれたC++コードも、ぱっと見意味の掴みにくいワンライナーコードも、同じくらいクソだと思うんですが・・・ J言語好きとして読みにくいからクソというのには党派的に反対する
読みにくさを愛でる人もいる
でもさっきはうっかりしていた
ruby 限定とか C++ 禁止とかあってもいいと思います 限定する目的がわからん
特定の言語だと簡単すぎるとか? ID:wX43tNlZ みたいなのをシャットアウトする目的なら限定してもいいだろう >>612
>>621
いきなり最後の式が出ると思うんだが
わざわざ知識をつかわなくても 最上位桁の数字は 1〜9 の9通り
最上位桁と異なる数字は 0〜9中で最上位桁以外 9通り
最上位桁以外の2種類の選び方は
N-1個それぞれが2個の数字から1個を選ぶ場合の数-全て最上位桁と同じになる場合の数 = 2^(N-1)-1
よって81*(2^(N-1)-1)通り >>648
C++で書いた。コードは不明。
8分くらいで解いた。あってるかは知らない。
Count:1
Score:9
11110
11110
11110
11110
00000 >>658
ちゃんとコード書いてても村八分にされるんですね。
ここは怖いインターネッツですね。 >>663
やることやってれば他は何してもいいという訳ではないのは、インターネットもリアルも同じ。
勉強できようが仕事ができようが、人から嫌われる言動をしてれば迷惑がられるのは当然。
まして、本人が得意気にできてると思ってるだけで実際は
大したことなければ尚更だろう。 >>664
ほう。大したことないとおっしゃる?どの口で?
まぁいいけど。さすがにムカツクな。
俺意外に上げてる人間ってそんなに多くないぞ?
アンタはあげたことあるんだろうね。自治気取りだけど。
ふむそういうことなら。そのように対応する。 なんか最近ビジネス色強いから裏で何やってるんだろうと思ってたけど。
くだらねーな。 5CHで何言ってるか自覚ないみたいだな。
従順な奴隷でも探してろ。ばかやろー。 言語を限定されてもそんなのに構わず好きな言語で回答してしまえばいいよ 野糞落ちてるだけでも不快なのによ
得意げに野糞していく奴の存在とか >>670
そうそう
昔、一途に prolog で解きまくっている人がいて、すごくかっこいい、っておもっていました C++ は可読性が低くて、ビジネスロジックに無関係な、儀式部分が多いから、
読む方も、自分の時間を使うから、かなりの損。
書いている人は面白いのだろうけど
Ruby なら、ほぼビジネスロジックに集中できる。
だから多くのアルゴリズム・パズル本は、Rubyで書かれている
Rubyで書いてって頼まれても、言語指定を無視して書けばよいだけ。
他の言語で書いても、必ず見る人はいる ま、ここはデフォルトでは言語指定なしだから書きたい言語で書けば良い。 2の倍数:下一桁が偶数
3の倍数:各桁の和が3の倍数
4の倍数:下二桁が4の倍数
5の倍数:下一桁が5の倍数
6の倍数:2の倍数かつ3の倍数
8の倍数:下三桁が8の倍数
9の倍数:各桁の和が9の倍数
10の倍数:下一桁が0
11の倍数:各桁を交互に足し引きした値が11の倍数
12の倍数:3の倍数かつ4の倍数 >>676
7 の倍数、11 の倍数、13 の倍数は同一の事実にもとづいて判定できる
つまり 7 * 11 * 13 = 1001 簡単なお題
>>605の漢数字版。
上限は2^32でなくても良い。しかし最低でも億の位までは欲しいところだな。 エサが与えられてるんだからさっさと食らいつけよ畜生共 >>673
もっともらしく言ったところでruby厨が好き勝手に振る舞える理由にはならないよ >>679
ローマ記数法やフランス語記数法とか頭おかしくていいお題かも。 >>682
それも良いねえ。フランス語は知らんのだが、ちょっと調べたら嘘のようにややこしいな。フランス人はこんなのでよく大丈夫だな。 >>679
自分で作った。 Kotlin。
https://paiza.io/projects/eNXAAROxenLmNFSy5mSRqw?language=kotlin
1000だと「千」だけど10000000だと「一千万」という具合に「一」が入れるのが一般的だったりして、
ほんのちょっと例外があることに改めて気づいた。 >>685
おお。いいね。
俺も気が向いたら作ってみよう。 >>673
C++のようなシステム用言語をビジネスアプリに使うのがそもそもの間違い。
作者のビャーネ・ストロヴストルップが意図した使い方じゃないしね。 気軽に「こんなソフトありませんか?」Part.175 [無断転載禁止]©2ch.net
https://egg.5ch.net/test/read.cgi/software/1469784906/15
15 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2016/08/02(火) 11:00:10.21 ID:2cA8AwqS0
200個ほどある文書の1行目だけ、一括でアルファベットを小文字に出来るソフトありませんか?
当方スルースキルあるんで、このレスに気づいた方、気長にレス待ってます >>689
Ruby で作って、向こうのスレに書き込んだ お題
立方体の2色の塗り分けの全種類を展開図で示せ お題に合同条件くらい書かないとどの面も区別するつまんない回答が出て来るぞ 数学の時間いつもケチつけてたのかな?
「互いに素」「同様に確からしい」etc…
「日本語としておかしい!」「俺が数学できないのはそのせい!」 >>691の問題は俺の解釈では物凄く簡単なのだが、こういうことなのか?
立方体ということは展開すると例えばこうなるよな。
□
□□□□
□
で、これに二種類色付けして、例えば
■
□□□□
□
とか
■
■□□□
□
とかになる。これの全パターンを出すって問題でいいの?
そうすると6面なので6bitを1bitづつ各面に割り当てて出すだけの誰にでもできそうな簡単なお仕事になると思うんだが、そういう問題? あ、もしや組み立ててひっくり返したりしたら同じになるパターンは省くのか? このスレは質問スレじゃないので出題者の意図は気にせず好きな解釈で回答すればよい matlabの質問なのですがこの@r=の式はどのように記述したらいいのですか?
r = sin(5θ);
x = r*cos(θ);
y = r*sin(θ);
としてプロットしてもエラーになってしまいました
https://i.imgur.com/yK7edDT.jpg >>700
スレチ
matlabしらないけどこれでいけんじゃね
r = sin(5 * θ) >>702
google先生かその課題を出した先生にでも聞いてみたら? コンピューターじゃないと出来ない課題の方が良いと思うんだ
特に数学っぽいのは 数学的知識をどこまで使って良いか迷うし
ガシガシに最適化をしたら結果をテーブルで持つ
みたいになったらつまらんし >>708
こんなんとか?
プログラミングのお題スレ Part7
https://peace.5ch.net/test/read.cgi/tech/1429195275/41
> 41 :デフォルトの名無しさん:2015/05/01(金) 14:31:24.98 ID:9G1+bMO9
> お題:ちょうどn個(1 < n)の格子点(x座標もy座標も整数の点)を通る円の半径の
> 最小値を求める。円の中心点は格子点でなくてよい。
> 例
> n=2 -> 0.5
> n=5 -> 16.170331
> n=6 -> 2.5
※ n=5 は 5.89256 が正しい
サンプルデータ(最小ではない可能性あり)
https://ideone.com/wVBe61 >>710
考えてみる
最小ではない可能性ありが貼られてるってことは
まだ出来た人がいないってことかな? まずnの値によっては最小値が存在しないから問題が破綻してる
結局数値計算するだけの問題だし nの値によって最小値が存在しないってどういうことだ? n=1の時に最小値が存在しないことはすぐわかるが
1<nだから関係ない
n=2の時は簡単にわかる
特定の3個以上の格子点を通る円は高々1個しか存在せず
また、ある点から特定の距離以内の格子点の数は有限なので
存在するなら最小値は存在しそう >>691
Kotlin
とりあえず >>697 の通りのビットを面に対応させて全部出すだけのプログラム。
https://paiza.io/projects/MN90ETk9Kk3odk-Jlk2DEQ
回すと同一になるパターンを省くのはこれから考える。 >>691 C
https://ideone.com/i4fH8G
なんかダメダメなコードになった
しかも8通りで合ってるのか分からん >>691-695
立方体の展開図は、384 通り。
同型のものを1つとして数えると、11 通りになる
この本に書いてある
超高速グラフ列挙アルゴリズム−〈フカシギの数え方〉が拓く,
組合せ問題への新アプローチ
ERATO 湊離散構造処理系プロジェクト・湊真一、2015
計算時間が何百億年も掛かるのが、数秒で解けた
「おねえさんの問題」で有名な、
湊真一の超高速グラフ列挙アルゴリズム ZDD おねえさんの問題作った人?w
すげえバズったよなアレwwww お題
正20面体の3色の塗り分けの全種類を展開図で示せ >>611
>2種類の数字だけでできている、N桁の数字は、いくつあるか?
これを馬鹿正直にnested loop すると、N=4, 5 では、4・5階層と、
Nの数によって、階層が異なってくるから難しい
Nが幾つでも、ループの階層が同じになるように、作らなければならない >>611
Ruby で作った
DIGITS = [4, 5] # number of digits 桁数
# 答え、567, 1,215
DIGITS.each do |digit|
count = 0
wrapper = Array.new digit - 1
# [*0..9] で、配列にする
[*0..9].combination(2) do |ary|
(digit - 1).times { |i| wrapper[i] = ary }
# 先頭が0 のものと、1つの数字だけを使ったものを排除する
# *wrapper で、外側の[ ] をはずす
count += ary.product(*wrapper)
.reject { |item| item[0] == 0 }
.reject { |item| item.uniq.length == 1 }.length
end
puts count
end 数学で解くのと、プログラミングで解くのは、異なる。
理論と実践。机上と現実
両方で解いて、確かめたものだけが、現実でも正しい うん?つまりコンピュータが存在しない時代の数学者はすべて間違えていると? 簡単すぎる性質を使わないのはバカだと思う
N=10000の場合は? >>710は要するにN=197が無い
ttps://ideone.com/wVBe61
このリストで初めての欠品がN=197だ
N=197は計算しきれないような余りにもバカでかい円になるのか、そもそも数学的に存在しないのか、円が存在できないのか、分からない
N=197の円が存在できないとすれば、無いものを延々と探し続けることになる
ついでに、例えばN=320ともなると、この円が数学的に本当に存在してるのか、
それとも計算の誤差でOKが出てるのか、分からない 数学的にはどんなNの円でも存在する
http://mathworld.wolfram.com/SchinzelCircle.html
ただしこの計算で出てくる円は(一部のNを除き)最小ではない
円周上の格子点は整数で計算出来るから誤差はないし検算も難しいものではない ということで>>712が何を言ってるのかがわからんわけですよ 円が存在することと最小値が存在することは全く別だがな
十分に大きいnに対してはその辺微妙だと思うんだけどどう? 最小は存在はするだろ。
計算や探索で出た数値が本当に最小かどうかは(俺には)わからんが。 N個の格子点を通る円は、
x, y方向に1移動してもN個の格子点を通る為
原点を通る円に限定しても一般性を失わない
N≧3とする
原点を通りちょうどN個の格子点を通る半径r未満の円は、原点からr未満の距離にある格子点しか通らない
原点からr未満の距離にある格子点は有限個であり、この中からN個の格子点を選ぶ選び方も当然有限個
特定のN個の格子点を通る円は1個しか存在しない為、原点を通りちょうどN個の格子点を通る半径r未満の円も有限個である
よって、ちょうどN個の格子点を通る(半径rの)円が存在すれば、最小値は存在する この円の問題は何度も取り上げられるが
毎回うだうだと話が続くだけで何の進展もないみ
アプローチを変えてNを限定するとか
半径を整数にするとかしてみたら 円問題、昔書いたコード探してみたがよくわからないことやってるから困る… >>738
なにをグダグタ説明してるんだ?
> よって、ちょうどN個の格子点を通る(半径rの)円が存在すれば、最小値は存在する
なんてどうみても自明だろ >>742
君はこの問題の格子点が「xもyも有理数の点」に問題が変わったとしても
「最小値が存在するのは自明」とか言っちゃう白痴君かな? >>743
バカなの?
> よって、ちょうどN個の格子点を通る(半径rの)円が存在すれば
(ちょうどN個の格子点を通る)より小さな円がなければ半径rの円が最小
より小さな円が存在するなら同様に更に小さな円が存在するかを調べればいいだけ
有理数とか関係ないだろ w なん有理数の点が出てくるんだよw 全く関係ないだろ ああ、本当に頭が悪いんだな
今からでも遅くないから解析学の教本くらい読んでおけ なんで格子点の問題を有理点の問題にしようとするん? 【問】ある数字 n までの数列ローマ数字(I、II、III、…)にしたとき、
最大の長さを持つ文字列を探す関数を書け。
例:
n = 5 のとき、{I、II、III、IV、V}、したがって最大は3。
f(5) = 3 「最小値が存在するかわからん」
て言ってるやつへの説明として
「自明である」
馬鹿ですね >>750
なにを言いたいんだ?
証明なら>>744で充分だろ コミュ障ですか?
十分かどうかなんて説明する相手次第なんだよ
ポイントの>>715だけでわからないんだから詳細の>>738が必要だろう
>>744?
証明の方針として全くセンスを感じません
回答としては0点ですね
まあじゃあ試しにその方針で証明してみてください 類似問題としては
円を楕円、五角形などに変える例なんかが考えられますね
数学的センスがない>>744にわかるかな? センスとか言い出しちゃったよ w
まあ数学的な反論ができないことはわかった 全く数学になってない>>744に反論するのは難しくないか? 説明にも証明にもなってないし
証明の方針としても全く使えない っていうこと自体理解してない
試しにその方針で証明してみてください ポイントがわからない ===> 数学的知識の欠如
方針がトンチンカン ===> 数学的センスの欠如
わからない人に「自明」 ===> コミュ障
三重苦
数学的反論の対象が無いものを数学的に反論するのは無理ゲー 結局数学的反論はできないってことな w
>>744のどこがおかしいか具体的に書いてから言えよ 解答候補となる円が有限個に絞れることを説明できていない 数学によるマウンティングをするスレができたと聞いて高みの見物に来ました >>763
なんで絞る必要があるんだ?
円が無限にあったとしても半径の最小値が存在するかどうかとは関係ない Nが2以上で半径の最小値が存在しない状態ってのがまずわからん。
N=0や1の場合で半径0を円として認めない場合、最小値が存在しないってのはわかるけど。 最小値が存在しないなんて主張をしてるのは>>712だけ
最小値が存在するという主張の根拠を聞かれてるのだから、素直に存在する証明をすれば良い
>>744は何の証明にも説明にもなってない
「他に小さいのがなければそれが最小値、小さいのが存在するならさらに小さいのを探す」
こんなものは今回の命題とは関係なく、全順序であれば最小値が存在しようがしまいが言えること 最小値が存在するというポイントを1個も押さえていないので
「ああ、数学が出来ない人だ」という感想が出るだけ >>768
> 全順序であれば最小値が存在しようがしまいが言えること
だからそれで十分だろ >>769
> 最小値が存在するというポイントを1個も押さえていないので
どこからそんな頓珍漢なことを思い付いたんだ? w >>770
正の実数に最小値が存在する証明
「他に小さいのがなければそれが最小値、小さいのが存在するならさらに小さいのを探す」
結果に関わらず何にでも言えますねえ >>766
それもそうだね、悪かった
ところで>>744のアルゴリズムが有限回で停止することは保証されてるのかな
あ、あくまで保証されてるかどうか知りたいだけなんでね N=1, N=2であれば有限回では止まらない
N≧3であれば有限回で止まるのは>>738の通り 誰か>>749のお題を解いて、このどうでもいい流れを止めて。 >>749 Squeak/Pharo Smalltalk
| f |
f := [:n | (1 to: n) detectMax: [:m | m printStringRoman size]].
f value: 5 "=> 3 " お題 五目並べ
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14188952404
C言語以外でも可能というか歓迎。
特にrubyなどで、ワンライナー的に(Javaでいうところのストリームを駆使)書くとエロいものとする >>774
無限に繰り返せるとしたら極限値は0になる
(単調減少だから)
しかし 1 < n で半径0はあり得ない
なので必ず有限回で停止する >>782
半径の二乗は有理数
整数倍して扱えばすべて整数として計算できる…んじゃないのん? >>783
できるかも知れん...
で、それがなにか? おそらく最小値は存在するんだろうけど
「1/2 + 1/3 + 1/4 + …」が収束すると思ってるようなレベルのアホがそれを主張することによって
最低限の数学的素養のあるやつらから総ツッコミされてるかんじだな 数学で論争になるって珍しくないか?
数学って証明されたらそこで議論の余地がなくなるよな。 >>788
すでに証明されてるのに有理数ガーとか無限の円とか必死になってる奴がいるだけ
議論じゃなくマウントとりたいだけなんだろうな >>749 Squeak Smalltalk で複数ある場合ぜんぶ返す版
| f |
f := [:n |
| max ans |
max := 0.
ans :=#().
(1 to: n) do: [:m |
| roman |
roman := m printStringRoman.
roman size = max ifTrue: [ans := ans, {m}].
roman size > max ifTrue: [max := roman size. ans := {m}].
].
ans size = 1 ifTrue: [ans first] ifFalse: [ans asArray]
].
f value: 5. "=> 3 "
f value: 1887. "=> #(888 1388 1788 1838 1878 1883 1887) " >>789
>>744が証明になってない
っていう話だぞ
存在する証明は>>738参照
これが証明
>>781
単調減少の実数列の極限が1になることも100になることもあるわけだが
当然有限回で終わらないこともある
例えばN=2の時は無限回続くことがある
N≧3の場合は>>738により有限回であることがわかるというだけ
数学の基礎がわからない人が数学の専門家に数学に関する意見を言うとはなかなか >>791
> 単調減少の実数列の極限が1になることも100になることもあるわけだが
で、それが最小値がないこととなんの関係があるんだ? マジで阿呆だな
下に有界かつ協議単調減少だからと言って最小値が存在するとは限らないのだよおバカさん >>792
関係ないことを理由に最小値が存在すると主張している人がいるので は?
f:{x:x∈R∧x>0}→R, f(x) = 1/x を考えれば自明だろ 本気の阿呆かよ >>797
ん?
なんで列の話をしてるのにxが実数? >>800
族集合の濃度が高々?な集合に関して証明すれば十分なんだから実数関数について言及したところで何も問題ないよね?
むしろ十分正の説明としては申し分ないと思うのだが 十分正
族集合とか濃度とかどうでもいい
列の話をしてるんだから素直に列の例を出せばいい
一般化する必要もない
アホに対して一般化しても無意味 ごめんね、十分性ね
「アホに対して一般化しても無意味」ってのは同意だからこちらがスノビズムな嫌いがあったなら謝るよ 可算集合と非可算集合では濃度が違うから証明にならないという主張かも知れん
というかここ数学スレだっけ? >>451 J
(#:i.2^10)#"1'9876543210' 長方形を田の字型に4つの長方形に分割したら
左上の面積が253
左下の面積が115
右下の面積が155になった
右上の面積はいくつか? 253=23*11
115=23*5
155=31*5 >>815
なんで整数限定なんだ?
単なる比率の問題だぞ >>821
整数かどうかに関わらず253*155/115で一意的に答え出るんだからただの算数 >>821
253:x=115:155
x=341
整数で十分だけど? >>822-823
比率の問題って書いてあるのに指摘の意味もわかってないのかよ w >>825
だから答えが一意に決まるんだから素因数分解して自明な解を提示したレスに難癖付けるのはバカだっつってんの >>827
たまたま素因数分解できるからいいだけで常に使えるわけじゃない解法示す奴は頭悪いと思われてもしょうがない
しかも単なる算数レベルの問題だしな w で、お前らはいつになったらプログラミングをするんだ? >>828
日本語読める?
「解法を示す」じゃなくて「解を提示した」っつってんだけど
解の一意性は明確なんだから簡単に解を提示すれば
それで十分性を満たしていると同時に必要性も満たしてるんだけど
重箱の隅にもならないクソみたいな指摘してんだから突っ込まれて当然でしょ >>830
解と言い張るならなら答えだけ書けよ
言い訳にしてもダサすぎるわ w >>832
初めは「なんで整数限定なんだ?」というアホな主張しておいて論点すり替えないでくれよ
剰えこっちは>>822で答え書いてるんだけど文字読めないの?なんなのこいつ >>833
因数分解してどやってたアホがいたからな w
ひょっとしてアンカーも見れないのか? >>818
そりゃできるだろうねえ
だから何?
先に素数を求めた方が処理が速そうだと思ったわけだが
求めないで求めめ欲しければ>>816に書きなさい >>837
プログラミングらしいお題なら、すでに>>779にあるよ
回答はRuby(>>809)とSmalltalk(>>831)しかないけどね
組織の中で働き者は全体の1割しかいないと言われているけど、
このスレでも見事に再現されていてワロタ >>836
>>817-818で完結したのでこのお題は終了です
回答ありがとうございました 気分転換にどうぞ
お題:与えられた迷路図の通路幅を2倍にした迷路図を作成する
入力例
#.#..
.#..#
.#...
..##.
###..
出力例
##..##....
##..##....
..##....##
..##....##
..##......
..##......
....####..
....####..
######....
######.... >>841 ruby
$<.read.split.map{|s|[s.gsub!(/./,'\&\&'), s]}*$/ お題: あみだくじが与えられる
あみだくじは'|','-',' 'の3つで構成されている
スタート地点が左からn番目、ゴール地点が左からm番目と与えられた時、横棒を追加することでゴールに向かう為の最小の本数を答えよ
なお解が存在しなければ-1と答えよ
横棒の高さを半分ずらして設置や長さ2以上の横棒などは禁止とする
入力例
1 4
| | |-| |
|-| | |-|
| | | | |
|-| |-| |
出力例
1 同じ高さの横棒は隣接しないということでいいのかな? 最小の、とか書くから数学のマウント合戦になるのでは?アミダくじを解け、でいいじゃん。出た解答の中で最小で出してるのがあったらその時点でスゴイスゴイ ニコリのナンバーリンク、スリザーリンクとか、
あみだくじ・電力網・鉄道経路・選挙区割り・正多面体の展開図とか、この本に載ってる
北大の湊真一の、ZDD。
Python, Ruby でも使える
超高速グラフ列挙アルゴリズム−〈フカシギの数え方〉が拓く,
組合せ問題への新アプローチ
ERATO 湊離散構造処理系プロジェクト・湊真一、2015
計算時間が何百億年も掛かるのが、数秒で解けた
「おねえさんの問題」で有名な、
湊真一の超高速グラフ列挙アルゴリズム ZDD >>846
1人頭が悪いのがいただけ
最小って言葉を使えなかったら問題に制約がつきすぎる もちろん>>844は(存在すれば)最小値が存在する なるほど、最小って条件は止めるか
条件を変えるわ
解がN通りある時、それぞれの解の本数をa_i(1≦i≦N)とする
この時、任意のi,j(1≦i,j≦N)に対しa_j-a_i≧0を満たすa_iを出力してくれれば良いよ
>>845 隣接しない
隣接したらあみだくじとして成立しないしね >>841 J
2 echo 2&#;._2 stdin'' 多分最小を別の表現にしたつもりなんだろうけど
日本語がめちゃくちゃ
無理しなくて良いよ >>853-854
ここ数日、数学の知識全くないくせに噛みついてる無知はお前だろ
>>851は一般的な最小元の定義だろうが 「任意のi,j(1≦i,j≦N)に対しa_j-a_i≧0を満たすa_iを出力」
意味がわかりません >>856
「任意の i, j」というのがおかしい、i を先に決定した上での「任意の j 」でいい >>859 >>861
一般ピープルが習得するとよい(大げさにいえば世界観が変わるような)数学の分野を教えていただければ嬉しいです 群論・環論
ごめん聞いたことあるような言葉を羅列してみただけ お題
マイナンバーが一部欠けてしまった
?部分を補完して可能性のあるマイナンバーをすべて列挙せよ
[example 1]
99999999999?
=>
999999999996
[example 2]
??9999999999
=>
069999999999
179999999999
289999999999
399999999999
509999999999
619999999999
729999999999
839999999999
949999999999 >>869 Ruby 全探索
A = (1..11).map{|i| i + 1 - i / 7 * 6}
%w[
99999999999? ??9999999999
].each{|s|
puts '', s, '=>'
10.**(s.count(??)).times{|i|
d = "%012d".%(i).chars
m = s.gsub(??){d.pop}.reverse.chars.map(&:to_i)
x = A.zip(m[1, 11]).map{|a, b| a * b}.sum % 11
puts m.reverse.join if (x == 1 ? 0 : -x % 11) == m[0]
}
}
#=>
99999999999?
=>
999999999996
??9999999999
=>
509999999999
619999999999
729999999999
839999999999
949999999999
069999999999
179999999999
289999999999
399999999999 マイナンバーのチェックディジットを分かり易く解説しているページはないものかと探したらあったのでURL書いとく。
https://qiita.com/kmz_kappa/items/af18ac7b6b8bfe9041b0 >>858 マジだわ、算数できない奴に噛み付いて自分がダメージ受けた
やはり数学で無理に語るべきではないな、専攻の情報の範囲だけにしとこ…… >>869 Squeak/Pharo Smalltalk
| check |
check := [:digitsStr |
| digits checkDigit calcDigit |
digits := digitsStr asArray collect: #digitValue.
checkDigit := digits last.
calcDigit := ((digits * #(6 5 4 3 2 7 6 5 4 3 2 0)) sum \\ 11
in: [:x | x < 2 ifTrue: [0] ifFalse: [11 - x]]).
checkDigit = calcDigit
].
#('99999999999?' '??9999999999') collect: [:incmpNum |
| indices candNums |
indices := incmpNum asArray collectWithIndex: [:chr :idx | chr == $? ifTrue: [idx] ifFalse: [0]].
indices := indices reject: #isZero.
candNums := OrderedCollection new.
($0 to: $9) asDigitsToPower: indices size do: [:digs |
| candNum |
candNum := incmpNum copy.
indices with: digs do: [:idx :dig | candNum at: idx put: dig].
(check value: candNum) ifTrue: [candNums add: candNum]
].
incmpNum -> candNums asStringWithCr
] >>865
回転すし問題が気になります><
教えてください!! >>875
0296 デフォルトの名無しさん 2017/06/26 21:09:32
前にあったやつ。??
回転寿司にやってきた私は、コンベア上の寿司をすべて食べて帰ることにしている。??
コンベアは毎秒1皿分の速度で流れ、目の前の皿を取るか取らないかを選ぶことができる。??
皿取ると同時に食べ始め、食べている間は次の皿を取ることができない。??
私が取る以外、皿は追加されたり無くなったりしない。??
コンベアの状態が次のような文字列で与えられる。 ??
"31_2"??
数字はその皿を食べ終えるのにかかる秒数を表し、_は皿がないことを表す。1文字目が目の前にあり毎秒、左へ回転する。??
例えば、"31_2"で最初の皿を食べたとき食べ終わった時の状態は、"2_1_"となる。??
すべての寿司を食べ終えるまで最短何秒かかるか求めよ。??
"12_3" > 6秒??
"313__" > 8秒??
"4_35_1264_23_434" > 60秒??
"123456789123456789" > 98秒??
"88967472612377988186" > 149秒??
"19898693316679441672" > 170秒??
"93769682716711132249893" > ? お題
0〜N-1の数字を1つずつ使ったN進数表記でN桁の数のうち、最も多くの素因数を持つ数を求めよ
N=2
→10
N=5
→34210 (10進数で2430=2*3^5*5, 素因数は7個)
N=10
→??? 全てを探索
しかない気がする
N=14くらいが限度か まーた数学の問題か。
まーたマウント取りたいセンセの荒らしか。
うんざり アルゴリズムと数学は切り離せないものだし数学が役立つ場面はもちろん多いんだけど、数学だけで完結しちゃう問題では、プログラミングのお題としては面白味がないよね。
むしろこのスレに的には悪問と言ってもよいと個人的には思う。
素直なプログラミングでは複雑になってしまうところを数学を使うことでスマートに解けるとか、逆に数学を使うことで全く別のアプローチの解法があるとかだと、面白いと思う。
必ずしも速い、安い、上手いが正義じゃなくて、そんな解き方もあるのねとか、それどうなってんの?と不思議に思えるような解法とかも見てみたいし、そんな解法が見られるお題が面白いと思う。 追加すると、言語によって異なる記述能力や得手不得手を活かして上手く解いたとか簡潔に書けたとか、逆にわざわざそんな敢えて難しいやり方をするかとか、そういうのも面白いなと思います。 数学で完結してんのかこれ
コンピュータ使わない解法思いつかんが 素因数の個数って何だっけ
互いに素な約数の個数なら、N=5の時33220(=2310=2*3*5*7*11)の方が多いし、素因数分解で出てくる素数の個数ならN=5の時31143(=2048=2^11)の方が多いし
私が文を読めていないだけ? ただ列挙して調べなきゃいけないとすると面白くもなんともない。
いい解を作ろうとすれば、できるかどうかはともかく
数学ひねり回すのだけがメインの仕事になるみたいな。 J ブルートフォース
q =: >./&(+/&|:&(0&<)&q:&(#. (i.@! A. i.)))"0
iPhone の J インタプリタでは N=8 までが限界だった
q 2 3 4 5 6 7 8
1 2 6 7 13 10 16 素因数の個数だと2^11は2の1個だけなんだけどなあ
例だと11個と数えたいようだけど >>888
数学ひねり回してどうにかなる気はしない >>891
問題の着目点に応じて相異なる素因数の数になるか重解を許すか解釈すればいいんじゃないの
そうしないと高校数学に良くある(このスレにも出てるな)
「n! の素因数2の個数を求めよ」の答えが恒等的に1になってしまう。
知らんけど。 いや重解は変換ミス
それに重複を許さない個数でも問題は成立するな、
良く考えると。 >>897
解と根は本来、別の用語だよ
今はごっちゃに使われてるけど >>898
例を出さなかったらそれぞれの解釈が見れて面白かったかも
>>899
それで言い訳になってると思ってんの? >>889 Thanks、理解した
全探索しか思いつかなかったorz >>816 J
200$(#~ 2&=@#@q:)2+i.1000 このスレを見ると
世の中のソフトが重くなる理由がよく分かる >>903
それ1000までの間に半素数が200個存在するってあらかじめ分かってなきゃ使えなくない あらかじめ調べておけばいい
どうせなら半素数自体もしらべてテーブルにしておけば コンパイラが究極に進化するとそうなる
今でも純関数&定数指定にすれば 究極に進化して、ある数を素因数分解しろとか離散対数求めろと言われたら、
何桁でもテーブルにあって即答ってか?
暗号死ぬわ。 >>816 J
>>817のやり方で
/:~~.,*/~p:i.20 トップバストとアンダーバストがmm単位で与えられるので
JIS L 4006におけるカップ体型区分を出力せよ
なお、与えられた体系が当該規格の数値と一致しない場合は
最も差の少ない体型区分を選べ
-*- input -*-
880 815
999 799
755 480
-*- output -*-
AA
E
H ミス
>>915 Ruby
#!ruby -na
puts ['AA',*?A..?I][(eval($F*?-)/25.0-3).round.clamp(0,9)] このスレは、素数表を使う問題が多い
一方、プログラミング・コンテストでは、自作ライブラリも持ち込めるから、
素数表・ZDD を持ち込んで、解けるような問題は少ない
数学的な解法がなくて、全探索して見つけるものが多い じゃあここで出てる問題をまず最初にNP完全かどうかを判定すればいい
競技プログラミングに適している問題かどうかを証明してから、改めてプログラミングにあたる プログラミング・コンテストの良問は、
持ち込みの自作ライブラリでは解けないもので、
素直に全探索すると、計算回数が1億回以上になって、2秒以内に解けないもの
ここで、パズル的に考えて、数学的な法則を使うことで、
枝切り・ショートカットして、計算回数が1千万回以下になるもの >>915 J
f=:{&(25#'AA'';;/'ABCDEFGHI')@<.@-&62.5&(-/) >>925
分かりにくいのは毎度の事だが今回はあんまり短くもならないんだな。 JアプリみつけたのでJで遊んでる初学者だけど
参考にするコード見つけにくい(少ない検索し難い読みにくい)から
>>925の人の存在は有り難い
見所はインデックスを25で割らずテーブルを25倍にしてるとこか お題:文字列の配列をカンマ区切りで表示せよ
複数の方法を用いること
ruby
https://ideone.com/cKprYN 配列を、って言ってるのに%wでスペース区切りの文字列から作るの?
てかrubyの%wって何のためにあるの?
splitあるのに組み込みので提供するほどのもの?
他言語者からしたらsplitは分かってもらえると思うが%wは分からんと思うぞ?
やっぱ書くだけの書き捨て言語なんかな。 >>928 common lisp
(let ((a '("java" "ruby" "rust")))
(format t "~{~A~^, ~}~%" a)
(princ (reduce (lambda ($0 $1) (concatenate 'string $0 ", " $1)) a))
)
; java, ruby, rust
; java, ruby, rust >>929
>てかrubyの%wって何のためにあるの?
まさに今回のような場合に配列リテラルを作るためのものだろ
各要素が所与なのになんでわざわざ繋いだ文字列リテラル書いてsplitしようとするの? >>928 ruby
puts a[0...-1].inject(''){|r,s| r << s << ',' } + a.last
puts a.inject(''){|r,s| r << s << ',' }.chop
puts a.map{|s| [s, ','] }.join.chop
b = a.join
a[0...-1].inject(0){|r,s| r += s.length + 1; b = b.insert(r-1, ','); r }
puts b >>929
Perl だと
@week = qw(Sun Mon Tue Wed Thu Fri Sat) >>931
今回のような??
今回の問題文、「文字列の配列をカンマ区切りで表示せよ」ってなってんだが…
スペース区切りの文字列から始めてどうする。
それじゃ%wで配列にするまでもなく正規表現でスペースをカンマに置換すればいいじゃん。 >>928
Kotlin
https://paiza.io/projects/ZW2Hjc9tfnlrMwqvblaKlw
文字列は1行づつ入力から読んで MutableList に add して終わったら Array に変換して文字列の配列にしている。 >>928 javascript
var langs = ['javascript', 'python', 'go']
console.log(langs.join()) //ES5
console.log(langs.reduce((acc, elm) => `${acc},${elm}`)) //ES2015
langs |> ary => ary.join() |> console.log //ESNext
console.log((langs + ',').slice(0, -1)) //ES5 一番かんたんなの忘れてた
console.log(langs.toString())
console.log(langs + '')
console.log(`${langs}`) console.log(String(langs))
langs |> String |> console.log //ESNext >>928 Squeak Smalltalk
| arr |
arr := #(java rust ruby).
arr asCommaString. "=> 'java, rust, ruby' "
arr asCommaStringAnd. "=> 'java, rust and ruby' "
String streamContents: [:ss |
arr do: [:each | ss << each] separatedBy: [ss << ', ']
]. "=> 'java, rust, ruby' " >>928
join一発でできるようなことをわざわざ問題にするなよ... 誰かにコードを教えてもらう為に「お題」と言ってるだけじゃね? 数学センセが嫉妬かみっともない
開口の広いお題が繁盛すんのは当たり前 蛇足で無粋でしょうけど寸評をもってお礼に代えさせて下さい
寸評:
>>930 素早くreduce拾って下さったのと、コードのリズム感が目に優しくてすこ
formatたる謎の戦法も興味深い
>>932 chop戦略を出して下さって感謝。bを使ったほうはフフッときた
>>935 Kotlinのコードいつも楽しく拝見してます
「先頭別で、二個目からカンマくっつけ戦法」出してくれて感謝
>>936 joinでカンマついちゃうのが他言語から見たら興味深い
>>939 いつも楽しく拝見してます、相変わらずギョッとさせられる
じつは当初、andつきのほうをお題にしようかとも迷いましたが
不要な複雑さを持ち込んでしまうと危惧して止めたんですがさすがのSmalltalk
総評:
joinでの解決一個だけで回答されるのが一番つまらないので
それを暗に防ぐために複数の方法っていう指定をした
二番目三番目の方法となると、見てて楽しい、言語ごとの工夫が見えてくる
おまえらありがとう そういや昨日本屋に行ったら「C言語による標準アルゴリズム事典」が売られてて、うわー懐かしいまだ売ってたのかこれ
と思ってよく見たら今年出たばかりの第2版だった。
[改訂新版]C言語による標準アルゴリズム事典 Software Technology
http://amzn.asia/bjcCLfp
この本はある意味お題になりそうな問題の宝庫ではないかと思う。 >>949
おう!
pascal 版を見たことがある、と思ってたんですが、気のせいだったのかな? >>939
その文字列化メソッドの充実っぷりはすごい >>951
それはおそらくこれだな。著者は同じ奥村さんだ。
Software Technology 12 コンピュータアルゴリズム事典
http://amzn.asia/b82A7jP
こちらは Pascal なので再販されそうな感じがしないね。 [[['[] ]]] { {] ]][ '[][][] [][] [][][] [] '[] [] お題
再帰関数を使ってC++で次の問題の会を出すプログラム書いたんですけど、なんかミスばっかでダメなので、だれかどういうプログラム書けばいいのか教えてもらえませんか?
九つの椅子が正方形に並んでおり、はじめに数字の書いた札を持った何人かが座っているとする
例
○○5
○9○
12○
さらに他にも何人か数字の書いた札を持った人がいて、その人たちが空いてる席に順番に座って行くとする
全員座った後、それぞれの点数を数えるとする、ただし点数は前後左右の人が持ってる札の数字を足し算する
例
○○5
○9○
12○
で 3さん→4さん→7さん とすわり
○75
493
12○
となった、9の点数は7+4+3+2
この時、それぞれが自分の点数を最大になるように座ったら最終的にはどういう配置になるでしょう?ただし
・それぞれは座る順番を知っている
・その次に座る人達がどこに座るかまで考慮に入れて考える
・自分以外の点数は気にしない
・誰もいないところは0
・次の人が何箇所か座る候補があり絞れない時は常に予想図の最小値をとって考えるとする、つまり極端にリスクを恐れる 自分より後の人のならび順、番号、人数はわかっている?
全員が天才で、その事を自分は知っている? >>957
このスレでそんな発言に意味があるのかな?
お題として面白ければ回答がつくだろうし糞だったら回答はつかないし、少なくともそれが宿題かどうかは関係ない みんなが宿題を「お題」としてあげはじめたら
糞「お題」率が上がる
糞「お題」ばかりだとおれはこのスレを見なくなるだろう >>959
宿題を書く奴は問題の解き方を理解できていないので、
ここに書かれる問いは「不完全な」問題になる。
お題として不適切なんだから、スレ違い >>960
宿題問題がすべて糞お題とは限らないだろう?
問題が宿題かどうかは問題ではなくて、問題が糞お題じゃなくて良問かどうかだろう? >>961
確かに宿題お題を出そうとする人間は、その問題が良問かどうかの判断すらできないから、必然的に「不完全な」出題になる傾向にある、というのはいえるかもしれないね >>962
率の話
女は会社を辞める率が高いとか
黒人は犯罪率が高いとか >>964
実は、出題者は(それが一部にせよ)教育的意図を抱いて問題を作成しているのだから、宿題問題には良問題が少ないとはいいきれない、と考えている
宿題問題でもそれが良問であれば、このスレで取り上げられてもいい、と思っている、まあ、ここんところは私見だが
で、ついた回答の多寡でこのスレの意志がある程度あらわされるんじゃないか、あからさまな宿題問題だったらこのスレでは回答はつかないからね
だから >>957 のようなことを書く人の考えていることがわからない、というか、>>957 は何も考えずに言葉のオートマタ(自動機械)的にレスを書いているんだね
そりゃなにも考えていないんだから、「考えていることがわからない」のも道理だと思いました >>966
お前の方こそ>>957がレスしてる元の流れを読まずにレスしてるオートマタでないか? >>966
出題スレで「教えて下さい」「これ解いて下さい」等という感じの
「本人が問題の肝を理解していない」
ものに関しては須く「宿題は自分でやれ」と回答するのが出題スレだと思うが。
宿題なのか自作アプリで詰まってるのか知らんけど
出題スレで質問が許容されると他の人も懸念してる通り。 問題が不完全だと思ったら好きに解釈して条件を決めて答えるのがこのスレ
宿題スレじゃないので出題者の意図・期待はどうでもいいからうっちゃって
面白そうだと思えば回答するのみ >>969
「
>出題スレで質問が許容される
と糞お題が増える」
という懸念は、
このスレの性質上必然的に淘汰されるので、一時的に勃興したとしても、自然になくなるのでは?
必要のない縛りはない方がいい
>>971
>>968 は感心するほど注意深いね… 「必要のない縛り」とは思ってない
「お題」スレであり質問スレではない
スレチを許容してたらスレの質が下がるのは明らか スレチが許されるなら数学の話も許されるはずだね
ましてや出題に関連した数学ならスレチとも言えないはずだが このスレで宿題が許容されたら宿題スレの存在意義が無くなるんでないか?
実質、スレタイの違う宿題スレが二つあるようなものなのでは? 宿題にも良問があるかもと思う奴が自分で宿題スレを覗いて良問を待ってればいいだけの話で、このスレでは宿題は一切禁止でいいと思う。 漏れは、数学的な問題や、宿題は解かない
プログラムの問題しか解かない >>956
すべての空席に、自分が座ったとしてループする
自分の前後左右が埋まるまで、ループする。
ただし、最終の人まで
次の人から、最後の人まで、ループする。
全通りを調べて、各人の次の人が、何箇所か座る候補があるときは、
最小値を、各人が選んだ、座席の値として使う >>928 Perl
$ cat 10_928.pl
@s = ('java','ruby','rust');
$" = ',';
print "@s\n";
$ perl 10_928.pl
java,ruby,rust
簡単すぎる気が…
なんかオレ、出題意図を誤解してる? あってんじゃねーの
joinを使うとおもしくないとか言ってるヴァカだし
無視していいんじゃね
出題意図を誤解できないように厳密に明文化する能力がないアフォだろ
それかわざと誤解するような引っかけ問題作ってるキティガイだ まぁまぁ。
複数の方法と書いてあるし、
配列としてindexアクセスしてprintsするとか、
他の意図があるかと最初オモタ >>948を見てみろ、
評論家気取りで
>joinでの解決一個だけで回答されるのが一番つまらない
とか言ってるぞ
だから>>980、お前はこのヴァカのなかでは最高級につまんねー人間だよ
どれだけヴァカがヴァカなことをするかほくそえんでるクソ野郎の出題だよ
出題意図は「joinだけで書いたヴァカをヴァカにすること」、それ以外は読み取れない
相当な悪意があると気付かねーの? >>982
まぁまぁ、その経緯は知らなかったけど、そんなに腹立てないで。
本気になるべきもっと大事なことは他にある。
本音を言うと >>980 よりもっと短いゴルフっぽいコード書いて遊ぼうかと一瞬考たけど、
小学校の演習にもないような文字列リストのカンマ区切り印字
そこまで考える値打ちのかったのでやめといた。 実は、>>980 を書いた意図は、
>>928 は 別に頭を使ってプログラムロジックを書かなくても、
printがリストを印字する区切り文字設定の変更で出来ることであり、
プログラミングのお題としての意義がそもそも乏しい
みたな そんなつもりだったし テヘペロ joinだけだとつまらんなら出題時に禁止しとけばいいだけだし、確かに性格悪いな 「○○禁止」は多言語で回答を出し合う場では忌み嫌われるから逆に避けたのでは?
「各要素列挙の間隙に何か処理を挟む」とか「最初(あるいは最後)の要素だけ例外扱いで列挙」とかにして
なおかつ、joinでは対処できないお題にすべきだった >>928 Ruby
puts a.to_s.tr(' "[]','')
puts a*',' お題:与えられた文字列を逆順にして出力する関数を定義しなさい。ただし、関数の呼び出しに十回に一回は失敗し、失敗した場合は文字列をランダムにシャッフルするようにしなさい。 >>989
訂正
十回に一回は失敗し ×
十回呼び出したら必ず一回だけ失敗し ○ >>989 Ruby
#!ruby -nl
puts $.%10>0?$_.reverse: $_.chars.shuffle*'' httpsでアクセスできるサイトはhttpからhttpsに変えちゃったけどええよな? >>928 は素直に「各言語の特異な機能、面白機能を使って書け」で良かったような
Smalltalk のは雑学的な意味でちょっと面白かった このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 113日 10時間 55分 4秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。