プログラミングのお題スレ Part11
■ このスレッドは過去ログ倉庫に格納されています
スタック不可だとスタック操作が隠蔽されてる高級言語はほぼ使用出来ない
無理やりCやC++でやるとしてもローカル変数や関数呼び出しを殆ど封印しなければならない
これを良い問題と見るか悪い問題と見るかは分からないが俺はやる気が出ない >>599
組み合わせか
北大の湊 真一のZDD とか。
本も出てる お題:Hello, World!を出力せよ。ただし出力系の関数を使ってはならない。 >>601
すみません。>598の「スタック」はデータ構造としての利用のみを想定していて、他関数呼び出しの禁止などは意図してませんでした。
問題文が不明瞭ですみません。
>>600
ご期待に添えず申し訳ない。他のお題を思いついたら、また出題させていただきます。 お題: マップの広さと部屋の個数及び部屋間の繋がりが与えられた時、ダンジョンを作成せよ
・ダンジョンは部屋と通路からなる
・部屋は少なくとも3x4の大きさを持つ
・通路の幅は1
・部屋同士は接しない
・マップ外に部屋や通路は無い
一応、想定としては標準出力に'#'と'.'で表示を考えてる
生成方法は自由だからゲーム的面白さのあるマップ作っても良い 解釈がいろいろあり過ぎて
コードに対して仕様の説明文が必要になるぞ >>604
>>598 の問題はおもしろいし、お題として成立していると思います
・再帰を使用しないマージソートを実装
・作業領域を元のデータの半分の量しか確保せずにソートを実行する
で考えているところです >>603
出力せよといいつつ、出力系は使うなとは、まるで一休さんのような まて、関数は、とある
つまりはシステムコールを直につかうんだ! >>603
じゃあC言語で。
#include <stdio.h>
int main()
{] >>603
#include <stdio.h>
int main()
{
system("echo Hello, World!");
return 0;
} >>609
システムコールの内部は関数
だったりして >>609
クラスもありかも知れない。クラスの中にはメソッドがある。メソッドはメソッドであって関数ではない。
あるいは procedure でも良いのかも知れない。procedure は手続きであって関数ではない。
サブルーチンもありかも知れない。
昔のマイコン用のBASICでVRAMに直接 POKE で値を書き込んだりするのもありかも知れない。
もはや一休さん並のトンチであり言葉遊びである。 関数を使わないとなると
int 21
とかじゃないの? >>603
J
'Hello, World!'
REPL な処理系なら簡単 >>599
とりあえず出来たけどもっと簡単に変換する方法があるような気がする
https://ideone.com/EnmoNU cat
Hello, World!
もはやプログラムですらない。 >>599
100この中から4個を選ぶことだから完全最小ハッシュ関数が使える >>603
紙にペンでHello, World! と書く。 >>603
紙にペンでHello, World! と書く。 「何々禁止で何々を書け」って類いの問題で面白くなることはあんましないな >>621
>>626
考え方分かりました
ありがとうございました 質問一回許すとなし崩しに宿題だらけになるぞ。警告はした。 これ宿題じゃないですよ
ここに書く前にコードも書いてたしもっと効率いい方法ここの人達なら知ってそうだと思ったから >>599
1 2 3 4 -> 001002003004
97 98 99 100 -> 097098099100 >>619のもっと効率悪い奴だよ
元は100C4じゃなくて28C4だったけど
int cc[4][32][32];
こんな二次元の配列使ってた https://ideone.com/VFv36f
2年前に書いたやつで今は何やってるかよく分からないけど
>>619のは昨日元のこのコードを見ないで30分くらい考えて作った それの何が不満?
何をどう改善したいのかわからないと
テーブル作成の速度?
テーブル検索の速度?
コードサイズ?
バイナリサイズ?
コードの分かりやすさや移植性? 605、出題しておいて何だがこれめっちゃ難しいな
マップの大きさの制約があると通路引くのが難しすぎる いちおう解けるのを自分で確認してから出してくれないと困る >>643
一般に、再帰を非再帰に書き下すのは難しいのです… お題
ポーランド記法による計算機を実装せよ
演算子は加算(+)と乗算(*)をサポートすること
* + 1 5 + 2 3
=> 30
* * * * 2 3 4 5 6
=> 720 >>645 Ruby 2.5.0
[
"* + 1 5 + 2 3",
"* * * * 2 3 4 5 6"
].each do |_exp|
exp = +-_exp
nil while exp.gsub!(/([^\d\s]+) +(\d+) +(\d+)/){$2.to_i.send($1, $3.to_i)}
puts '%s => %s' % [_exp, exp]
end
#=>
* + 1 5 + 2 3 => 30
* * * * 2 3 4 5 6 => 720 お題
N個の整数(a_1, a_2, ..., a_n, ..., a_N)と*+/()を使った数式の値が、ある整数aにもっとも近い数式とその値(実数)を出力せよ
引き算はなし
a_n = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} >>606
>>605のは要はローグライクの部屋を作れってことだろ
出題者の説明不足
画像の1枚でも張れば見て分かる
ttps://cdn-ak.f.st-hatena.com/images/fotolife/g/gaou2/20170905/20170905111314.png これ見た目では普通だけどかなり横に長い部屋なんだよな >>654
今だと全角文字で作ればいいかな。絵文字もまじえて。 >>597 Java
https://ideone.com/VUgSXO
1行〜5行までしか答え出ないな
うちの環境で
9行を探索するのに4.6秒
10行を探索するのに61.6秒
2018行はあかんww いやさすがに数学板でやれや。
国際数学オリンピックて自分で言うてるやんけ 数学とか使わずに総当たりでやってるのに数学板に行けとな いやこれは総当たりでは計算量的に無理だろ
コードは書けるだろうけど
存在することを帰納法で証明するしかないから数学板の問題だ まーた数学コンプレックスが暴れてるのか
数オリに出るくらいの賢さがないから計算機の力も借りて解くっていう方向性は別にスレチじゃないだろ ここでレスリングの話しだして苦言を呈されると「まーたレスリングコンプレックスが暴れてるのか」
極端に言うとこういうこと。
レスリング板、数学板があるだろ。
わざわざここでオナニーしたいのは専門以外の板でマウント取りたいのかな?
そんなひねくれた根性だから現実世界でミジメな生活なんだよ。 早速暴れてて草
正攻法で数オリの問題を解く話を延々してたんならうざいけど
飽くまで計算機使って解いてみようぜって言ってる人にまでその理屈が当てはまるわけないだろ
それとも数学だけじゃなくて論理的思考もできないタイプか?それなら納得だわw 数学で解ける問題をわざわざコンピューターでムダな解き方するの??
突き詰めていくと数学で出した解法そのまま引き写すだけになるのが分かりきってるのに。 だからわざわざ「数オリに出るくらいの賢さがないから」って言ってるだろ日本語読めねえのかよ
そりゃ灘の入試レベルならその通りだろうけど数オリで正解率1割切ってたような問題なんだから計算機使ったアプローチしてみるのもプログラミングのお題としては面白いだろ
それともなんだ、円周率の計算だってペンと紙でできるんだから無駄だっていうのか?w
そんな極論言うレベルの頭だから数学もできないんだよw そういう無駄に一般化した話も結構だけど、
個別具体的な話として>>597は計算機を併用することに効果が無いから数学の問題だと言ってるんだよ。
2018を解けるほど効率化できるなら既に人力で解けているだろうからね。 それは総当たり以外にうまい方法が思い浮かばないから言えるだけでしょうよ。
あと素数判定アルゴリズムなんか考えればわかるけど、効率化できることと人力で解けることに相関はないぞ。
少なくともスレチではないと思うよ。 部外者だが
嫌なら回答しなきゃいいだけなのに
何文句言ってるの?
って感じ そんなことより野球のはなししようぜ!嫌なら無視すりゃいいだけ。 アプローチ以前に
>>597の問題って存在するの
それとも無いの 作るのは無理な気がするがよーわからん
一番大きい数値 1+2+…2018 = 2037171 は差の絶対値で作れないので最下段確定
一番大きい数値を出来るだけ上段に伝搬させるために小さい数値(1~2017)と組み合わせていっても最上段に残るのは 2018
→ 2019 以上と組み合わせると 2017 未満の数値がダブる
最下段で 2037171 と 1 を組み合わせた場合、 2037169 も最下段に設置する必要がある
2037169 は 1~2018 の大部分と組み合わせられないので上のほうまで伝搬できずにアウト その長々とした理屈は2018が7でも6でも同様のことが言えるよね
そして7や6には解がある >>673
適当に作ったプログラム(>>657)じゃ5までしか見つかっとらんのだけど、6や7にも解あるんか 5以下の場合は数字が足りなくなる前に最大値からの流れに合流出来てるんじゃね? >>674
>>657じゃなくてCで書いたけど6〜40までは解無し 数オリ経験者、東大数学科卒だけど
今度挑戦してみるか お題
非負整数nが与えられるので、以下に示すような六角形状の螺旋を描画せよ
https://ideone.com/MmH3N6 >>679
質問です。
n>99の場合はズレが生じてくると思いますが、その時はどうしますか?
それともn≦99で範囲を絞ってもよろしいんでしょうか?
まぁ、私が作れるかどうか分からないんですがorz 難しそうだが良いお題だな
こういうお題を考えられるようになりたい まずは数学から入るか
中心つき六角数 - Wikipedia
ttps://ja.wikipedia.org/wiki/%E4%B8%AD%E5%BF%83%E3%81%A4%E3%81%8D%E5%85%AD%E8%A7%92%E6%95%B0 >>680
nの大きさに合わせて-の数を決めれば、歪にならないと思うよ。 >>685
へ〜やっぱ n = 5 までしかないんだな
後でちゃんと読んどくわ 出題者は自分で書けるのを一度確認してから出題してほしいわ >>688 BF
+>+<-][+[->+[+>-<]<]<+[>+[.>]-]-] >>688
awk
Linux 用
awk '{printf "%.3f℃n", $1 / 1000}' /sys/class/thermal/thermal_zone0/temp
実行例
56.000℃ あれ?\n が抜けた。
これね。
awk '{printf "%.3f℃\n", $1 / 1000}' /sys/class/thermal/thermal_zone0/temp 鈴木貫太郎
灘中 中学入試問題シリーズ 整数問題
https://youtu.be/98U2qVDQltc
6桁の整数、5AB,C15 が999 の倍数である時、ABC を求めよ
答え
A=8, B=4, C=4 お題:与えられた正の整数nを2進数〜16進数に変換して表示する。
11進数以降の10以上を表す文字はABCDEFを使用。
(10=A, 11=B, 12=C, 13=D, 14=E, 15=F)
例:12進数の11 ---> B
出力例:
n=123456
base(2) ---> 11110001001000000
base(3) ---> 20021100110
base(4) ---> 132021000
base(5) ---> 12422311
base(6) ---> 2351320
base(7) ---> 1022634
base(8) ---> 361100
base(9) ---> 207313
base(10) ---> 123456
base(11) ---> 84833
base(12) ---> 5B540
base(13) ---> 44268
base(14) ---> 32DC4
base(15) ---> 268A6
base(16) ---> 1E240 ■ このスレッドは過去ログ倉庫に格納されています