プログラミングのお題スレ Part11
at TECH
[前50を表示]
650:デフォルトの名無しさん
18/07/15 14:14:11.66 9lve5q3D.net
>>620のもっと効率悪い奴だよ
元は100C4じゃなくて28C4だったけど
int cc[4][32][32];
こんな二次元の配列使ってた
651:デフォルトの名無しさん
18/07/15 14:19:01.22 ugn7dRUi.net
いいから貼れ
652:デフォルトの名無しさん
18/07/15 14:26:45.03 9lve5q3D.net
URLリンク(ideone.com)
2年前に書いたやつで今は何やってるかよく分からないけど
>>620のは昨日元のこのコードを見ないで30分くらい考えて作った
653:デフォルトの名無しさん
18/07/15 14:33:39.46 ugn7dRUi.net
それの何が不満?
何をどう改善したいのかわからないと
テーブル作成の速度?
テーブル検索の速度?
コードサイズ?
バイナリサイズ?
コードの分かりやすさや移植性?
654:デフォルトの名無しさん
18/07/15 14:35:44.41 9lve5q3D.net
何がってほぼ全てが不満だけど
655:デフォルトの名無しさん
18/07/15 14:36:24.88 ugn7dRUi.net
ああ、
速度とメモリって書いてあったね
656:デフォルトの名無しさん
18/07/15 15:22:45.17 ZKe7bXB/.net
宿題スレでやれ
657:デフォルトの名無しさん
18/07/15 21:44:41.62 WaX+Eind.net
605、出題しておいて何だがこれめっちゃ難しいな
マップの大きさの制約があると通路引くのが難しすぎる
658:デフォルトの名無しさん
18/07/15 22:38:32.27 /hZTTtWu.net
いちおう解けるのを自分で確認してから出してくれないと困る
659:デフォルトの名無しさん
18/07/15 23:36:44.29 ugn7dRUi.net
>>640
>>607
660:デフォルトの名無しさん
18/07/16 00:30:52.75 DlxdbTiq.net
入力と出力の例とかあると良いよね
661:デフォルトの名無しさん
18/07/16 10:10:17.82 7UvME/Zj.net
>>608
で、出来てる?
662:
18/07/16 11:53:01.88 PLRcL5uS.net
>>644
一般に、再帰を非再帰に書き下すのは難しいのです…
663:デフォルトの名無しさん
18/07/16 13:51:43.31 yJ4dWfp7.net
お題
ポーランド記法による計算機を実装せよ
演算子は加算(+)と乗算(*)をサポートすること
* + 1 5 + 2 3
=> 30
* * * * 2 3 4 5 6
=> 720
664:デフォルトの名無しさん
18/07/16 13:53:41.91 JYSC+BEo.net
ただし、スタックを使用してはならない
665:デフォルトの名無しさん
18/07/16 13:56:53.16 TD/1pPmS.net
さらに、分数と複素数をサポートすること
666:デフォルトの名無しさん
18/07/16 14:01:43.77 rAvhQng0.net
まーた、〜を使わないで、か。
宿題か何かかな
667:デフォルトの名無しさん
18/07/16 14:36:11.63 dBK+PWCu.net
>>646 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
668:デフォルトの名無しさん
18/07/18 02:22:22.35 7Z3eO87O.net
>>646
Kotlin で二つ作った。
Stack 使ったやつ。
URLリンク(paiza.io)
Stack 使わずに MutableList で 計算記号、数、数のパターンを計算できなくなるまで繰り返し計算するやつ。
enumも使用。
URLリンク(paiza.io)
669:デフォルトの名無しさん
18/07/19 21:45:59.55 bv0mlJEL.net
お題
N個の整数(a_1, a_2, ..., a_n, ..., a_N)と*+/()を使った数式の値が、ある整数aにもっとも近い数式とその値(実数)を出力せよ
引き算はなし
a_n = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
670:デフォルトの名無しさん
18/07/19 21:52:08.91 QlKeHbXC.net
うんざり
671:デフォルトの名無しさん
18/07/24 10:08:13.30 Dnr6z2Ly.net
>>607
>>606のは要はローグライクの部屋を作れってことだろ
出題者の説明不足
画像の1枚でも張れば見て分かる
URLリンク(cdn-ak.f.st-hatena.com)
672:デフォルトの名無しさん
18/07/24 12:45:23.08 msj5ObGA.net
これ見た目では普通だけどかなり横に長い部屋なんだよな
673:デフォルトの名無しさん
18/07/24 12:55:16.04 jy7p1ZdA.net
部屋と通路以外の場所も存在するのかよ
674:デフォルトの名無しさん
18/07/24 13:01:35.53 m/xgtmWb.net
>>655
今だと全角文字で作ればいいかな。絵文字もまじえて。
675:デフォルトの名無しさん
18/07/26 00:47:20.34 PpbivrbM.net
>>598 Java
URLリンク(ideone.com)
1行〜5行までしか答え出ないな
うちの環境で
9行を探索するのに4.6秒
10行を探索するのに61.6秒
2018行はあかんww
676:デフォルトの名無しさん
18/07/26 01:28:14.71 NOsumJU/.net
いやさすがに数学板でやれや。
国際数学オリンピックて自分で言うてるやんけ
677:デフォルトの名無しさん
18/07/26 02:06:08.36 PpbivrbM.net
数学とか使わずに総当たりでやってるのに数学板に行けとな
678:デフォルトの名無しさん
18/07/26 03:14:46.46 64IGnOgv.net
いやこれは総当たりでは計算量的に無理だろ
コードは書けるだろうけど
存在することを帰納法で証明するしかないから数学板の問題だ
679:デフォルトの名無しさん
18/07/26 09:13:59.71 1RynmuAu.net
まーた数学コンプレックスが暴れてるのか
数オリに出るくらいの賢さがないから計算機の力も借りて解くっていう方向性は別にスレチじゃないだろ
680:デフォルトの名無しさん
18/07/26 09:22:17.32 NOsumJU/.net
ここでレスリングの話しだして苦言を呈されると「まーたレスリングコンプレックスが暴れてるのか」
極端に言うとこういうこと。
レスリング板、数学板があるだろ。
わざわざここでオナニーしたいのは専門以外の板でマウント取りたいのかな?
そんなひねくれた根性だから現実世界でミジメな生活なんだよ。
681:デフォルトの名無しさん
18/07/26 09:30:59.20 1RynmuAu.net
早速暴れてて草
正攻法で数オリの問題を解く話を延々してたんならうざいけど
飽くまで計算機使って解いてみようぜって言ってる人にまでその理屈が当てはまるわけないだろ
それとも数学だけじゃなくて論理的思考もできないタイプか?それなら納得だわw
682:デフォルトの名無しさん
18/07/26 10:44:43.72 NOsumJU/.net
数学で解ける問題をわざわざコンピューターでムダな解き方するの??
突き詰めていくと数学で出した解法そのまま引き写すだけになるのが分かりきってるのに。
683:デフォルトの名無しさん
18/07/26 10:51:14.48
684: ID:1RynmuAu.net
685:デフォルトの名無しさん
18/07/26 11:36:12.38 64IGnOgv.net
そういう無駄に一般化した話も結構だけど、
個別具体的な話として>>598は計算機を併用することに効果が無いから数学の問題だと言ってるんだよ。
2018を解けるほど効率化できるなら既に人力で解けているだろうからね。
686:デフォルトの名無しさん
18/07/26 13:48:16.24 YvrMO5FL.net
それは総当たり以外にうまい方法が思い浮かばないから言えるだけでしょうよ。
あと素数判定アルゴリズムなんか考えればわかるけど、効率化できることと人力で解けることに相関はないぞ。
少なくともスレチではないと思うよ。
687:デフォルトの名無しさん
18/07/26 14:31:11.72 v+At+/4W.net
部外者だが
嫌なら回答しなきゃいいだけなのに
何文句言ってるの?
って感じ
688:デフォルトの名無しさん
18/07/26 15:16:02.44 b54Sk8mu.net
そんなことより野球のはなししようぜ!嫌なら無視すりゃいいだけ。
689:デフォルトの名無しさん
18/07/26 15:40:53.67 7rDxwdj1.net
さすがにそれはスレチ
690:デフォルトの名無しさん
18/07/26 20:25:33.46 wiCSHgxo.net
アプローチ以前に
>>598の問題って存在するの
それとも無いの
691:デフォルトの名無しさん
18/07/27 00:30:20.41 1FlI+KkW.net
作るのは無理な気がするがよーわからん
一番大きい数値 1+2+…2018 = 2037171 は差の絶対値で作れないので最下段確定
一番大きい数値を出来るだけ上段に伝搬させるために小さい数値(1~2017)と組み合わせていっても最上段に残るのは 2018
→ 2019 以上と組み合わせると 2017 未満の数値がダブる
最下段で 2037171 と 1 を組み合わせた場合、 2037169 も最下段に設置する必要がある
2037169 は 1~2018 の大部分と組み合わせられないので上のほうまで伝搬できずにアウト
692:デフォルトの名無しさん
18/07/27 01:35:56.64 DQ/IIgai.net
その長々とした理屈は2018が7でも6でも同様のことが言えるよね
そして7や6には解がある
693:デフォルトの名無しさん
18/07/27 01:42:27.70 1FlI+KkW.net
>>674
適当に作ったプログラム(>>658)じゃ5までしか見つかっとらんのだけど、6や7にも解あるんか
694:デフォルトの名無しさん
18/07/27 02:06:17.44 DQ/IIgai.net
ないのかごめん
でも5でも同じことは言えるような
695:デフォルトの名無しさん
18/07/27 04:54:59.02 1FlI+KkW.net
5以下の場合は数字が足りなくなる前に最大値からの流れに合流出来てるんじゃね?
696:デフォルトの名無しさん
18/07/27 07:39:19.67 9MbN0qgs.net
>>675
>>658じゃなくてCで書いたけど6〜40までは解無し
697:デフォルトの名無しさん
18/07/27 07:52:55.93 2v1r+MgC.net
数オリ経験者、東大数学科卒だけど
今度挑戦してみるか
698:デフォルトの名無しさん
18/07/27 18:20:03.99 KWveLgZ0.net
お題
非負整数nが与えられるので、以下に示すような六角形状の螺旋を描画せよ
URLリンク(ideone.com)
699:デフォルトの名無しさん
18/07/27 19:00:06.01 2ZGMtSH+.net
>>680
質問です。
n>100の場合はズレが生じてくると思いますが、その時はどうしますか?
それともn≦99で範囲を絞ってもよろしいんでしょうか?
まぁ、私が作れるかどうか分からないんですがorz
700:デフォルトの名無しさん
18/07/27 19:20:13.92 KWveLgZ0.net
ご自由にどうぞ
701:デフォルトの名無しさん
18/07/27 20:32:22.83 2Zd5WnL8.net
難しそうだが良いお題だな
こういうお題を考えられるようになりたい
702:デフォルトの名無しさん
18/07/28 12:28:46.99 SHZi2qln.net
まずは数学から入るか
中心つき六角数 - Wikipedia
URLリンク(ja.wikipedia.org)
703:デフォルトの名無しさん
18/07/29 08:56:47.82 ngHwAmGC.net
>>681
nの大きさに合わせて-の数を決めれば、歪にならないと思うよ。
704:597
18/07/29 11:00:51.11 g8Q1VsuY.net
こんな資料がありました
URLリンク(ja.scribd.com)
URLリンク(w3.math.sinica.edu.tw)
705:デフォルトの名無しさん
18/07/29 13:36:35.25 MuGsWv1+.net
>>686
へ〜やっぱ n = 5 までしかないんだな
後でちゃんと読んどくわ
706:デフォルトの名無しさん
18/07/29 17:52:03.38 uE0dE1bw.net
出題者は自分で書けるのを一度確認してから出題してほしいわ
707:デフォルトの名無しさん
18/08/01 15:14:43.83 2n7XGxji.net
お題:パソコンのCPU温度を表示せよ
708:デフォルトの名無しさん
18/08/01 15:31:54.60 3rDDnIHy.net
ちょっと待ってね。温度計持ってくるから。
709:デフォルトの名無しさん
18/08/01 19:12:40.95 hJYNlAh1.net
>>689 BF
+>+<-][+[->+[+>-<]<]<+[>+[.>]-]-]
710:デフォルトの名無しさん
18/08/01 20:57:33.89 WDXOLOCv.net
>>689
こうすると分かるんだって。
URLリンク(qiita.com)
但し Linux 。
711:デフォルトの名無しさん
18/08/02 00:18:21.78 vClc7nAi.net
>>689
awk
Linux 用
awk '{printf "%.3f℃n", $1 / 1000}' /sys/class/thermal/thermal_zone0/temp
実行例
56.000℃
712:デフォルトの名無しさん
18/08/02 01:04:29.34 vClc7nAi.net
あれ?\n が抜けた。
これね。
awk '{printf "%.3f℃\n", $1 / 1000}' /sys/class/thermal/thermal_zone0/temp
713:デフォルトの名無しさん
18/08/02 02:37:36.98 aTwsiZBG.net
>>680 C
URLリンク(ideone.com)
714:デフォルトの名無しさん
18/08/02 19:31:00.50 zwgkA1lD.net
8888
715:デフォルトの名無しさん
18/08/10 02:32:41.77 3Gbr2Rmh.net
鈴木貫太郎
灘中 中学入試問題シリーズ 整数問題
URLリンク(youtu.be)
6桁の整数、5AB,C15 が999 の倍数である時、ABC を求めよ
答え
A=8, B=4, C=4
716:デフォルトの名無しさん
18/08/10 02:38:30.89 4W08/YUW.net
数学板でやれ
717:デフォルトの名無しさん
18/08/10 04:25:49.65 MBG3l1c9.net
>>697 C
URLリンク(ideone.com)
718:デフォルトの名無しさん
18/08/10 04:27:27.01 MBG3l1c9.net
お題:与えられた正の整数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
719:
18/08/10 07:06:46.57 H9lF8aPc.net
>>700
スレリンク(tech板:909番)
スレリンク(tech板:29番)
720:デフォルトの名無しさん
18/08/10 10:02:14.32 GIxLf6/p.net
>>697
500015 + <ABC00> = 0 mod 999
<=> 4151 + <ABC> = 0 mod 999
<=> 4151 + <ABC> = 999*5
<=> <ABC> = 844
>>700 Ruby
#!ruby -p
b, n = $_.scan(/\d+/).map &:to_i
puts n.to_s(b).upcase
#=>
12進数の11
B
2進数の123456
11110001001000000
3進数の123456
20021100110
16進数の123456
1E240
721:デフォルトの名無しさん
18/08/10 10:56:59.12 EBuB6o8O.net
>>697
何も考えてないPerlのワンライナー
perl -e 'for(0..999){$n=sprintf"5%03d15",$_;if($n%999==0){print"$n\n"}}'
584415
722:デフォルトの名無しさん
18/08/10 11:16:24.27 EBuB6o8O.net
>>700
Linux等で動くGNUのbcコマンド
プログラムをファイルに入れておいてbcの引数で指定し、変換させたい数値は標準入力から読ませる。
ibase = 10
n = read()
for (i = 2; i <= 16; i++) {
obase = 10
print "base(", i, ") --> "
obase = i
print n, "\n"
}
723:デフォルトの名無しさん
18/08/10 11:38:51.00 EBuB6o8O.net
>>700
Kotlin
URLリンク(paiza.io)
724:デフォルトの名無しさん
18/08/10 14:15:41.82 xmypHVHY.net
>>700
C
URLリンク(ideone.com)
725:デフォルトの名無しさん
18/08/10 14:48:17.70 MBG3l1c9.net
>>701
既出でしたか 失礼しました
では追加でもう1つ
お題:
時間を表わす文字列(hh:mm:ss形式の8文字)の秒数を求める
最上位の時間だけは99時間を超えた場合拡張される
例:123時間45分6秒 ---> 123:45:06
出力例:
01:23:45 = 5025 sec
333:33:33 = 1200813 sec
出題者の回答例:C言語 URLリンク(ideone.com)
726:デフォルトの名無しさん
18/08/10 17:50:01.60 q2LOavXt.net
>>700
C言語 (再帰処理)
URLリンク(paiza.io)
727:デフォルトの名無しさん
18/08/10 17:57:07.00 q2LOavXt.net
>>707
Perl
URLリンク(paiza.io)
ワンライナーにもできるが、今回はこれで。
728:デフォルトの名無しさん
18/08/10 18:25:42.14 q2LOavXt.net
>>707
bash
URLリンク(paiza.io)
729:デフォルトの名無しさん
18/08/10 18:30:15.99 GIxLf6/p.net
>>707 Ruby ゴルフ気分で
#!ruby -palF:
$_='%d sec'%(0..2).map{|i|$F[~i].to_i*60**i}.sum
# input
01:23:45
333:33:33
# output
5025 sec
1200813 sec
730:デフォルトの名無しさん
18/08/10 18:40:53.56 splKqZqj.net
>>707
bash (かぶった)
URLリンク(paiza.io)
731:709
18/08/10 19:22:50.97 q2LOavXt.net
>>712
あ、そうか。その方が簡単だな。
732:
18/08/10 23:01:27.70 H9lF8aPc.net
お題:10兆までの素数のリストを作ってみませんか?
URLリンク(tech.nikkeibp.co.jp)
条件:既存のライブラリ、モジュール、外部コマンド等を利用するのは不可
すべて自分で記述すること
int64_t, uint64_t の使用は許可する
733:デフォルトの名無しさん
18/08/11 00:01:26.30 DgZEeL87.net
Ruby では百万までで、処理に数秒掛かって、78,498個の素数があった
class PrimeNumber # 素数
def initialize (to = 20)
@to = to
@prime_numbers = []
end
def add_table (n)
limit = Math.sqrt(n).ceil
@prime_numbers.each do |prime_num|
# 割り切れたら、素数ではない
return if n % prime_num == 0
# sqrt より大きいなら、確かめずとも素数である
break if limit < prime_num
end
@prime_numbers.push n # 割り切れない
end
def print
(2..@to).each do |n|
add_table n
end
puts @prime_numbers.length
end
end
734:デフォルトの名無しさん
18/08/11 02:38:16.74 7kLiHGgf.net
>>714
perl
一応これで理屈の上ではできるとは思うんだが、477577まで行ったところでアホらしくなって止めたw
#!/usr/bin/perl
use strict;
use warnings;
my @pn = (2);
my $n = 1;
print "$n: $pn[0]\n";
$n++;
LOOP:
for (my $i = 3; $i <= 10000000000000; $i += 2) {
for (@pn) {
next LOOP unless ($i % $_);
}
push(@pn, $i);
print "$n: $i\n";
$n++;
}
735:デフォルトの名無しさん
18/08/11 03:54:44.08 QfTJwHhj.net
>>714 Ruby
10兆なら改良されたAtkinの篩を使ってガシガシやるしかないだろう
URLリンク(citeseerx.ist.psu.edu)
sup = 10**7
primes = [2, 3]
5.step(sup, 6){|i|
2.times{
primes << i if primes.none?{|pr| break true if pr*pr > i; i % pr == 0}
i += 2
}
}
primes.pop if primes[-1] > sup
p primes.size #=> 664579
736:デフォルトの名無しさん
18/08/11 07:04:06.66 N9ICkOCi.net
>>714
昔やった
アセンブラ & AVX & マルチスレッド
探してみる
737:デフォルトの名無しさん
18/08/11 07:37:04.51 N9ICkOCi.net
みつかりました
そんなに昔じゃなかった
2年半前
41兆くらいまで求めてます
マルチスレッドではありませんでした
処理内容はよく覚えていません
素数表作成
ビットパターン作成
ふるい
のようなコメントがあります
105単位でなにかやってます
738:デフォルトの名無しさん
18/08/11 09:37:18.90 y6G1YdWM.net
だんだん思い出してきました
6n+1, 6n+5 に対応するビット列を保持
小さな素数の倍数はマスクを作ってAVX命令でANDしていって
大きな素数の倍数はp(210n+48個の値) にしぼって
ビット命令でひたすらふるう感じ
キャッシュサイズを考えて小さなバッファでやってます
739:デフォルトの名無しさん
18/08/11 16:27:34.72 VD7zYIqC.net
いいからコード貼れや
740:デフォルトの名無しさん
18/08/12 13:15:41.49 DNU8qmV7.net
お題:
ロト6で申込数字のいずれかが必ず5等以上に当選する
最小の申込数字の組み合わせを作ってください
ロト6は01〜43の数字から異なる数字6個を順番不問で選び
申込数字6個のうち3個以上が本数字と一致すれば5等以上に当選となります
741:デフォルトの名無しさん
18/08/12 14:21:49.33 ZHEExUj+.net
>>722
・5等の当選条件を満たしている
・5等以上のいずれかの当選条件を満たしている
この2つは同値なの?
742:デフォルトの名無しさん
18/08/12 14:57:56.60 1gNSypiF.net
>>723
それを聞いてどうするの?
743:デフォルトの名無しさん
18/08/12 15:09:35.79 ZHEExUj+.net
>>724
1〜5等に該当するならば必ず当選番号と同じ数字が少なくとも3つ入っているということがはっきりしない限り解けないでしょ
744:デフォルトの名無しさん
18/08/12 15:11:11.96 ZHEExUj+.net
ごめん
申込数字6個のうち3個以上が本数字と一致すれば5等以上に当選となります
を
申込数字6個のうち3個以上が本数字と一致すれば5等に当選となります
と読み間違えてたわ
745:デフォルトの名無しさん
18/08/12 15:14:32.85 1gNSypiF.net
>>723と>>725の質問内容が違う件
746:デフォルトの名無しさん
18/08/12 15:17:25.19 ZHEExUj+.net
>>727
同値だよ
747:デフォルトの名無しさん
18/08/12 15:22:10.21 O4fOyJLk.net
15万個くらいの数字を吐き出して終わり?
748:デフォルトの名無しさん
18/08/12 15:26:16.88 1gNSypiF.net
>>728
>>723は>>722とは無関係だが
>>725は(>>722の解釈次第では)無関係ではない
749:デフォルトの名無しさん
18/08/12 15:29:22.68 1gNSypiF.net
>>725は
3個以上一致 <===> 5等以上に当選
3個以上一致 ====> 5等以上に当選
のどちらかをたずねたのかと思った
750:デフォルトの名無しさん
18/08/12 15:39:13.61 ZHEExUj+.net
>>731
そもそもこっちが>>723と>>725で「申込数字6個のうち3個ちょうど本数字と一致すれば5等に当選」って誤解してたのが始まりなんだ
わけわかんないこと言ってごめんね
751:デフォルトの名無しさん
18/08/12 17:47:14.42 9O3GHV+n.net
>>707 Squeak Smalltalk
('01:23:45' subStrings: ':') reversed polynomialEval: 60 "=> 5025 "
('333:33:33' subStrings: ':') reversed polynomialEval: 60 "=> 1200813 "
Pharo Smalltalk
(('01:23:45' substrings: ':') collect: #asInteger) reversed polynomialEval: 60 "=> 5025 "
(('333:33:33' substrings: ':') collect: #asInteger) reversed polynomialEval: 60 "=> 1200813 "
752:デフォルトの名無しさん
18/08/12 18:43:07.08 9O3GHV+n.net
>>714 Squeak/Pharo Smalltalk で 100億まで
| count |
count := 0.
Integer primesUpTo: 1e10 do: [:prime | count := count + 1].
count '=> 455052511 '
組み込みだけど、書くとしても同じアルゴリズムで書くと思うので…
URLリンク(ideone.com)
753:デフォルトの名無しさん
18/08/12 21:48:09.01 cX8lnXZC.net
>>722 C++
URLリンク(ideone.com)
コンビネーション使う方法と、確率DPの二通りでやってみた。
(ちなみに5個当り222本は 6本が2等で、216本が3等)
※確率、期待値系は苦手だ
754:デフォルトの名無しさん
18/08/12 21:51:28.06 AkqOEQdA.net
お題:ローカルホストの一覧を出力しなさい
755:デフォルトの名無しさん
18/08/12 23:20:11.13 YPN3vVTA.net
>>735
>>722って、
・抽選される6個の数字が43C6通りのどの組み合わせでも5等以上が当たるようにくじを買う。
・くじの購入数はできるだけ少なくなるようにする。
ってことじゃないのん?
756:デフォルトの名無しさん
18/08/12 23:45:52.09 3JJNsMDc.net
それ以外にどんな解釈が?
757:デフォルトの名無しさん
18/08/13 00:22:36.49 yY3qu6sZ.net
>>737
完全に恥ずかしい誤読しました。
758:デフォルトの名無しさん
18/08/13 04:38:57.55 z6+TJcGX.net
>>736
いいのかこんなんで?
cd /etc
grep localhost hosts
759:デフォルトの名無しさん
18/08/13 09:43:58.01 ux+ef9t8.net
>> 699 Ruby
実数、逆関数
URLリンク(ideone.com)
760:デフォルトの名無しさん
18/08/13 15:57:52.91 LVcLEl+f.net
>>736
訂正
お題:LANに繋がっているホストの一覧を出力しなさい
761:デフォルトの名無しさん
18/08/13 16:34:44.91 z6+TJcGX.net
>>742
Linux 等の UNIX 系OSで
ping -b ブロードキャストアドレス
とやると同じセグメントに繋がっているやつは ICMP ECHO を返して来て IP アドレスが分かるかも知れない。
但しファイヤーウォールの設定で返さないかも知れない。また他のセグメントにはパケット送らないのでわからない。
762:デフォルトの名無しさん
18/08/13 16:35:44.08 z6+TJcGX.net
あ、ごめん。これは IPv4 限定の話かも知れない。
763:デフォルトの名無しさん
18/08/17 15:41:32.33 N93NyTwd.net
身長と体重がいくつか与えられるのでBMIを求めなさい
なお身長と体重は1以上1000未満の整数とする
出力精度は小数第三位を四捨五入
各言語で一番短くかけた人が勝ち
例 ruby
while gets
end
# input
150 50
160 55
180 120
# output
764:デフォルトの名無しさん
18/08/17 15:47:03.36 N93NyTwd.net
ミスった。
単位は身長cm, 体重kg
例 ruby
while gets
h, w = $_.split.map &:to_i
puts '%.2f' % (1e4 * w / h**2)
end
# input
150 50
160 55
180 120
150 225
# output
22.22
21.48
37.04
100.00
765:デフォルトの名無しさん
18/08/17 17:20:36.25 6wrElEJt.net
URLリンク(ideone.com)
766:デフォルトの名無しさん
18/08/17 19:23:09.62 N93NyTwd.net
>>747
67Bまで縮めてみた
C
URLリンク(ideone.com)
767:デフォルトの名無しさん
18/08/17 21:08:30.56 7hC1UKUq.net
>>745
Perl
URLリンク(paiza.io)
普通ならダブルクォーテーション使いそうな箇所で qq() 使ってクォートしている理由は今Androidのタブレット使っててうまく入力出来なかったため。
768:デフォルトの名無しさん
18/08/17 23:22:41.44 eWaVkn5S.net
>>746
Python3で66バイト
URLリンク(ideone.com)
769:デフォルトの名無しさん
18/08/18 02:50:37.57 K3y6E3T8.net
鈴木貫太郎
灘中
URLリンク(youtu.be)
6桁の整数、ABCDEF の一番上の位のAを、
一の位へ移動した数、BCDEFA が、元の数の3倍になるとき、
この条件を満たす、元の数をすべて(2つ)答えよ
ヒント。x = BCDEF とおいて考える
答え、142857, 285714
770:
18/08/18 07:04:47.65 /9y7PjMS.net
>>751
n/7 循環列問題ですか…
771:デフォルトの名無しさん
18/08/18 15:32:13.56 h7OdrOPI.net
>>745
Ruby 43 bytes
#!ruby -pa
$_='%.2f'%eval('1e4/'+$F*'**2*')
>>751
3 * ABCDEF = BCDEFA ∧ A != 0
<=> 42857 * A = BCDEF ∧ A != 0
<=> 42857 * A = BCDEF ∧ A = 1, 2
<=> ABCDEF = 142857, 285714
772:デフォルトの名無しさん
18/08/19 01:16:27.70 tX8wxXbT.net
>>751 C(ただの力技)
URLリンク(ideone.com)
773:デフォルトの名無しさん
18/08/19 01:18:54.67 tX8wxXbT.net
お題:
1.BINGOカードを作る
2.BINGO抽選機を作る
ここで使われるビンゴカードは5x5のマス目に1から75までの数字が
ランダムに配置されており、数字が見つけやすいように左の列から
B列(1〜15), I列(16〜30), N列(31〜45), G列(46〜60), O列(61〜75)が
配置された一般的によく使われるタイプ。
5x5のマスの中央はFree(すでに開いた状態)。
出力例:URLリンク(ideone.com)
(この形に従う必要はないです)
回答例(C言語):
カード作成 URLリンク(ideone.com)
抽選機 URLリンク(ideone.com)
774:デフォルトの名無しさん
18/08/19 03:52:23.20 FQWxbBlW.net
>>751
Kotlin
URLリンク(paiza.io)
これも力業だな。ただループして調べているだけ。
尚、最上位桁が0の場合も含めると0も該当する値になる。
775:デフォルトの名無しさん
18/08/19 04:55:18.29 FQWxbBlW.net
>>755
Kotlin
カード作成 URLリンク(paiza.io)
抽選機 URLリンク(paiza.io)
776:デフォルトの名無しさん
18/08/20 02:30:06.13 V9a8ZDkH.net
>>755
Perl
カード生成 URLリンク(ideone.com)
抽選機 URLリンク(ideone.com)
777:UNIXプログラミング質問スレより
18/08/21 03:04:43.91 34Jmks75.net
お題:【構造のあるテキストの処理】各項目の内容をそれぞれソートして元のテキストに埋め込め。
====== 標準入力 ==========
* Fruit
apple
banana
orange
banana
* Animal
dog
cat
penguin
====== 標準出力 ==========
* Fruit
apple
banana
orange
* Animal
cat
dog
penguin
条件:ソートには外部コマンドを用いること。
778:758
18/08/21 03:11:53.68 34Jmks75.net
ソートに外部コマンドを使うのは、テキストの処理を取り替える拡張を想定しています。
例えば sort -u コマンドを tr '[a-z]' '[A-Z]' に置き換えて
* Fruit
APPLE
のようにできるようにしたい。
UNIXプログラミング質問スレにて、
このような処理はシェルスクリプトには荷が重く Powershell や Ruby が向いている、みたいなことを伺いました。
ぜひ回答を参考にしたいです。
779:デフォルトの名無しさん
18/08/21 14:35:58.26 2YpoFUMY.net
>>759 Ruby
ext_cmd = 'sort -u'
ary = $<.read.scan(/\*.*?\n(?:(?=\n)|\z)/m)
str = ary.map.with_index do |s, i|
temp_fname = "temp#{i}"
File.write(temp_fname, s[/\n\K.*/m])
heading = s[/\A.*/]
execed = `#{ext_cmd} #{temp_fname}`
File.delete(temp_fname)
[heading, execed] * $/
end
puts str * $/
780:デフォルトの名無しさん
18/08/21 14:40:47.02 2YpoFUMY.net
catを使うように修正
catのヒアドキュメントさえ使えれば一時ファイル作らなくて済むんだけど
ext_cmd = 'tr a-z A-Z'
ary = $<.read.scan(/\*.*?\n(?:(?=\n)|\z)/m)
str = ary.map.with_index do |s, i|
temp_fname = "temp#{i}"
File.write(temp_fname, s[/\n\K.*/m])
heading = s[/\A.*/]
execed = `cat #{temp_fname}|#{ext_cmd}`
File.delete(temp_fname)
[heading, execed] * $/
end
puts str * $/
781:デフォルトの名無しさん
18/08/22 01:46:46.02 wb9Zg9xS.net
>>759
Perl
URLリンク(paiza.io)
項目の区切りは連続した2つの改行になってます。
782:デフォルトの名無しさん
18/08/22 01:56:27.69 PmiUKg2L.net
>>759 zsh
setopt rcquotes; sed -n '/^*/h; /^*/!{x;p;x;p;}' | paste - - \
| awk -F' ' -v OFS=' ' '$2 { print $1,$2 } ! $2 { printf "%c",0 }' \
| xargs -0 -n 1 -I@ -- zsh -c 'echo ''@'' | tee >(read -e | cut -f 1) | sed ''$d;'' | cut -f 2 | sort -u ;echo'
null区切りでチャンク分け。構造がもっと複雑になるとこの方針では対応できない。
783:デフォルトの名無しさん
18/08/22 03:09:32.13 wb9Zg9xS.net
>>759
bash
URLリンク(paiza.io)
784:デフォルトの名無しさん
18/08/22 04:46:03.18 h82tfzI1.net
単純に、別々のファイルに、分割すれば良いのでは?
* Fruit のファイル
* Animal のファイル
各ファイルを、sort, unique する
785:765
18/08/22 05:05:39.72 h82tfzI1.net
一旦、別々のファイルにしたなら、PowerShell で、
cat .\test.txt | sort | gu
gu は、Get-Unique のエイリアス。
漏れのPowerShell では、uniq のエイリアスは使えない
786:デフォルトの名無しさん
18/08/22 08:57:59.02 AfGRGNs6.net
このスレでbashが多いのは何故?
787:デフォルトの名無しさん
18/08/22 09:06:48.94 AfGRGNs6.net
今見返したらそんなに多くなかった‥
788:デフォルトの名無しさん
18/08/22 09:44:37.32 zudhoHB+.net
>>768
Linuxのディストリビューションでは最初からインストールされてるのがよくあってある程度有名で、sh互換でshしか知らなくても書けるからではないかな。
それとWebの実行環境があるというのも理由かも。こういう所で公開するのには都合が良い。
789:デフォルトの名無しさん
18/08/22 12:27:54.30 AfGRGNs6.net
>>770
そうなんですね!
みんなの回答見てると正規表現や少ないコードや難しい表現でコーディングできてて関心します‥
自分にはとても到達出来ない‥
790:泣gの名無しさん
18/08/22 15:46:06.44 PmiUKg2L.net
>>759 zsh
setopt rcquotes; sed -E -e 's:^(\* .*):{ echo ''\1''; sort -u; echo } << *:' -e 's:^$:*:' | zsh
xargsの区切り文字の辛さからは開放されたが、echo ''\1'' がイマイチだ。
なるほど、構造のあるデータはむしろファイル階層として表現したほうが自然か…
791:デフォルトの名無しさん
18/08/22 23:06:19.28 YlEU3d3x.net
>>759 Vim
$ cat odai-pt11-758.input | vim -es '+:g /\%(^\*.*\n\)\@<=/,/[ \t\n]*\%(\n\*.*\|\%$\)/ !sort | tr a-z A-Z | nl' '+%p' '+:q!' /dev/stdin
* Fruit
1 APPLE
2 BANANA
3 BANANA
4 ORANGE
* Animal
1 CAT
2 DOG
3 PENGUIN
$
792:デフォルトの名無しさん
18/08/22 23:55:42.77 h82tfzI1.net
64ビットWindows10 なら、WSL で、Ubuntu を入れると、
bash, vim, Python は最初から入っている
WindowsのExplorer では、BOMなしUTF-8 のファイルは検索できないから、
WSL でLinux側から、grep で検索している
シェルスクリプトの欠点は、パイプラインがテキスト渡しになる。
オブジェクトの型が無くなって、すべて文字列になる
一方、PowerShell ではオブジェクト渡しだから、オブジェクトの構造・型が維持できる
>>759-760
外部コマンドを切り替えるという抽象的な処理を、処理間にはさむのは難しい。
すべての処理の冒頭か最後で、一括でフィルターする方がバグらない
793:デフォルトの名無しさん
18/08/23 00:19:08.54 FMBOl46f.net
>>774
なるほど…
Powershellでの完全な回答例を見せていただけませんか?
標準入力からファイルに落として出力に吐くまで。オブジェクト渡しの雰囲気を感じたいです。
794:765
18/08/23 09:28:38.07 qUZ5eK5Q.net
Set-PSDebug -Strict # 変数宣言を強制する
$file = ( cat in.txt ) # 入力ファイル
$dat_basenames = @() # 拡張子なしのファイル名の配列
foreach ( $line in $file ) { # 各行
if( $line.Length -eq 0 ){ continue } # 空行は処理しない
if ( $line.Substring( 0, 1 ) -eq '*' ) { # 1文字目が、* なら
$fname = $line.Substring( 2 )
$dat_basenames += $fname # 追加
$fname += '.dat' # 拡張子つき
} else {
Add-Content $fname $line # 追記
}
}
foreach ( $dbname in $dat_basenames ) { # 各 .dat ファイル
$fname = $dbname + '.dat' # 拡張子つき
$str = "* ${dbname}`r`n"
$tmp = cat $fname | sort | gu # sort, unique
$str += ( $tmp -join "`r`n" ) # 改行区切り
echo $str
}
PowerShell で作った。
cd で、作業フォルダへ移動してから実行して
入力ファイル、in.txt から、各ファイルへ分割する。
分割後のファイル名を、Fruit.dat, Animal.dat として、各ファイルを処理した
795:デフォルトの名無しさん
18/08/24 05:00:24.02 QxK4Y8yu.net
点が10個一直線に並んでおり、各点が他の点との右方向の距離をいくつか知っている時、最も左にある点を求めよ
最も左にある点が求められない時はあと何の情報があれば求められるのかを最低個数で列挙すること
例1
a,b,cの点がある。
a点はb点が30右にあることを知っている。
b点は何も知らない。
c点はb点が-40右にあることをしっている。
結果
最も左にある点はa点
例2
a,b,c,dの点がある。
a点はb点が30右にあることを知っている。
b点は何も知らない
c点はd点が20右にあることを知っている。
d点は何も知らない。
結果
求められない。必要な情報は
a点からc点までの距離
796:デフォルトの名無しさん
18/08/24 05:58:44.74 rBPgXHvS.net
>>777
実際に自分で書いてみて、求められたら解答例を提示できる?
797:デフォルトの名無しさん
18/08/24 08:02:12.41 ZkSPfVdV.net
「知っている」の主語が点に見えるけど
そうじゃないよね?
なんでそういう文にしたの?
798:デフォルトの名無しさん
18/08/24 10:33:50.94 phPhGhWW.net
連結リストを使って、出来上がったグラフが連結なら求められる
つまり、出来上がったグラフが二つ三つそれ以上に分かれている非連結グラフになってると、距離は分からない
……直感的には多分こうだが、何かしらの証明は必要
「連結グラフだが距離が分からない」反例があればいい
799:デフォルトの名無しさん
18/08/24 11:28:11.41 qtSNV1ih.net
>>777
点が10個あるなら例1,2両方とも判断不能。どっちもあと最低7個必要
しかも直線がRなのかR∪∞∪-∞なのかで解が変わるから提示しろ
あと出力はともかくデータの与えられ方くらい提示しろ
800:765
18/08/24 12:34:38.87 ZgK6e0Tb.net
text = File.read 'in.txt' # 入力ファイル
header = ""
str_hash = { }
result = [ ]
def sort_string ( head, hash, res )
res.push head
Hash[ hash.sort ].each_key { |key| res.push key } # sort
hash.clear # 空にする
end
text.each_line do |line| # 各行
line.chomp! # 末尾の改行を削除する
next if line.empty? # 空文字は処理しない
if line.start_with? '*' # 先頭文字が、* なら
sort_string( header, str_hash, result ) unless str_hash.empty? # 空でなければ
header = line
else
str_hash[ line ] = true
end
end
sort_string( header, str_hash, result )
puts result
Ruby で作った。
PowerShell よりは断然、作りやすい。
ただ、sort_string( ) を2か所で呼ぶのが、ダサイ
801:デフォルトの名無しさん
18/08/25 17:43:06.40 nE7N9dPk.net
お題
将棋の初期状態の駒40枚を
利き筋に他の駒がないように配置する
802:デフォルトの名無しさん
18/08/25 20:05:04.08 486ljwsa.net
1000垓通り表示しろとでも?
803:デフォルトの名無しさん
18/08/25 20:45:34.12 WT6GNhg9.net
明記されてない条件は好きにしていいのがこのスレのルールですよ
804:デフォルトの名無しさん
18/08/25 20:55:52.54 N/q1MSK+.net
お題を出す前に出題者は自分の解答を(解くことが可能かの確認も兼ね)作っておくのもルールだ
適切な入出力例や問題文にあるべき条件が抜けてるっていうのはそれをやってない証拠
805:デフォルトの名無しさん
18/08/25 22:57:36.63 yggGxXGy.net
>>783
有名な作品がいくつかあるね
全て同じ方向を向いたヤツも
>>784
全ての組み合わせを数えた人がいるの?
806:デフォルトの名無しさん
18/08/26 08:39:25.15 8NHhsyIb.net
トランプの配置についてのアルゴリズムを考えてます。
トランプの横幅をX
トランプの高さをYとし
並べるトランプは偶数枚
全てのトランプを配置した時の全体を、トランプ配置と呼ぶとして
トランプ配置の横幅と縦幅の割合を、おおよそX:Yとしたい
この場合、アルゴリズムはどう考えたらいいでしょうか?
807:デフォルトの名無しさん
18/08/26 09:35:40.65 /JFPzkHn.net
ゴリ押しの総当たり
並べる枚数横にx縦にyが無尽蔵に大きくなれば比率に近づく
並べるトランプの上限が決まって無くて偶数枚だけが条件なら延々と並べる枚数を増やせばいい
一兆枚くらい並べれば比率はX/Yに近づく
1000000000億兆枚くらいのトランプを使えば横幅X高さYなんて充分に蟲出来るから全体の割合を調整するのは枚数が多ければ多いほどラク
10那由多ほど並べれば、本当にカードは点くらいなもので、縦横比率はx、yの枚数だけで決まる
808:デフォルトの名無しさん
18/08/26 09:52:42.49 O9adGcKd.net
>>788
おおよそとかいまいちよくわからん
例を示して
809:デフォルトの名無しさん
18/08/26 09:59:10.89 O9adGcKd.net
>>789
バカなの?
> 並べるトランプの上限が決まって無くて偶数枚だけが条件
なら、縦横2枚ずつ(計4枚)並べればいいだけ
810:デフォルトの名無しさん
18/08/26 11:08:57.34 MXsSoN4T.net
n枚をnX nYの長方形の対角線上に斜めにならべれば
X:Yになるけど
問題あってる?
811:デフォルトの名無しさん
18/08/26 13:16:22.70 HHP/3bjy.net
>>788
┌─┐
│ ?│
└─┘
これを偶数枚並べて縦横比同じにするなら
こうだよね
↓
┌─┬─┐
│ ?│ ?│
├─┼─┤
│ ?│ ?│
└─┴─┘
アルゴリズムもクソもないように思うのだが?
問題の書き方間違ってない?
812:デフォルトの名無しさん
18/08/26 13:22:25.82 6zIp6UvA.net
さすがに、
枚数は外から与えられるのでは?
813:デフォルトの名無しさん
18/08/26 16:57:45.44 2xrJOS4Z.net
枚数nに対して p * q = n を満たす正の整数 p, q の内 |p - q| / |p^2 + q^2| が最小になる組み合わせを求めるだけでしょ?
814:
18/08/26 23:44:29.53 TLwXHnMN.net
スレリンク(tech板:981番)
に引き続いて、現に困ってしまった問題を出題
windows コマンドラインの xcopy コマンドを実装せよ
コマンドラインから「xcopy パス1 パス2」 と入力すると
パス1 以下にあるファイルをすべてパス2以下にコピーするようにせよ
ディレクトリについては、再帰的にコピーせよ
・現実の xcopy コマンドには色々なオプションがあるが、それは実装しなくてもよい
・読み込み対象のファイルの属性については考慮しなくてよい、読み込めるファイルのみ所定のパスにコピーできればそれでよい
・その他、コピーに問題のある状態が発生したときには、標準エラー出力にエラー内容を表示すればそれでいい
Windows Update の度にPCが激遅になるのに堪えかねて、C ドライブを SSD に換えることにしました。OS は再度インストールしなおすつもりです。
現在の C ドライブの内容は別途コピーしておいて、困ったときには参照できるようにしたいと思いました。
ところが、「xcopy c: x:/tmp」とすると、「メモリーが足りなくなった」といって途中で止まるのです…困りました…
815:
18/08/26 23:57:13.93 TLwXHnMN.net
>>796
条件を追加します
ハードリンクやシンボリックリンクは考えなくともよい
xcopy パス1 パス2
のパス2 がパス1 の下にある場合、実装がまずいと永遠にコピーし続ける困ったことになるが、それも考慮しなくてもよい
(今回やりたいことは、「xcopy c: x:/tmp」であるので、これが問題なく動けばそれでよい…)
816:デフォルトの名無しさん
18/08/27 00:30:49.02 FMLlc3nv.net
お金くれたら書くよ
817:
18/08/27 00:37:15.85 W4qvSHyH.net
>>798
ビットコインではいかがでしょう?
818:デフォルトの名無しさん
18/08/27 03:58:54.01 EFFRlxLO.net
>>796
URLリンク(qiita.com)
xcopy メモリで検索したらこんなページ出たがこれじゃあかんと?
819:デフォルトの名無しさん
18/08/27 10:42:11.16 ywsjsNTA.net
>>796
Windowsならエクスプローラ使ってただコピーするのでは何か不都合があるのか?
まあ、お題としてそういうのなしで作れというのはアリだが、なんとなくWindowsの場合はエクスプローラが使っているのと同じライブラリ関数を一回呼び出すだけで終わってしまいそうな気がしてならない。
820:デフォルトの名無しさん
18/08/27 11:41:58.10 ba8BcfX3.net
xcopy ではなく、robocopy を使えば?
821:デフォルトの名無しさん
18/08/27 21:06:25.46 wliJqEsP.net
>>793
他の人も勘違いしてるけど、横縦比をx:yにする問題だよ。おおよそらしいけど。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
2052日前に更新/313 KB
担当:undef