プログラミングのお題スレです。
【出題と回答例】
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/
宿題は宿題スレがあるのでそちらへ。
※前スレ
プログラミングのお題スレ Part16
https://mevius.5ch.net/test/read.cgi/tech/1573948822/
探検
プログラミングのお題スレ Part17
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2020/03/13(金) 01:42:47.06ID:0rEhys362020/03/13(金) 08:41:14.93ID:RXilWx3L
>>1おつ
3デフォルトの名無しさん
2020/03/14(土) 15:24:12.98ID:L+5etp1i お題:
日本式ローマ字の文字列をひらがなに変換してください
入力:tokugawayosimunehaedozidaidaihatidaisyougun
日本式ローマ字の文字列をひらがなに変換してください
入力:tokugawayosimunehaedozidaidaihatidaisyougun
2020/03/14(土) 16:53:59.16ID:R7iBZnY8
何スレか前にやったじゃん。ネタ切れかよ
2020/03/14(土) 17:13:09.87ID:ZPl207sd
ネタ切れだよ
文句言うな
文句言うな
6蟻人間 ◆T6xkBnTXz7B0
2020/03/15(日) 02:13:51.89ID:IdLAz5Ve お題: なるべく短い文字数のコマンドで自動的にMS-DOSのシステムを完全停止させる。
8蟻人間 ◆T6xkBnTXz7B0
2020/03/15(日) 02:41:15.46ID:IdLAz5Ve ヒント:外部コマンド
9蟻人間 ◆T6xkBnTXz7B0
2020/03/15(日) 03:52:16.98ID:IdLAz5Ve >>6
やっぱりお題を撤回します。古いハードディスクの関係で、システムを強制終了するとドライブが壊れる可能性があるらしいので。つまんないの。
やっぱりお題を撤回します。古いハードディスクの関係で、システムを強制終了するとドライブが壊れる可能性があるらしいので。つまんないの。
10蟻人間 ◆T6xkBnTXz7B0
2020/03/15(日) 04:20:10.12ID:IdLAz5Ve お題: 一辺2000メートルの正方形の平面上にランダムに動く物体5個がある。正方形の中心に自機があり、自機を中心にレーダー電波が一定速度で回転しながら常に放射されている。
物体がレーダー電波に当たるとその瞬間にその物体までの距離と方向がわかる仕組みになっている。
各物体が直線等速運動をしていると仮定して随時に各物体の速度を推定し、物体が100メートルより近いときは、それが当たりそうな場所に向かってミサイルを自動的に発射する次のようなアルゴリズムを作れ。
1. 毎分ごとに物体5個の位置(Pxn, Pyn)と推定速度(Vxn, Vyn)を報告すること。
2. 自機は動かない。
3. ミサイルを発射するときは方向(Tn; ラジアン)を報告すること。ミサイルの速さは毎秒5メートルである。
4. ミサイルの個数には制限がない。
5. ミサイルと物体座標が2メートル以内であれば、ミサイル命中と見なす。命中すれば物体は消える。実際に消えたときは消えた位置を報告する。
物体がレーダー電波に当たるとその瞬間にその物体までの距離と方向がわかる仕組みになっている。
各物体が直線等速運動をしていると仮定して随時に各物体の速度を推定し、物体が100メートルより近いときは、それが当たりそうな場所に向かってミサイルを自動的に発射する次のようなアルゴリズムを作れ。
1. 毎分ごとに物体5個の位置(Pxn, Pyn)と推定速度(Vxn, Vyn)を報告すること。
2. 自機は動かない。
3. ミサイルを発射するときは方向(Tn; ラジアン)を報告すること。ミサイルの速さは毎秒5メートルである。
4. ミサイルの個数には制限がない。
5. ミサイルと物体座標が2メートル以内であれば、ミサイル命中と見なす。命中すれば物体は消える。実際に消えたときは消えた位置を報告する。
2020/03/15(日) 05:43:09.27ID:fxB2xu91
前スレの6N+1型と6N-1型の素数どちらが多いかという問題
それぞれの素数全てからなる集合をA, B としたとき、A, Bの濃度はどちらも?_0であり等しい。
問題(と出題者の)頭が悪すぎ
それぞれの素数全てからなる集合をA, B としたとき、A, Bの濃度はどちらも?_0であり等しい。
問題(と出題者の)頭が悪すぎ
12蟻人間 ◆T6xkBnTXz7B0
2020/03/15(日) 08:04:53.86ID:C2+jTQYL 頭悪いと言われるけど、技術的な問題を作れるヤツが少ないから困ってるんだ。
80年代の防衛システムを作れる奴が居ないんだぜ。
ひつじのような学生ばかり作って必要な分野に投資しない。この国はお金を動かす奴等が馬鹿ばかりだ。
80年代の防衛システムを作れる奴が居ないんだぜ。
ひつじのような学生ばかり作って必要な分野に投資しない。この国はお金を動かす奴等が馬鹿ばかりだ。
13蟻人間 ◆T6xkBnTXz7B0
2020/03/15(日) 09:44:00.57ID:IdLAz5Ve ぼくが指導者になるしかないのかな。。。
2020/03/15(日) 10:11:20.50ID:R5iQYFh6
インパール作戦の指揮者のような死導者になるのかな
15デフォルトの名無しさん
2020/03/16(月) 16:23:53.04ID:8T/rxY7p16デフォルトの名無しさん
2020/03/16(月) 16:31:49.21ID:8T/rxY7p Oops sorry 6nプラマイ型の無限性じゃ双子予想導けなかった(´・ω・`)
2020/03/16(月) 18:20:29.91ID:GOFQMBOW
2020/03/17(火) 12:37:21.90ID:55EeZ8o4
2種類のSSRキャラが各2%、2種類のSRキャラが各2.5%の確率で排出されるガチャがある
これら4種のキャラが全て(各1体以上)出るまでに必要なガチャ回数の期待値は何回か
また、一日3回ガチャした場合に、イベント期間中の2週間(14日)で出る確率はいくらか
これら4種のキャラが全て(各1体以上)出るまでに必要なガチャ回数の期待値は何回か
また、一日3回ガチャした場合に、イベント期間中の2週間(14日)で出る確率はいくらか
2020/03/17(火) 13:05:48.12ID:VICFa3qx
無限につづく数列の足し算はできる言語あるの?(wolframとか??)
シグマ(k=4から無限まで) Pk
Pnとは n回で出る時の確率であり
Pn = (0.02*0.025)^2 * (0.91)^(n-4) * (n-1 C 3)
シグマ(k=4から無限まで) Pk
Pnとは n回で出る時の確率であり
Pn = (0.02*0.025)^2 * (0.91)^(n-4) * (n-1 C 3)
20デフォルトの名無しさん
2020/03/17(火) 14:41:18.66ID:4Vk7SyLR >>6
本当にMS-DOSならばいきなり電源切ればいいのでは?
本当にMS-DOSならばいきなり電源切ればいいのでは?
21蟻人間 ◆T6xkBnTXz7B0
2020/03/17(火) 15:11:28.29ID:jDLeGHZW >>20
Ctrl+Cかexitしないとハードディスクが壊れるというハードウェアがあったらしい。
Ctrl+Cかexitしないとハードディスクが壊れるというハードウェアがあったらしい。
22デフォルトの名無しさん
2020/03/17(火) 15:46:16.41ID:4Vk7SyLR2020/03/17(火) 20:32:07.56ID:WZhpPu/2
2020/03/18(水) 09:09:56.04ID:I/71Lz9x
(多項式)*(等比数列)の形の級数に限れば多項式をn, n(n+1), n(n+1)(n+2), ... の線形結合で表してΣ[i=0 to Infinity] i(i+1)...(i+n-1)*r^i = n!r/(1-r)^(n-1)を使えば求められる
だから多項式を展開できて連立方程式が解ける言語ならなんでも
だから多項式を展開できて連立方程式が解ける言語ならなんでも
25デフォルトの名無しさん
2020/03/19(木) 09:16:32.19ID:bOFq5rto2020/03/19(木) 13:17:22.37ID:WnokI830
お題: ミサイル迎撃システムがある
関数analyzeに敵ミサイルの座標である「緯度」「経度」「高度」が渡されるので敵ミサイルを迎撃せよ
なおこのanalyze関数は敵ミサイルが飛翔している間、座標を更新しながら100ミリ秒ごとに繰り返し呼ばれるものとする
敵ミサイルの高度が0以下になった場合、ミサイルの迎撃に失敗したものとみなす
迎撃ポイントを確定したら関数fireを呼び出し、敵ミサイルを撃墜すること
なお迎撃に使うレーザー砲は敵ミサイルに届くまで1秒かかるものとする
敵ミサイルの軌道は直線的とし、重力や空気抵抗を考慮しないものとする
関数analyzeに敵ミサイルの座標である「緯度」「経度」「高度」が渡されるので敵ミサイルを迎撃せよ
なおこのanalyze関数は敵ミサイルが飛翔している間、座標を更新しながら100ミリ秒ごとに繰り返し呼ばれるものとする
敵ミサイルの高度が0以下になった場合、ミサイルの迎撃に失敗したものとみなす
迎撃ポイントを確定したら関数fireを呼び出し、敵ミサイルを撃墜すること
なお迎撃に使うレーザー砲は敵ミサイルに届くまで1秒かかるものとする
敵ミサイルの軌道は直線的とし、重力や空気抵抗を考慮しないものとする
2020/03/19(木) 15:56:22.46ID:GbpHbvNZ
レーザーが届くまでに一秒かかるということは
ミサイルの位置も一秒前のものしかわからないわけだな
ミサイルの位置も一秒前のものしかわからないわけだな
2020/03/19(木) 16:21:54.04ID:SIWc9klw
高度は地表からの距離だろうか。
地球が完全な球と仮定してよいか。
地球の半径、迎撃レーザーの発射点の座標とかは勝手に決めてよいのか。
ミサイルの起動について地球の自転は考慮不要か。
ミサイルの起動は直線だとして速度が一定と仮定してよいのか。
地球が完全な球と仮定してよいか。
地球の半径、迎撃レーザーの発射点の座標とかは勝手に決めてよいのか。
ミサイルの起動について地球の自転は考慮不要か。
ミサイルの起動は直線だとして速度が一定と仮定してよいのか。
29デフォルトの名無しさん
2020/03/19(木) 16:50:52.26ID:bOFq5rto 地球は平面だろ!
2020/03/19(木) 16:59:57.04ID:88pUuzIX
糞コテのお題だぞ
無視しろよ
無視しろよ
2020/03/19(木) 17:18:21.03ID:WnokI830
>>28
指摘された点を推敲したいと思います・・・
指摘された点を推敲したいと思います・・・
2020/03/19(木) 18:08:36.94ID:SIWc9klw
>>31
かなり杜撰な問題だと思うけどそもそも自分でちゃんと解いたのか?
かなり杜撰な問題だと思うけどそもそも自分でちゃんと解いたのか?
2020/03/19(木) 18:18:34.03ID:WnokI830
>>32
いいえ
いいえ
2020/03/19(木) 18:21:33.25ID:sZ6Ndc8g
テキトーすぎる
コテ関係なく質がひどすぎるお題なんて触れなくておk
コテ関係なく質がひどすぎるお題なんて触れなくておk
35デフォルトの名無しさん
2020/03/19(木) 20:14:53.84ID:WsP7BoFG おまえらやる気なさすぎワロタw
2020/03/19(木) 20:33:34.50ID:I3A3yd/j
奇形のデブス前にしてチンコ勃てろと言ってるようなもの。
それでEDと罵られても困る。
それでEDと罵られても困る。
37デフォルトの名無しさん
2020/03/20(金) 06:22:44.72ID:Edy1QoAW >>29
球なのに平らであると
球なのに平らであると
2020/03/20(金) 08:51:54.52ID:WvSQRAtR
リーマン球面は複素平面である。
故に球面は平面である。
Q.E.D.
故に球面は平面である。
Q.E.D.
39デフォルトの名無しさん
2020/03/20(金) 09:12:05.14ID:xr3G6R5C お題:Gとなるノノグラムデータを作って下さい。
2020/03/20(金) 09:29:42.98ID:tkx4ScZk
Gとなる、というのは解がGの文字の字形になるということか?
Gの文字の字形に定義はあるの?
Gの文字の字形に定義はあるの?
2020/03/20(金) 09:49:35.19ID:iazeZlcv
リーマン球面は複素平面である...???
2020/03/21(土) 19:49:46.64ID:I6z+mtmQ
お題: RGBを独自定義の色定数に変換せよ
関数convに引数r, g, bが渡される。それぞれの引数は0~255の範囲の値を持つRGBカラーの値である
このRGB値を以下の色定数に変換し、戻り値として返却せよ
111 ... BLACK
112 ... BLUE
121 ... GREEN
122 ... CYAN
211 ... RED
212 ... MAGENTA
221 ... YELLOW
222 ... WHITE
色の正規化の方法など、詳しいことは一任するが、↑の色定数の名前に近似するように調整すること
関数convに引数r, g, bが渡される。それぞれの引数は0~255の範囲の値を持つRGBカラーの値である
このRGB値を以下の色定数に変換し、戻り値として返却せよ
111 ... BLACK
112 ... BLUE
121 ... GREEN
122 ... CYAN
211 ... RED
212 ... MAGENTA
221 ... YELLOW
222 ... WHITE
色の正規化の方法など、詳しいことは一任するが、↑の色定数の名前に近似するように調整すること
43デフォルトの名無しさん
2020/03/21(土) 20:01:40.92ID:I6z+mtmQ >>42
訂正: MAGENTA -> PURPLE
訂正: MAGENTA -> PURPLE
44デフォルトの名無しさん
2020/03/21(土) 21:38:46.69ID:H1X3lIOS2020/03/21(土) 22:23:41.82ID:vYB/WqOU
int conv(int r, int g, int b){
return (r&0x80?200:100) + (g&0x80?20:10) + (b&0x80?2:1);
}
return (r&0x80?200:100) + (g&0x80?20:10) + (b&0x80?2:1);
}
46デフォルトの名無しさん
2020/03/22(日) 00:11:44.31ID:3eM1H9mL2020/03/22(日) 03:48:21.45ID:INd1TwL5
>>42 Ruby
def conv( *rgb ) rgb.map{|v| v >> 7 & 1 }.inject(0){|r,i| 10*r + i + 1 } end
conv( 0x80, 0, 0 ) #=> 211
def conv( *rgb ) rgb.map{|v| v >> 7 & 1 }.inject(0){|r,i| 10*r + i + 1 } end
conv( 0x80, 0, 0 ) #=> 211
2020/03/22(日) 10:39:01.42ID:q38LxNo0
>>42 Pharo/Squeak Smalltalk
"すでに機能として組み込まれている"
Color r: 0 g: 0 b: 0. "=> Color black "
Color r: 0 g: 0 b: 1. "=> Color blue "
Color r: 0 g: 1 b: 0. "=> Color green "
Color r: 0 g: 1 b: 1. "=> Color cyan "
Color r: 1 g: 0 b: 0. "=> Color red "
Color r: 1 g: 0 b: 1. "=> Color magenta "
Color r: 1 g: 1 b: 0. "=> Color yellow "
Color r: 1 g: 1 b: 1. "=> Color white "
"カラー名と同名のメソッドコールでオブジェクトを得ることもできる"
Color red + Color green + Color blue. "=> Color white "
Color white - Color yellow "=> Color blue "
"すでに機能として組み込まれている"
Color r: 0 g: 0 b: 0. "=> Color black "
Color r: 0 g: 0 b: 1. "=> Color blue "
Color r: 0 g: 1 b: 0. "=> Color green "
Color r: 0 g: 1 b: 1. "=> Color cyan "
Color r: 1 g: 0 b: 0. "=> Color red "
Color r: 1 g: 0 b: 1. "=> Color magenta "
Color r: 1 g: 1 b: 0. "=> Color yellow "
Color r: 1 g: 1 b: 1. "=> Color white "
"カラー名と同名のメソッドコールでオブジェクトを得ることもできる"
Color red + Color green + Color blue. "=> Color white "
Color white - Color yellow "=> Color blue "
2020/03/22(日) 12:47:56.07ID:EPda6hnZ
>>48
さしがsmalltalkさん
さしがsmalltalkさん
2020/03/22(日) 23:23:43.84ID:Bu0KMZaA
>>48
恐ろしい子・・・
恐ろしい子・・・
2020/03/23(月) 00:59:16.37ID:ryqQXgQk
>>48
さすスモ
さすスモ
52デフォルトの名無しさん
2020/03/27(金) 23:49:15.39ID:7AzyN3tE お題:安価をレス番リストに変換せよ
例:
"1" -> [1]
"1-3" -> [1,2,3]
"1,3" -> [1,3]
"1,3-5" -> [1,3,4,5]
例:
"1" -> [1]
"1-3" -> [1,2,3]
"1,3" -> [1,3]
"1,3-5" -> [1,3,4,5]
2020/03/28(土) 00:46:37.28ID:xGS8Imsw
>>52 Ruby
def anka(str)
nums=[]
str.split(“,”).each do |s|
x,y=s.split(“-“)
if y
nums+=(x.to_i .. y.to_i).to_a
else
nums<<x.to_i
end
end
return nums
end
anka(“1,3-5”)
#=> [1,3,4,5]
def anka(str)
nums=[]
str.split(“,”).each do |s|
x,y=s.split(“-“)
if y
nums+=(x.to_i .. y.to_i).to_a
else
nums<<x.to_i
end
end
return nums
end
anka(“1,3-5”)
#=> [1,3,4,5]
54デフォルトの名無しさん
2020/03/28(土) 01:05:52.51ID:ngUeRIaE55デフォルトの名無しさん
2020/03/28(土) 01:08:29.96ID:ngUeRIaE やっぱやめた。
よく考えたら>>53のコードに重複削除追加するだけだった
よく考えたら>>53のコードに重複削除追加するだけだった
2020/03/28(土) 09:55:13.91ID:YBto5Ud7
>>52 Ruby
%w[1 1-3 1,3 1,3-5].each{|e| p eval "[#{e.gsub(/(\d+)-/, '*\1..')}]"}
# => [1]
[1, 2, 3]
[1, 3]
[1, 3, 4, 5]
%w[1 1-3 1,3 1,3-5].each{|e| p eval "[#{e.gsub(/(\d+)-/, '*\1..')}]"}
# => [1]
[1, 2, 3]
[1, 3]
[1, 3, 4, 5]
2020/03/28(土) 11:14:59.26ID:VFdWLa/U
>>52 Perl5
$"=',';
for $a (<DATA>) {
$a =~ s/-/.../;
@s = eval $a;
print "[@s]\n";
}
__DATA__
1
1-3
1,3
1,3-5
実行結果
~ $ perl 17_53_ancres.pl
[1]
[1,2,3]
[1,3]
[1,3,4,5]
$"=',';
for $a (<DATA>) {
$a =~ s/-/.../;
@s = eval $a;
print "[@s]\n";
}
__DATA__
1
1-3
1,3
1,3-5
実行結果
~ $ perl 17_53_ancres.pl
[1]
[1,2,3]
[1,3]
[1,3,4,5]
2020/03/28(土) 11:21:13.18ID:VFdWLa/U
>>58 Perl5 ちょっと修正
$"=',';
for $a (<DATA>) {
$a =~ s/-/.../g;
@s = sort{$a<=>$b} eval $a;
print "[@s]\n";
}
__DATA__
1
1-3
1,3
1,8-10,3-5
実行
~ $ perl 17_53_ancres.pl
[1]
[1,2,3]
[1,3]
[1,3,4,5,8,9,10]
$"=',';
for $a (<DATA>) {
$a =~ s/-/.../g;
@s = sort{$a<=>$b} eval $a;
print "[@s]\n";
}
__DATA__
1
1-3
1,3
1,8-10,3-5
実行
~ $ perl 17_53_ancres.pl
[1]
[1,2,3]
[1,3]
[1,3,4,5,8,9,10]
60デフォルトの名無しさん
2020/03/28(土) 18:22:26.71ID:ssy5u0i661デフォルトの名無しさん
2020/03/28(土) 18:24:03.79ID:ssy5u0i6 お題:レス番リストを安価に変換せよ
例:
[1] -> "1"
[1,2,3] -> "1-3"
[1,3] -> "1,3"
[1,3,4,5] -> "1,3-5"
例:
[1] -> "1"
[1,2,3] -> "1-3"
[1,3] -> "1,3"
[1,3,4,5] -> "1,3-5"
2020/03/28(土) 19:38:54.96ID:RLgHfGbj
前者は2ch browserで使えるけど後者はそうじゃないね
63デフォルトの名無しさん
2020/03/28(土) 23:41:39.06ID:X4tW2giy まーたやらな言い訳かー
やる気ねーなw
やる気ねーなw
64デフォルトの名無しさん
2020/03/29(日) 10:50:09.52ID:ACisvDeP >>61 js
let レス番リスト=[1,3,4,5];
let 先頭レス番=レス番リスト[0];
let 安価="";
for(let イ=0;イ<レス番リスト.length-1;イ++){
if(レス番リスト[イ]+1!=レス番リスト[イ+1]){
安価+=レス番リスト[イ]==先頭レス番?先頭レス番+",":先頭レス番+"-"+レス番リスト[イ]+",";
先頭レス番=レス番リスト[イ+1];
}
}
安価+=レス番リスト[レス番リスト.length-1]==先頭レス番?先頭レス番:先頭レス番+"-"+レス番リスト[レス番リスト.length-1];
console.log(安価);
=>1,3-5
let レス番リスト=[1,3,4,5];
let 先頭レス番=レス番リスト[0];
let 安価="";
for(let イ=0;イ<レス番リスト.length-1;イ++){
if(レス番リスト[イ]+1!=レス番リスト[イ+1]){
安価+=レス番リスト[イ]==先頭レス番?先頭レス番+",":先頭レス番+"-"+レス番リスト[イ]+",";
先頭レス番=レス番リスト[イ+1];
}
}
安価+=レス番リスト[レス番リスト.length-1]==先頭レス番?先頭レス番:先頭レス番+"-"+レス番リスト[レス番リスト.length-1];
console.log(安価);
=>1,3-5
2020/03/29(日) 14:05:00.00ID:kU1QBoxf
>>61 Perl5 (もう少しスマートな書き方はあるかもしれないが…)
for (qw{[1] [2,3] [1,2,3] [1,3] [1,3,4,5]}) {
@a = /(\d+)/g;
%h = map{$_ => $_} @a;
@b = map{$h{$_}//','} 1..1000;
$"=','; $b = "@b";
$b =~ s/^,*(.+?),*$/$1/;
@c = split /,,+/, $b;
@d = map{[eval]} @c;
@e = map{@$_ > 2 ? "$$_[0]-$$_[-1]" : "@$_"} @d;
print "@e\n";
}
実行結果
~ $ perl 17_61_resanc.pl
1
2,3
1-3
1,3
1,3-5
for (qw{[1] [2,3] [1,2,3] [1,3] [1,3,4,5]}) {
@a = /(\d+)/g;
%h = map{$_ => $_} @a;
@b = map{$h{$_}//','} 1..1000;
$"=','; $b = "@b";
$b =~ s/^,*(.+?),*$/$1/;
@c = split /,,+/, $b;
@d = map{[eval]} @c;
@e = map{@$_ > 2 ? "$$_[0]-$$_[-1]" : "@$_"} @d;
print "@e\n";
}
実行結果
~ $ perl 17_61_resanc.pl
1
2,3
1-3
1,3
1,3-5
66デフォルトの名無しさん
2020/03/29(日) 18:03:50.57ID:5iH4CTSz なにやってるのか全くわからんw
2020/03/29(日) 18:46:57.43ID:CipzEZQ7
@a = /(\d+)/g; … 文字列から数値だけを抽出しリスト変数@aに格納、たとえば文字列が"[1,3,4,5]" の場合@aは(1, 3, 4, 5)
%h = map{$_ => $_} @a; … 変数@aのリスト例えば(1, 3, 4, 5)を入力として値対値ハッシュ {1=>1, 3=>3, 4=>4, 5=>5}を作り変数%hとする
@b = map{$h{$_}//','} 1..1000; … 1〜1000までの数値に対しハッシュ%hを参照し値があればその値、無ければ','文字のリストを生成して変数@bに格納、上記{1=>1, 3=>3, 4=>4, 5=>5}の場合はこんな感じ
# 1 2 3 4 5 6 7 8 9 … 1000
@b: 1 , 3 4 5 , , , , … ,
$"=','; $b = "@b"; … 上記リスト@bを元に要素を区切り文字','で繋いだ文字列を作り変数$bに設定
上記@b: 1 , 3 4 5 , , , … ,
の場合 $b = "1,,,3,4,5,,,,,,,…,,"
2や6以降は無いので,となっている
$b =~ s/^,*(.+?),*$/$1/; … 文字列$bの先頭と末尾に','があれば除去
例 $b = "1,,,3,4,5,,,,,,,…,," ⇒ "1,,,3,4,5"
@c = split /,,+/, $b; … $bを正規表現/,,+/を区切りとして分割したリストを@cに格納
例 $b = "1,,,3,4,5" ⇒ @c = ("1", "3,4,5")
@d = map{[eval]} @c; … リスト@cの文字列をそれぞれevalして数値リストのreferenceの配列を@dに設定
例 @c = ("1", "3,4,5") ⇒ @d = ([1], [3, 4, 5])
@e = map{@$_ > 2 ? "$$_[0]-$$_[-1]" : "@$_"} @d;
@dの夫々の数値リストに対し、要素が1だったらその数値自体を文字列に、2個だったら数値を','で連結した文字列に、
3個以上だったら"最初の数値-最後の数値"という文字列に変換
例 @d = ([1], [3, 4, 5]) ⇒ @e = ("1", "3-5")
print "@e\n";
@e の文字列リストを','で繋いで印字(上の方で区切り文字$"は=','に設定済)
例 @e = ("1", "3-5") ⇒ 1,3-5
@dと@eを作るところがもう少しエレガントにできればよかったけれど
%h = map{$_ => $_} @a; … 変数@aのリスト例えば(1, 3, 4, 5)を入力として値対値ハッシュ {1=>1, 3=>3, 4=>4, 5=>5}を作り変数%hとする
@b = map{$h{$_}//','} 1..1000; … 1〜1000までの数値に対しハッシュ%hを参照し値があればその値、無ければ','文字のリストを生成して変数@bに格納、上記{1=>1, 3=>3, 4=>4, 5=>5}の場合はこんな感じ
# 1 2 3 4 5 6 7 8 9 … 1000
@b: 1 , 3 4 5 , , , , … ,
$"=','; $b = "@b"; … 上記リスト@bを元に要素を区切り文字','で繋いだ文字列を作り変数$bに設定
上記@b: 1 , 3 4 5 , , , … ,
の場合 $b = "1,,,3,4,5,,,,,,,…,,"
2や6以降は無いので,となっている
$b =~ s/^,*(.+?),*$/$1/; … 文字列$bの先頭と末尾に','があれば除去
例 $b = "1,,,3,4,5,,,,,,,…,," ⇒ "1,,,3,4,5"
@c = split /,,+/, $b; … $bを正規表現/,,+/を区切りとして分割したリストを@cに格納
例 $b = "1,,,3,4,5" ⇒ @c = ("1", "3,4,5")
@d = map{[eval]} @c; … リスト@cの文字列をそれぞれevalして数値リストのreferenceの配列を@dに設定
例 @c = ("1", "3,4,5") ⇒ @d = ([1], [3, 4, 5])
@e = map{@$_ > 2 ? "$$_[0]-$$_[-1]" : "@$_"} @d;
@dの夫々の数値リストに対し、要素が1だったらその数値自体を文字列に、2個だったら数値を','で連結した文字列に、
3個以上だったら"最初の数値-最後の数値"という文字列に変換
例 @d = ([1], [3, 4, 5]) ⇒ @e = ("1", "3-5")
print "@e\n";
@e の文字列リストを','で繋いで印字(上の方で区切り文字$"は=','に設定済)
例 @e = ("1", "3-5") ⇒ 1,3-5
@dと@eを作るところがもう少しエレガントにできればよかったけれど
68デフォルトの名無しさん
2020/03/29(日) 19:07:03.53ID:5iH4CTSz なるほど、そうやって並んだ部分でグループ化するのか
2020/03/30(月) 22:44:25.79ID:xSpiMCgD
>>65 Perl5 少しスマートに書けた(文字列マッチンク処理゙主体になっちまったけれど…)
$"=',';
for (qw{[1] [2,3] [1,2,3] [1,3] [1,3,4,5]}) {
@a = /(\d+)/g;
%h = map{$_ => $_} @a;
@b = map{$h{$_}//' '} 1..20;
$b = "@b";
@c = $b =~ /(\d(?:,\d)*)/g;
s/(,\d+)+,/-/ for @c;
print "@c\n";
}
実行
~ $ perl 17_61_resanc_0330.pl
1
2,3
1-3
1,3
1,3-5
$"=',';
for (qw{[1] [2,3] [1,2,3] [1,3] [1,3,4,5]}) {
@a = /(\d+)/g;
%h = map{$_ => $_} @a;
@b = map{$h{$_}//' '} 1..20;
$b = "@b";
@c = $b =~ /(\d(?:,\d)*)/g;
s/(,\d+)+,/-/ for @c;
print "@c\n";
}
実行
~ $ perl 17_61_resanc_0330.pl
1
2,3
1-3
1,3
1,3-5
2020/03/30(月) 22:45:46.57ID:q7KIsR+X
2020/03/31(火) 23:56:04.38ID:9DwI/QO9
>>59
めったに使えない evalが入てて楽しい
めったに使えない evalが入てて楽しい
72デフォルトの名無しさん
2020/04/03(金) 19:14:26.56ID:tv+k2Xei お題
文字列の先頭から続く、0 は、8進数と解釈されるため、バグります!
なので、それらを除去して、10進数と解釈できる文字列にして下さい。
以下は、すべて文字列です
090 → 90
0080 → 80
123 → 123
0 → 0
000 → 0
"" → ""
文字列の先頭から続く、0 は、8進数と解釈されるため、バグります!
なので、それらを除去して、10進数と解釈できる文字列にして下さい。
以下は、すべて文字列です
090 → 90
0080 → 80
123 → 123
0 → 0
000 → 0
"" → ""
2020/04/03(金) 19:53:54.22ID:MoLJYTUl
7472
2020/04/03(金) 20:02:16.50ID:tv+k2Xei 向こうのスレから移動したので、このスレで続けて下さい!
75デフォルトの名無しさん
2020/04/03(金) 20:06:07.16ID:etO49JcP 粘着者湧いてるじゃん
76デフォルトの名無しさん
2020/04/03(金) 20:13:05.27ID:D8CnMwXH2020/04/03(金) 20:17:14.47ID:Ea8es11U
78デフォルトの名無しさん
2020/04/03(金) 20:17:36.06ID:D8CnMwXH すまん、よく読んでなかったわ
2020/04/04(土) 00:40:59.23ID:oi+wB/l2
>>72 Perl5
for $a (qw{090 0080 123 0 000}) {
($b = $a) =~ s/^0*([\d])/$1/;
print "$a → $b\n"
}
実行結果
~ $ perl 17_72_0dec.pl
090 → 90
0080 → 80
123 → 123
0 → 0
000 → 0
for $a (qw{090 0080 123 0 000}) {
($b = $a) =~ s/^0*([\d])/$1/;
print "$a → $b\n"
}
実行結果
~ $ perl 17_72_0dec.pl
090 → 90
0080 → 80
123 → 123
0 → 0
000 → 0
2020/04/04(土) 00:43:04.52ID:7bsK3hPl
>>79 いや、([\d])は(\d)で十分だた…
for $a (qw{090 0080 123 0 000}) {
($b = $a) =~ s/^0*(\d)/$1/;
print "$a → $b\n"
}
for $a (qw{090 0080 123 0 000}) {
($b = $a) =~ s/^0*(\d)/$1/;
print "$a → $b\n"
}
2020/04/04(土) 01:02:31.09ID:PfYZfNM0
2020/04/04(土) 01:49:49.76ID:jL2VaRwC
>>81
そっか、今度から置換代入にはr使ってみる。
も少し書き換えたら、こうなった
for (qw{090 0080 123 0 000}) {
/^0*(\d+)/;
print "$_ → $1\n"
}
~ $ perl 17_72_0dec.pl
090 → 90
0080 → 80
123 → 123
0 → 0
000 → 0
そっか、今度から置換代入にはr使ってみる。
も少し書き換えたら、こうなった
for (qw{090 0080 123 0 000}) {
/^0*(\d+)/;
print "$_ → $1\n"
}
~ $ perl 17_72_0dec.pl
090 → 90
0080 → 80
123 → 123
0 → 0
000 → 0
8372
2020/04/04(土) 12:46:11.12ID:1ehA2Rbs >>72
Ruby で
def delete_successive_zero( str )
return "" if str == ""
str.to_i.to_s # 10進数
end
ary = %w(090 0080 123 0 000)
ary.push ""
p ary.map { |str| delete_successive_zero( str ) }
出力
[ "90", "80", "123", "0", "0", "" ]
Ruby で
def delete_successive_zero( str )
return "" if str == ""
str.to_i.to_s # 10進数
end
ary = %w(090 0080 123 0 000)
ary.push ""
p ary.map { |str| delete_successive_zero( str ) }
出力
[ "90", "80", "123", "0", "0", "" ]
2020/04/04(土) 13:37:45.44ID:tmNSQTrZ
>>52 Dart
void main() {
final List<String> anchors = ["1", "1-3", "1,3", "1,3-5"];
anchors.forEach((anchor) => print("$anchor => ${toNums(anchor)}"));
}
List<int> toNums(str) {
final List<int> result = [];
str.split(",").forEach((param){
if(param.contains("-")) {
result.addAll(hoge(param));
} else {
result.add(int.parse(param));
}
});
return result;
}
List<int> hoge(str) {
final List<int> result = [];
final range = str.split("-");
for(var i = int.parse(range[0]);i <= int.parse(range[1]); i++) result.add(i);
return result;
}
// =>
1 => [1]
1-3 => [1, 2, 3]
1,3 => [1, 3]
1,3-5 => [1, 3, 4, 5]
void main() {
final List<String> anchors = ["1", "1-3", "1,3", "1,3-5"];
anchors.forEach((anchor) => print("$anchor => ${toNums(anchor)}"));
}
List<int> toNums(str) {
final List<int> result = [];
str.split(",").forEach((param){
if(param.contains("-")) {
result.addAll(hoge(param));
} else {
result.add(int.parse(param));
}
});
return result;
}
List<int> hoge(str) {
final List<int> result = [];
final range = str.split("-");
for(var i = int.parse(range[0]);i <= int.parse(range[1]); i++) result.add(i);
return result;
}
// =>
1 => [1]
1-3 => [1, 2, 3]
1,3 => [1, 3]
1,3-5 => [1, 3, 4, 5]
2020/04/04(土) 13:48:29.31ID:qnbQjwAi
>>72 Python
def strip(s):
s = s.lstrip('0')
if not len(s):
return '0'
return s
def strip(s):
s = s.lstrip('0')
if not len(s):
return '0'
return s
86デフォルトの名無しさん
2020/04/04(土) 14:34:09.15ID:VszBH+2q87デフォルトの名無しさん
2020/04/04(土) 23:52:04.74ID:sokSr0we >>85
""が0になりませんか
""が0になりませんか
2020/04/05(日) 01:07:14.83ID:14D27qM5
89デフォルトの名無しさん
2020/04/05(日) 05:36:36.03ID:sZO7YFrq >>72
Perl5
ある意味手抜きなプログラムである。
https://paiza.io/projects/rlLxhWyuXx9FG7oVB7Kutw
オマケ機能としてマイナスの時に -00009 みたいなやつも -9 になるようにした。
更に、整数の数でない場合(文字列の場合)はダブルクォーテーションで括って出すようにした。
Perl5
ある意味手抜きなプログラムである。
https://paiza.io/projects/rlLxhWyuXx9FG7oVB7Kutw
オマケ機能としてマイナスの時に -00009 みたいなやつも -9 になるようにした。
更に、整数の数でない場合(文字列の場合)はダブルクォーテーションで括って出すようにした。
90デフォルトの名無しさん
2020/04/05(日) 05:42:34.94ID:sZO7YFrq >>72
Kotlin
https://paiza.io/projects/5CLwMbqJUtLbrE6nD5oZOA
>>89よりも更にもっと手抜きである。びっくりするほど何もやってない。仕様は同じ。
Kotlin
https://paiza.io/projects/5CLwMbqJUtLbrE6nD5oZOA
>>89よりも更にもっと手抜きである。びっくりするほど何もやってない。仕様は同じ。
2020/04/05(日) 06:46:49.40ID:14D27qM5
あ〜マイナス値は考慮してなかったな〜
2020/04/05(日) 06:56:54.72ID:RExqiO2w
教えて君の質問に馬鹿正直に答えてやるなよ
2020/04/05(日) 07:43:19.11ID:14D27qM5
94デフォルトの名無しさん
2020/04/05(日) 12:55:09.83ID:SfC0ZJYK 粘着君の意に反して回答わっさわっさ来ててワロタ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 空自機レーダー照射、音声データ公開 中国 ★3 [蚤の市★]
- 日銀「歴史的」利上げ迫る 35年ぶりの年間上げ幅、0.5%の壁を突破 [蚤の市★] [蚤の市★]
- 【無職の男(31)】女子小学生に次々触る 下半身を露出した状態で 公然わいせつ、不同意わいせつ疑い 千葉県警 [nita★]
- 【サッカー】UEFA-CL第6節 インテル×リバプール、バルセロナ×フランクフルト、バイエルン×スポルティングなど [久太郎★]
- 【YouTuber】バイク事故で入院のゆたぼん、振込で「お見舞金」募る [muffin★]
- 低所得層のマクドナルド離れが深刻に 広がる「ファストフード格差」の真相 米国 [少考さん★]
- 【実況】博衣こよりのえちえち朝活🧪
- 中国がここまで過敏になるのは日本に前科があるから。盧溝橋、満州事変。ジャップの先制攻撃は挙げればキリがないけど [472617201]
- 冬季賞与報告スレ [577451214]
- 【悲報】○んもに入る言葉「繁茂」しかない
- ワイ社畜、吐く🤮
- 大学生だけど金なさ過ぎてつまらない
