プログラミングのお題スレです。
前スレ
プログラミングのお題スレ Part10
https://mevius.5ch.net/test/read.cgi/tech/1514772904/
【出題と回答例】
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/
宿題は宿題スレがあるのでそちらへ。
探検
プログラミングのお題スレ Part11
■ このスレッドは過去ログ倉庫に格納されています
2018/04/24(火) 20:45:14.49ID:ZY7R7Sru
680デフォルトの名無しさん
2018/07/27(金) 19:00:06.01ID:2ZGMtSH+681デフォルトの名無しさん
2018/07/27(金) 19:20:13.92ID:KWveLgZ0 ご自由にどうぞ
682デフォルトの名無しさん
2018/07/27(金) 20:32:22.83ID:2Zd5WnL8 難しそうだが良いお題だな
こういうお題を考えられるようになりたい
こういうお題を考えられるようになりたい
683デフォルトの名無しさん
2018/07/28(土) 12:28:46.99ID:SHZi2qln まずは数学から入るか
中心つき六角数 - 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
中心つき六角数 - 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
684デフォルトの名無しさん
2018/07/29(日) 08:56:47.82ID:ngHwAmGC >>680
nの大きさに合わせて-の数を決めれば、歪にならないと思うよ。
nの大きさに合わせて-の数を決めれば、歪にならないと思うよ。
685597
2018/07/29(日) 11:00:51.11ID:g8Q1VsuY686デフォルトの名無しさん
2018/07/29(日) 13:36:35.25ID:MuGsWv1+687デフォルトの名無しさん
2018/07/29(日) 17:52:03.38ID:uE0dE1bw 出題者は自分で書けるのを一度確認してから出題してほしいわ
688デフォルトの名無しさん
2018/08/01(水) 15:14:43.83ID:2n7XGxji お題:パソコンのCPU温度を表示せよ
689デフォルトの名無しさん
2018/08/01(水) 15:31:54.60ID:3rDDnIHy ちょっと待ってね。温度計持ってくるから。
690デフォルトの名無しさん
2018/08/01(水) 19:12:40.95ID:hJYNlAh1 >>688 BF
+>+<-][+[->+[+>-<]<]<+[>+[.>]-]-]
+>+<-][+[->+[+>-<]<]<+[>+[.>]-]-]
691デフォルトの名無しさん
2018/08/01(水) 20:57:33.89ID:WDXOLOCv692デフォルトの名無しさん
2018/08/02(木) 00:18:21.78ID:vClc7nAi >>688
awk
Linux 用
awk '{printf "%.3f℃n", $1 / 1000}' /sys/class/thermal/thermal_zone0/temp
実行例
56.000℃
awk
Linux 用
awk '{printf "%.3f℃n", $1 / 1000}' /sys/class/thermal/thermal_zone0/temp
実行例
56.000℃
693デフォルトの名無しさん
2018/08/02(木) 01:04:29.34ID:vClc7nAi あれ?\n が抜けた。
これね。
awk '{printf "%.3f℃\n", $1 / 1000}' /sys/class/thermal/thermal_zone0/temp
これね。
awk '{printf "%.3f℃\n", $1 / 1000}' /sys/class/thermal/thermal_zone0/temp
694デフォルトの名無しさん
2018/08/02(木) 02:37:36.98ID:aTwsiZBG695デフォルトの名無しさん
2018/08/02(木) 19:31:00.50ID:zwgkA1lD 8888
696デフォルトの名無しさん
2018/08/10(金) 02:32:41.77ID:3Gbr2Rmh 鈴木貫太郎
灘中 中学入試問題シリーズ 整数問題
https://youtu.be/98U2qVDQltc
6桁の整数、5AB,C15 が999 の倍数である時、ABC を求めよ
答え
A=8, B=4, C=4
灘中 中学入試問題シリーズ 整数問題
https://youtu.be/98U2qVDQltc
6桁の整数、5AB,C15 が999 の倍数である時、ABC を求めよ
答え
A=8, B=4, C=4
697デフォルトの名無しさん
2018/08/10(金) 02:38:30.89ID:4W08/YUW 数学板でやれ
698デフォルトの名無しさん
2018/08/10(金) 04:25:49.65ID:MBG3l1c9699デフォルトの名無しさん
2018/08/10(金) 04:27:27.01ID:MBG3l1c9 お題:与えられた正の整数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
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
701デフォルトの名無しさん
2018/08/10(金) 10:02:14.32ID:GIxLf6/p702デフォルトの名無しさん
2018/08/10(金) 10:56:59.12ID:EBuB6o8O >>696
何も考えてないPerlのワンライナー
perl -e 'for(0..999){$n=sprintf"5%03d15",$_;if($n%999==0){print"$n\n"}}'
584415
何も考えてないPerlのワンライナー
perl -e 'for(0..999){$n=sprintf"5%03d15",$_;if($n%999==0){print"$n\n"}}'
584415
703デフォルトの名無しさん
2018/08/10(金) 11:16:24.27ID:EBuB6o8O >>699
Linux等で動くGNUのbcコマンド
プログラムをファイルに入れておいてbcの引数で指定し、変換させたい数値は標準入力から読ませる。
ibase = 10
n = read()
for (i = 2; i <= 16; i++) {
obase = 10
print "base(", i, ") --> "
obase = i
print n, "\n"
}
Linux等で動くGNUのbcコマンド
プログラムをファイルに入れておいてbcの引数で指定し、変換させたい数値は標準入力から読ませる。
ibase = 10
n = read()
for (i = 2; i <= 16; i++) {
obase = 10
print "base(", i, ") --> "
obase = i
print n, "\n"
}
704デフォルトの名無しさん
2018/08/10(金) 11:38:51.00ID:EBuB6o8O705デフォルトの名無しさん
2018/08/10(金) 14:15:41.82ID:xmypHVHY706デフォルトの名無しさん
2018/08/10(金) 14:48:17.70ID:MBG3l1c9 >>700
既出でしたか 失礼しました
では追加でもう1つ
お題:
時間を表わす文字列(hh:mm:ss形式の8文字)の秒数を求める
最上位の時間だけは99時間を超えた場合拡張される
例:123時間45分6秒 ---> 123:45:06
出力例:
01:23:45 = 5025 sec
333:33:33 = 1200813 sec
出題者の回答例:C言語 https://ideone.com/pnrcQ6
既出でしたか 失礼しました
では追加でもう1つ
お題:
時間を表わす文字列(hh:mm:ss形式の8文字)の秒数を求める
最上位の時間だけは99時間を超えた場合拡張される
例:123時間45分6秒 ---> 123:45:06
出力例:
01:23:45 = 5025 sec
333:33:33 = 1200813 sec
出題者の回答例:C言語 https://ideone.com/pnrcQ6
707デフォルトの名無しさん
2018/08/10(金) 17:50:01.60ID:q2LOavXt708デフォルトの名無しさん
2018/08/10(金) 17:57:07.00ID:q2LOavXt709デフォルトの名無しさん
2018/08/10(金) 18:25:42.14ID:q2LOavXt710デフォルトの名無しさん
2018/08/10(金) 18:30:15.99ID:GIxLf6/p >>706 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
#!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
711デフォルトの名無しさん
2018/08/10(金) 18:40:53.56ID:splKqZqj712709
2018/08/10(金) 19:22:50.97ID:q2LOavXt >>711
あ、そうか。その方が簡単だな。
あ、そうか。その方が簡単だな。
お題:10兆までの素数のリストを作ってみませんか?
https://tech.nikkeibp.co.jp/it/article/Watcher/20100519/348242/
条件:既存のライブラリ、モジュール、外部コマンド等を利用するのは不可
すべて自分で記述すること
int64_t, uint64_t の使用は許可する
https://tech.nikkeibp.co.jp/it/article/Watcher/20100519/348242/
条件:既存のライブラリ、モジュール、外部コマンド等を利用するのは不可
すべて自分で記述すること
int64_t, uint64_t の使用は許可する
714デフォルトの名無しさん
2018/08/11(土) 00:01:26.30ID:DgZEeL87 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
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
715デフォルトの名無しさん
2018/08/11(土) 02:38:16.74ID:7kLiHGgf >>713
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++;
}
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++;
}
716デフォルトの名無しさん
2018/08/11(土) 03:54:44.08ID:QfTJwHhj >>713 Ruby
10兆なら改良されたAtkinの篩を使ってガシガシやるしかないだろう
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.192.4926&rep=rep1&type=pdf
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
10兆なら改良されたAtkinの篩を使ってガシガシやるしかないだろう
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.192.4926&rep=rep1&type=pdf
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
717デフォルトの名無しさん
2018/08/11(土) 07:04:06.66ID:N9ICkOCi718デフォルトの名無しさん
2018/08/11(土) 07:37:04.51ID:N9ICkOCi みつかりました
そんなに昔じゃなかった
2年半前
41兆くらいまで求めてます
マルチスレッドではありませんでした
処理内容はよく覚えていません
素数表作成
ビットパターン作成
ふるい
のようなコメントがあります
105単位でなにかやってます
そんなに昔じゃなかった
2年半前
41兆くらいまで求めてます
マルチスレッドではありませんでした
処理内容はよく覚えていません
素数表作成
ビットパターン作成
ふるい
のようなコメントがあります
105単位でなにかやってます
719デフォルトの名無しさん
2018/08/11(土) 09:37:18.90ID:y6G1YdWM だんだん思い出してきました
6n+1, 6n+5 に対応するビット列を保持
小さな素数の倍数はマスクを作ってAVX命令でANDしていって
大きな素数の倍数はp(210n+48個の値) にしぼって
ビット命令でひたすらふるう感じ
キャッシュサイズを考えて小さなバッファでやってます
6n+1, 6n+5 に対応するビット列を保持
小さな素数の倍数はマスクを作ってAVX命令でANDしていって
大きな素数の倍数はp(210n+48個の値) にしぼって
ビット命令でひたすらふるう感じ
キャッシュサイズを考えて小さなバッファでやってます
720デフォルトの名無しさん
2018/08/11(土) 16:27:34.72ID:VD7zYIqC いいからコード貼れや
721デフォルトの名無しさん
2018/08/12(日) 13:15:41.49ID:DNU8qmV7 お題:
ロト6で申込数字のいずれかが必ず5等以上に当選する
最小の申込数字の組み合わせを作ってください
ロト6は01〜43の数字から異なる数字6個を順番不問で選び
申込数字6個のうち3個以上が本数字と一致すれば5等以上に当選となります
ロト6で申込数字のいずれかが必ず5等以上に当選する
最小の申込数字の組み合わせを作ってください
ロト6は01〜43の数字から異なる数字6個を順番不問で選び
申込数字6個のうち3個以上が本数字と一致すれば5等以上に当選となります
722デフォルトの名無しさん
2018/08/12(日) 14:21:49.33ID:ZHEExUj+723デフォルトの名無しさん
2018/08/12(日) 14:57:56.60ID:1gNSypiF >>722
それを聞いてどうするの?
それを聞いてどうするの?
724デフォルトの名無しさん
2018/08/12(日) 15:09:35.79ID:ZHEExUj+ >>723
1〜5等に該当するならば必ず当選番号と同じ数字が少なくとも3つ入っているということがはっきりしない限り解けないでしょ
1〜5等に該当するならば必ず当選番号と同じ数字が少なくとも3つ入っているということがはっきりしない限り解けないでしょ
725デフォルトの名無しさん
2018/08/12(日) 15:11:11.96ID:ZHEExUj+ ごめん
申込数字6個のうち3個以上が本数字と一致すれば5等以上に当選となります
を
申込数字6個のうち3個以上が本数字と一致すれば5等に当選となります
と読み間違えてたわ
申込数字6個のうち3個以上が本数字と一致すれば5等以上に当選となります
を
申込数字6個のうち3個以上が本数字と一致すれば5等に当選となります
と読み間違えてたわ
726デフォルトの名無しさん
2018/08/12(日) 15:14:32.85ID:1gNSypiF727デフォルトの名無しさん
2018/08/12(日) 15:17:25.19ID:ZHEExUj+ >>726
同値だよ
同値だよ
728デフォルトの名無しさん
2018/08/12(日) 15:22:10.21ID:O4fOyJLk 15万個くらいの数字を吐き出して終わり?
729デフォルトの名無しさん
2018/08/12(日) 15:26:16.88ID:1gNSypiF730デフォルトの名無しさん
2018/08/12(日) 15:29:22.68ID:1gNSypiF731デフォルトの名無しさん
2018/08/12(日) 15:39:13.61ID:ZHEExUj+732デフォルトの名無しさん
2018/08/12(日) 17:47:14.42ID:9O3GHV+n >>706 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 "
('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 "
733デフォルトの名無しさん
2018/08/12(日) 18:43:07.08ID:9O3GHV+n >>713 Squeak/Pharo Smalltalk で 100億まで
| count |
count := 0.
Integer primesUpTo: 1e10 do: [:prime | count := count + 1].
count '=> 455052511 '
組み込みだけど、書くとしても同じアルゴリズムで書くと思うので…
https://ideone.com/zKMZYx
| count |
count := 0.
Integer primesUpTo: 1e10 do: [:prime | count := count + 1].
count '=> 455052511 '
組み込みだけど、書くとしても同じアルゴリズムで書くと思うので…
https://ideone.com/zKMZYx
734デフォルトの名無しさん
2018/08/12(日) 21:48:09.01ID:cX8lnXZC >>721 C++
https://ideone.com/gCsPec
コンビネーション使う方法と、確率DPの二通りでやってみた。
(ちなみに5個当り222本は 6本が2等で、216本が3等)
※確率、期待値系は苦手だ
https://ideone.com/gCsPec
コンビネーション使う方法と、確率DPの二通りでやってみた。
(ちなみに5個当り222本は 6本が2等で、216本が3等)
※確率、期待値系は苦手だ
735デフォルトの名無しさん
2018/08/12(日) 21:51:28.06ID:AkqOEQdA お題:ローカルホストの一覧を出力しなさい
736デフォルトの名無しさん
2018/08/12(日) 23:20:11.13ID:YPN3vVTA737デフォルトの名無しさん
2018/08/12(日) 23:45:52.09ID:3JJNsMDc それ以外にどんな解釈が?
738デフォルトの名無しさん
2018/08/13(月) 00:22:36.49ID:yY3qu6sZ >>736
完全に恥ずかしい誤読しました。
完全に恥ずかしい誤読しました。
739デフォルトの名無しさん
2018/08/13(月) 04:38:57.55ID:z6+TJcGX740デフォルトの名無しさん
2018/08/13(月) 09:43:58.01ID:ux+ef9t8741デフォルトの名無しさん
2018/08/13(月) 15:57:52.91ID:LVcLEl+f742デフォルトの名無しさん
2018/08/13(月) 16:34:44.91ID:z6+TJcGX >>741
Linux 等の UNIX 系OSで
ping -b ブロードキャストアドレス
とやると同じセグメントに繋がっているやつは ICMP ECHO を返して来て IP アドレスが分かるかも知れない。
但しファイヤーウォールの設定で返さないかも知れない。また他のセグメントにはパケット送らないのでわからない。
Linux 等の UNIX 系OSで
ping -b ブロードキャストアドレス
とやると同じセグメントに繋がっているやつは ICMP ECHO を返して来て IP アドレスが分かるかも知れない。
但しファイヤーウォールの設定で返さないかも知れない。また他のセグメントにはパケット送らないのでわからない。
743デフォルトの名無しさん
2018/08/13(月) 16:35:44.08ID:z6+TJcGX あ、ごめん。これは IPv4 限定の話かも知れない。
744デフォルトの名無しさん
2018/08/17(金) 15:41:32.33ID:N93NyTwd 身長と体重がいくつか与えられるのでBMIを求めなさい
なお身長と体重は1以上1000未満の整数とする
出力精度は小数第三位を四捨五入
各言語で一番短くかけた人が勝ち
例 ruby
while gets
end
# input
150 50
160 55
180 120
# output
なお身長と体重は1以上1000未満の整数とする
出力精度は小数第三位を四捨五入
各言語で一番短くかけた人が勝ち
例 ruby
while gets
end
# input
150 50
160 55
180 120
# output
745デフォルトの名無しさん
2018/08/17(金) 15:47:03.36ID:N93NyTwd ミスった。
単位は身長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
単位は身長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
746デフォルトの名無しさん
2018/08/17(金) 17:20:36.25ID:6wrElEJt747デフォルトの名無しさん
2018/08/17(金) 19:23:09.62ID:N93NyTwd748デフォルトの名無しさん
2018/08/17(金) 21:08:30.56ID:7hC1UKUq >>744
Perl
https://paiza.io/projects/4DM4_8fx_EiOXO4D3aOV4A
普通ならダブルクォーテーション使いそうな箇所で qq() 使ってクォートしている理由は今Androidのタブレット使っててうまく入力出来なかったため。
Perl
https://paiza.io/projects/4DM4_8fx_EiOXO4D3aOV4A
普通ならダブルクォーテーション使いそうな箇所で qq() 使ってクォートしている理由は今Androidのタブレット使っててうまく入力出来なかったため。
749デフォルトの名無しさん
2018/08/17(金) 23:22:41.44ID:eWaVkn5S750デフォルトの名無しさん
2018/08/18(土) 02:50:37.57ID:K3y6E3T8 鈴木貫太郎
灘中
https://youtu.be/BnS7vMsVV2s
6桁の整数、ABCDEF の一番上の位のAを、
一の位へ移動した数、BCDEFA が、元の数の3倍になるとき、
この条件を満たす、元の数をすべて(2つ)答えよ
ヒント。x = BCDEF とおいて考える
答え、142857, 285714
灘中
https://youtu.be/BnS7vMsVV2s
6桁の整数、ABCDEF の一番上の位のAを、
一の位へ移動した数、BCDEFA が、元の数の3倍になるとき、
この条件を満たす、元の数をすべて(2つ)答えよ
ヒント。x = BCDEF とおいて考える
答え、142857, 285714
>>750
n/7 循環列問題ですか…
n/7 循環列問題ですか…
752デフォルトの名無しさん
2018/08/18(土) 15:32:13.56ID:h7OdrOPI753デフォルトの名無しさん
2018/08/19(日) 01:16:27.70ID:tX8wxXbT754デフォルトの名無しさん
2018/08/19(日) 01:18:54.67ID:tX8wxXbT お題:
1.BINGOカードを作る
2.BINGO抽選機を作る
ここで使われるビンゴカードは5x5のマス目に1から75までの数字が
ランダムに配置されており、数字が見つけやすいように左の列から
B列(1〜15), I列(16〜30), N列(31〜45), G列(46〜60), O列(61〜75)が
配置された一般的によく使われるタイプ。
5x5のマスの中央はFree(すでに開いた状態)。
出力例:https://ideone.com/R6eADP
(この形に従う必要はないです)
回答例(C言語):
カード作成 https://ideone.com/aJBJ9v
抽選機 https://ideone.com/NuIRYm
1.BINGOカードを作る
2.BINGO抽選機を作る
ここで使われるビンゴカードは5x5のマス目に1から75までの数字が
ランダムに配置されており、数字が見つけやすいように左の列から
B列(1〜15), I列(16〜30), N列(31〜45), G列(46〜60), O列(61〜75)が
配置された一般的によく使われるタイプ。
5x5のマスの中央はFree(すでに開いた状態)。
出力例:https://ideone.com/R6eADP
(この形に従う必要はないです)
回答例(C言語):
カード作成 https://ideone.com/aJBJ9v
抽選機 https://ideone.com/NuIRYm
755デフォルトの名無しさん
2018/08/19(日) 03:52:23.20ID:FQWxbBlW >>750
Kotlin
https://paiza.io/projects/BFd9v2qeKaNcdssTQuj5Jw
これも力業だな。ただループして調べているだけ。
尚、最上位桁が0の場合も含めると0も該当する値になる。
Kotlin
https://paiza.io/projects/BFd9v2qeKaNcdssTQuj5Jw
これも力業だな。ただループして調べているだけ。
尚、最上位桁が0の場合も含めると0も該当する値になる。
756デフォルトの名無しさん
2018/08/19(日) 04:55:18.29ID:FQWxbBlW757デフォルトの名無しさん
2018/08/20(月) 02:30:06.13ID:V9a8ZDkH2018/08/21(火) 03:04:43.91ID:34Jmks75
お題:【構造のあるテキストの処理】各項目の内容をそれぞれソートして元のテキストに埋め込め。
====== 標準入力 ==========
* Fruit
apple
banana
orange
banana
* Animal
dog
cat
penguin
====== 標準出力 ==========
* Fruit
apple
banana
orange
* Animal
cat
dog
penguin
条件:ソートには外部コマンドを用いること。
====== 標準入力 ==========
* Fruit
apple
banana
orange
banana
* Animal
dog
cat
penguin
====== 標準出力 ==========
* Fruit
apple
banana
orange
* Animal
cat
dog
penguin
条件:ソートには外部コマンドを用いること。
759758
2018/08/21(火) 03:11:53.68ID:34Jmks75 ソートに外部コマンドを使うのは、テキストの処理を取り替える拡張を想定しています。
例えば sort -u コマンドを tr '[a-z]' '[A-Z]' に置き換えて
* Fruit
APPLE
のようにできるようにしたい。
UNIXプログラミング質問スレにて、
このような処理はシェルスクリプトには荷が重く Powershell や Ruby が向いている、みたいなことを伺いました。
ぜひ回答を参考にしたいです。
例えば sort -u コマンドを tr '[a-z]' '[A-Z]' に置き換えて
* Fruit
APPLE
のようにできるようにしたい。
UNIXプログラミング質問スレにて、
このような処理はシェルスクリプトには荷が重く Powershell や Ruby が向いている、みたいなことを伺いました。
ぜひ回答を参考にしたいです。
760デフォルトの名無しさん
2018/08/21(火) 14:35:58.26ID:2YpoFUMY >>758 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 * $/
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 * $/
761デフォルトの名無しさん
2018/08/21(火) 14:40:47.02ID:2YpoFUMY 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 * $/
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 * $/
762デフォルトの名無しさん
2018/08/22(水) 01:46:46.02ID:wb9Zg9xS763デフォルトの名無しさん
2018/08/22(水) 01:56:27.69ID:PmiUKg2L >>758 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区切りでチャンク分け。構造がもっと複雑になるとこの方針では対応できない。
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区切りでチャンク分け。構造がもっと複雑になるとこの方針では対応できない。
764デフォルトの名無しさん
2018/08/22(水) 03:09:32.13ID:wb9Zg9xS765デフォルトの名無しさん
2018/08/22(水) 04:46:03.18ID:h82tfzI1 単純に、別々のファイルに、分割すれば良いのでは?
* Fruit のファイル
* Animal のファイル
各ファイルを、sort, unique する
* Fruit のファイル
* Animal のファイル
各ファイルを、sort, unique する
766765
2018/08/22(水) 05:05:39.72ID:h82tfzI1 一旦、別々のファイルにしたなら、PowerShell で、
cat .\test.txt | sort | gu
gu は、Get-Unique のエイリアス。
漏れのPowerShell では、uniq のエイリアスは使えない
cat .\test.txt | sort | gu
gu は、Get-Unique のエイリアス。
漏れのPowerShell では、uniq のエイリアスは使えない
767デフォルトの名無しさん
2018/08/22(水) 08:57:59.02ID:AfGRGNs6 このスレでbashが多いのは何故?
768デフォルトの名無しさん
2018/08/22(水) 09:06:48.94ID:AfGRGNs6 今見返したらそんなに多くなかった‥
769デフォルトの名無しさん
2018/08/22(水) 09:44:37.32ID:zudhoHB+ >>767
Linuxのディストリビューションでは最初からインストールされてるのがよくあってある程度有名で、sh互換でshしか知らなくても書けるからではないかな。
それとWebの実行環境があるというのも理由かも。こういう所で公開するのには都合が良い。
Linuxのディストリビューションでは最初からインストールされてるのがよくあってある程度有名で、sh互換でshしか知らなくても書けるからではないかな。
それとWebの実行環境があるというのも理由かも。こういう所で公開するのには都合が良い。
770デフォルトの名無しさん
2018/08/22(水) 12:27:54.30ID:AfGRGNs6771デフォルトの名無しさん
2018/08/22(水) 15:46:06.44ID:PmiUKg2L >>758 zsh
setopt rcquotes; sed -E -e 's:^(\* .*):{ echo ''\1''; sort -u; echo } << *:' -e 's:^$:*:' | zsh
xargsの区切り文字の辛さからは開放されたが、echo ''\1'' がイマイチだ。
なるほど、構造のあるデータはむしろファイル階層として表現したほうが自然か…
setopt rcquotes; sed -E -e 's:^(\* .*):{ echo ''\1''; sort -u; echo } << *:' -e 's:^$:*:' | zsh
xargsの区切り文字の辛さからは開放されたが、echo ''\1'' がイマイチだ。
なるほど、構造のあるデータはむしろファイル階層として表現したほうが自然か…
772デフォルトの名無しさん
2018/08/22(水) 23:06:19.28ID:YlEU3d3x >>758 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
$
$ 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
$
773デフォルトの名無しさん
2018/08/22(水) 23:55:42.77ID:h82tfzI1 64ビットWindows10 なら、WSL で、Ubuntu を入れると、
bash, vim, Python は最初から入っている
WindowsのExplorer では、BOMなしUTF-8 のファイルは検索できないから、
WSL でLinux側から、grep で検索している
シェルスクリプトの欠点は、パイプラインがテキスト渡しになる。
オブジェクトの型が無くなって、すべて文字列になる
一方、PowerShell ではオブジェクト渡しだから、オブジェクトの構造・型が維持できる
>>758-759
外部コマンドを切り替えるという抽象的な処理を、処理間にはさむのは難しい。
すべての処理の冒頭か最後で、一括でフィルターする方がバグらない
bash, vim, Python は最初から入っている
WindowsのExplorer では、BOMなしUTF-8 のファイルは検索できないから、
WSL でLinux側から、grep で検索している
シェルスクリプトの欠点は、パイプラインがテキスト渡しになる。
オブジェクトの型が無くなって、すべて文字列になる
一方、PowerShell ではオブジェクト渡しだから、オブジェクトの構造・型が維持できる
>>758-759
外部コマンドを切り替えるという抽象的な処理を、処理間にはさむのは難しい。
すべての処理の冒頭か最後で、一括でフィルターする方がバグらない
774デフォルトの名無しさん
2018/08/23(木) 00:19:08.54ID:FMBOl46f775765
2018/08/23(木) 09:28:38.07ID:qUZ5eK5Q 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 として、各ファイルを処理した
$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 として、各ファイルを処理した
776デフォルトの名無しさん
2018/08/24(金) 05:00:24.02ID:QxK4Y8yu 点が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点までの距離
最も左にある点が求められない時はあと何の情報があれば求められるのかを最低個数で列挙すること
例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点までの距離
777デフォルトの名無しさん
2018/08/24(金) 05:58:44.74ID:rBPgXHvS >>776
実際に自分で書いてみて、求められたら解答例を提示できる?
実際に自分で書いてみて、求められたら解答例を提示できる?
778デフォルトの名無しさん
2018/08/24(金) 08:02:12.41ID:ZkSPfVdV 「知っている」の主語が点に見えるけど
そうじゃないよね?
なんでそういう文にしたの?
そうじゃないよね?
なんでそういう文にしたの?
779デフォルトの名無しさん
2018/08/24(金) 10:33:50.94ID:phPhGhWW 連結リストを使って、出来上がったグラフが連結なら求められる
つまり、出来上がったグラフが二つ三つそれ以上に分かれている非連結グラフになってると、距離は分からない
……直感的には多分こうだが、何かしらの証明は必要
「連結グラフだが距離が分からない」反例があればいい
つまり、出来上がったグラフが二つ三つそれ以上に分かれている非連結グラフになってると、距離は分からない
……直感的には多分こうだが、何かしらの証明は必要
「連結グラフだが距離が分からない」反例があればいい
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 [ぐれ★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★2 [BFU★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★3 [BFU★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★2 [BFU★]
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 [Hitzeschleier★]
- 政府、株式の配当など金融所得を高齢者の医療保険料や窓口負担に反映する方針を固めた [バイト歴50年★]
- 中国高官と話す外務省局長の表情、やばい ★2 [175344491]
- 中国外務省「日中関係の悪化は高市早苗首相が原因」と名指しで強く非難。キタ━(゚∀゚)━! [153490809]
- 【ネトウヨ終了】大人気ユーチューバー「高市早苗のことをまともだと思うやつは私のコンテンツにさわらないでください」 [339712612]
- 小野田経済安保相「すぐに経済的威圧するところへの依存はリスク」😲 [861717324]
- 日本政府「高市総理の発言は問題ないと伝え、中国総領事のSNS投稿は問題があると中国に伝えました😊」 [931948549]
- 外務局長「中国さんごめんなさぁ...」小野田「中国なんかどうでもいいっ!」高市「首脳会談したい」マスコミ「立憲が悪いっ!!」 [237216734]
