プログラミングのお題 ..
[2ch|▼Menu]
54:デフォルトの名無しさん
20/03/28 00:46:37 xGS8Imsw.net
>>52 Ruby
def anka(str)
nums=[]
str.split(“,”)


55:.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]



56:デフォルトの名無しさん
20/03/28 01:05:52 ngUeRIaE.net
お題:>>52

例:
>>52に追加で
"1,1" -> [1]
"1-3,2" -> [1,2,3]
"1-4,2-3" -> [1,2,3,4]
"1-4,3-5" -> [1,2,3,4,5]

57:デフォルトの名無しさん
20/03/28 01:08:29 ngUeRIaE.net
やっぱやめた。
よく考えたら>>53のコードに重複削除追加するだけだった

58:デフォルトの名無しさん
20/03/28 09:55:13 YBto5Ud7.net
>>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]

59:◆QZaw55cn4c
20/03/28 10:17:31 WJROMx30.net
>>52 >>54
既出
= スレリンク(tech板:34番),41,83,84
スレリンク(tech板:64番)

60:デフォルトの名無しさん
20/03/28 11:14:59 VFdWLa/U.net
>>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]

61:デフォルトの名無しさん
20/03/28 11:21:13.18 VFdWLa/U.net
>>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]

62:デフォルトの名無しさん
20/03/28 18:22:26.71 ssy5u0i6.net
>>52
Java
URLリンク(paiza.io)

63:デフォルトの名無しさん
20/03/28 18:24:03.79 ssy5u0i6.net
お題:レス番リストを安価に変換せよ
例:
[1] -> "1"
[1,2,3] -> "1-3"
[1,3] -> "1,3"
[1,3,4,5] -> "1,3-5"

64:デフォルトの名無しさん
20/03/28 19:38:54.96 RLgHfGbj.net
前者は2ch browserで使えるけど後者はそうじゃないね

65:デフォルトの名無しさん
20/03/28 23:41:39 X4tW2giy.net
まーたやらな言い訳かー
やる気ねーなw

66:デフォルトの名無しさん
20/03/29 10:50:09 ACisvDeP.net
>>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

67:デフォルトの名無しさん
20/03/29 14:05:00.00 kU1QBoxf.net
>>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

68:デフォルトの名無しさん
20/03/29 18:03:50 5iH4CTSz.net
なにやってるのか全くわからんw

69:デフォルトの名無しさん
20/03/29 18:46:57.43 CipzEZQ7.net
@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を作るところがもう少しエレガントにできればよかったけれど

70:デフォルトの名無しさん
20/03/29 19:07:03 5iH4CTSz.net
なるほど、そうやって並んだ部分でグループ化するのか

71:デフォルトの名無しさん
20/03/30 22:44:25.79 xSpiMCgD.net
>>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

72:デフォルトの名無しさん
20/03/30 22:45:46.57 q7KIsR+X.net
>>69 テスト時のcodeが残ってた…orz
× @b = map{$h{$_}//' '} 1..20;
○ @b = map{$h{$_}//' '} 1..1000;

73:デフォルトの名無しさん
20/03/31 23:56:04.38 9DwI/QO9.net
>>59
めったに使えない evalが入てて楽しい

74:デフォルトの名無しさん
20/04/03 19:14:26.56 tv+k2Xei.net
お題
文字列の先頭から続く、0 は、8進数と解釈されるため、バグります!
なので、それらを除去して、10進数と解釈できる文字列にして下さい。
以下は、すべて文字列です
090 → 90
0080 → 80
123 → 123
0 → 0
000 → 0
"" → ""

75:デフォルトの名無しさん
20/04/03 19:53:54.22 MoLJYTUl.net
>>72 マルチポスト&スレチ
スレリンク(tech板)

76:72
20/04/03 20:02:16.50 tv+k2Xei.net
向こうのスレから移動したので、このスレで続けて下さい!

77:デフォルトの名無しさん
20/04/03 20:06:07.16 etO49JcP.net
粘着者湧いてるじゃん

78:デフォルトの名無しさん
20/04/03 20:13:05 D8CnMwXH.net
>>72
js

result=input==""?"":Number(input)

79:デフォルトの名無しさん
20/04/03 20:17:14 Ea8es11U.net
>>72
perl5
URLリンク(pastebin.com)

80:デフォルトの名無しさん
20/04/03 20:17:36 D8CnMwXH.net
すまん、よく読んでなかったわ

81:デフォルトの名無しさん
20/04/04 00:40:59 oi+wB/l2.net
>>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



82:123 → 123 0 → 0 000 → 0



83:デフォルトの名無しさん
20/04/04 00:43:04 7bsK3hPl.net
>>79 いや、([\d])は(\d)で十分だた…

for $a (qw{090 0080 123 0 000}) {
 ($b = $a) =~ s/^0*(\d)/$1/;
 print "$a → $b\n"
}

84:デフォルトの名無しさん
20/04/04 01:02:31.09 PfYZfNM0.net
>>80
r オプションつかうと括弧省ける
$b = $a =~ s/^0*(\d)/$1/r;

85:デフォルトの名無しさん
20/04/04 01:49:49 jL2VaRwC.net
>>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

86:72
20/04/04 12:46:11.12 1ehA2Rbs.net
>>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", "" ]

87:デフォルトの名無しさん
20/04/04 13:37:45 tmNSQTrZ.net
>>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]

88:デフォルトの名無しさん
20/04/04 13:48:29 qnbQjwAi.net
>>72 Python

def strip(s):
  s = s.lstrip('0')
  if not len(s):
    return '0'
  return s

89:デフォルトの名無しさん
20/04/04 14:34:09.15 VszBH+2q.net
>>72
Java
URLリンク(paiza.io)

90:デフォルトの名無しさん
20/04/04 23:52:04.74 sokSr0we.net
>>85
""が0になりませんか

91:デフォルトの名無しさん
20/04/05 01:07:14.83 14D27qM5.net
>>72
>>85修正
URLリンク(ideone.com)

92:デフォルトの名無しさん
20/04/05 05:36:36.03 sZO7YFrq.net
>>72
Perl5
ある意味手抜きなプログラムである。
URLリンク(paiza.io)
オマケ機能としてマイナスの時に -00009 みたいなやつも -9 になるようにした。
更に、整数の数でない場合(文字列の場合)はダブルクォーテーションで括って出すようにした。

93:デフォルトの名無しさん
20/04/05 05:42:34.94 sZO7YFrq.net
>>72
Kotlin
URLリンク(paiza.io)
>>89よりも更にもっと手抜きである。びっくりするほど何もやってない。仕様は同じ。

94:デフォルトの名無しさん
20/04/05 06:46:49.40 14D27qM5.net
あ〜マイナス値は考慮してなかったな〜

95:デフォルトの名無しさん
20/04/05 06:56:54 RExqiO2w.net
教えて君の質問に馬鹿正直に答えてやるなよ

96:デフォルトの名無しさん
20/04/05 07:43:19 14D27qM5.net
>>72 Python
URLリンク(ideone.com)

PerlとKotlinの人のに比べると長くなってしまったのが心残り

97:デフォルトの名無しさん
20/04/05 12:55:09.83 SfC0ZJYK.net
粘着君の意に反して回答わっさわっさ来ててワロタ

98:デフォルトの名無しさん
20/04/05 12:56:43.55 yw9/uuhJ.net
粘着君ってなんやねん
スレチだって言われてんだろ

99:デフォルトの名無しさん
20/04/05 13:01:09.81 SfC0ZJYK.net
えw それ言ってるのが粘着君じゃないの?w
どの辺がスレチなのか知らんけど君の意見なんか誰も同調しないかのように回答わさわさなのを見てどんな気持ち???w

100:デフォルトの名無しさん
20/04/05 13:06:14.44 yw9/uuhJ.net
あほくさ

101:デフォルトの名無しさん
20/04/05 13:06:52.23 liJZihU7.net
>>72 GNU Smalltalk
| fn |
fn := [:str | str isEmpty ifTrue: [str] ifFalse: [str asNumber]].
(#('090' '0080' '123' '0' '000' '') collect: fn) display.
=> (90 80 123 0 0 '' )
URLリンク(ideone.com)

102:デフォルトの名無しさん
20/04/05 13:07:50.11 SfC0ZJYK.net
わざわざ他スレから出張してまで粘着するも自分の思い通りにならず涙目敗北草不可避w

103:デフォルトの名無しさん
20/04/05 13:08:52.29 5b4pXRMu.net
ID:SfC0ZJYKは有名な荒しだよ
スルーしな

104:デフォルトの名無しさん
20/04/05 13:10:52.18 SfC0ZJYK.net
そのように言っている自分自身の策略書き込みがスルーされているという悲劇ww

105:デフォルトの名無しさん
20/04/05 13:13:48.87 QyCQlkmw.net
共有NG入ってて草
>>72が自力で解けない時点で脳みそに障害あるだろコイツ

106:デフォルトの名無しさん
20/04/05 13:15:17.06 SfC0ZJYK.net
ブツブツと負け惜しみを垂れ流しているその姿はまさに哀愁満点 w

107:デフォルトの名無しさん
20/04/07 16:39:18 WiIyPE7p.net
>>72
部分解なら lisp で
(loop for i in (list 090 0080 123 0 000 ) do (format t "~d~%" i))
90
80
123
0
0

108:デフォルトの名無しさん
20/04/07 19:00:27.59 i9ABTPYd.net
であればもうこれで十分って感じがしてきた^^;
>>72 GNU Smalltalk
#(090 0080 123 0 000 '') display.
=> (90 80 123 0 0 '' )
URLリンク(ideone.com)

109:デフォルトの名無しさん
20/04/08 07:58:45 5CDGaVzP.net
お題: レスの被アンカー数をレスごとにカウントし、降順に整列して出力せよ
入力は1レス1行で入力され、1行のフォーマットは「レス番:レス内容」でコロンで区切ってある
レスの入力がすべて終わった段階でレスごとに被アンカー数を計算し、「レス番:カウント数」のフォーマットで出力せよ

入力と出力例: URLリンク(ideone.com)

110:デフォルトの名無しさん
20/04/08 16:25:56 gvYQZ6Pp.net
こんな感じで作ったな
select_word_and_anchor.pl
URLリンク(ideone.com)

cat ~/.w3m/keymap
# vim: set nowrap
keymap a EXEC_SHELL "w3m -cols 200 $( echo $W3M_URL| sed 's/[-l][0-9]\+//' ) | /home/web/extract_body_of_2ch.sh | /home/bin/select_word_and_anchor.pl|less"

111:デフォルトの名無しさん
20/04/08 16:30:02 gvYQZ6Pp.net
動作はこんな感じ 例にあるような常用2chアンカー機能する
URLリンク(i.imgur.com)

112:デフォルトの名無しさん
20/04/08 23:06:09 jh8IMM/7.net
>>106 Perl5

for (<>) {
 ($r, @a) = /([-\d]+)/g;
 push @s, $r;
 for (@a) {
  @b = /(\d+)/g;
  $h{$_}++ for $b[0]..$b[-1]
 }
}
printf "%d: %d\n", $_, $h{$_}//0 for @s;

実行結果
URLリンク(ideone.com)

113:デフォルトの名無しさん
20/04/09 00:05:07.49 VEjEdiDF.net
>>106 Perl5、ゴメン「降順に整列」が抜けてた…orz、やり直し
for (<>) {
 ($r, @a) = /([-\d]+)/g;
 push @s, $r;
 for (@a) {
  @b = /(\d+)/g;
  $h{$_}++ for $b[0]..$b[-1]
 }
}
@t = sort{$h{$b} <=> $h{$a}} @s;
printf "$_: %d\n", $h{$_}//0 for @t;
実行結果
URLリンク(ideone.com)

114:デフォルトの名無しさん
20/04/09 10:38:42 Sx5ouxFp.net
>>106
話題そらそうと粘着君が必死だねwww負け組だっさwww

115:デフォルトの名無しさん
20/04/09 12:42:58.73 5swiwcjH.net


116:デフォルトの名無しさん
20/04/09 15:48:38 pqMoXxyo.net
荒らしは必ず、2回書き込む。
「そうだよね」とか、同意するレスを付けて、人数が多いように見せる

くだすれPython(超初心者用) その47【Ruby禁止】

Ruby禁止とか、色々なスレのタイトルを勝手に変える

工学部というコテハンだろ。
ソースコードを書かないし、プログラマーじゃないから相手をしないように!

117:デフォルトの名無しさん
20/04/09 16:48:05.84 G208HopB.net
>>113
そのスレは別のスレであり話題としてスレ違い。
そもそもそれらのスレでRuby禁止と付けられる原因を作っているお前が言うな。
お前こそコテハンをつけるか書き込みをやめるかしろよ。

118:デフォルトの名無しさん
20/04/09 16:59:35 EoH4bsm+.net
>>113
悔しいんでしょwwそうゆう風にいつまでも負け惜しみ言ってなよwww

119:デフォルトの名無しさん
20/04/10 15:52:58 FxL3k9Tv.net
>>110
コード短いね

120:デフォルトの名無しさん
20/04/10 15:53:17 FxL3k9Tv.net
ageてしまった

121:デフォルトの名無しさん
20/04/10 17:33:36 gIxx/WN6.net
気にすんな

122:デフォルトの名無しさん
20/04/10 17:34:13 GWaBtrPd.net
age禁止ってまだやってんの?

123:デフォルトの名無しさん
20/04/10 17:42:36 7f4O8kzL.net
非常事態を宣言します

124:デフォルトの名無しさん
20/04/10 20:50:54 gIxx/WN6.net
このスレは放っておくとすぐ過疎っちゃうんだからむしろもっともっと激しくテッテ的にage続けるべきだ。

125:デフォルトの名無しさん
20/04/11 00:56:36 qHx8Q1G9.net
>>110
for (´・ω・`) {
}

126:デフォルトの名無しさん
20/04/11 01:07:31 Rbw4pROQ.net
>>106 Python
URLリンク(ideone.com)

127:デフォルトの名無しさん
20/04/11 01:11:10 fnqXUaLM.net
(><)

128:デフォルトの名無しさん
20/04/12 00:40:37.82 j0O/fDVx.net
>>106
Java
URLリンク(paiza.io)

129:デフォルトの名無しさん
20/04/13 23:30:53.99 +Sqc38Tr.net
>>106
Kotlin
URLリンク(paiza.io)

130:デフォルトの名無しさん
20/04/14 00:06:26.40 hs9mI5+o.net
>>106
Kotlin
正規表現使わない版
URLリンク(paiza.io)
更に最初から SortedMap に入れるようにした。

131:デフォルトの名無しさん
20/04/14 01:39:02.43 hs9mI5+o.net
>>106
C
URLリンク(paiza.io)
やっぱCで標準のライブラリしか使わないと長くなるな。

132:デフォルトの名無しさん
20/04/14 01:44:11 cZOfM+S5.net
if(m[n]==null) m[n]=1
の部分と三項演算子の部分の後分は機能が被ってませんか?

133:デフォルトの名無しさん
20/04/14 12:04:01 ZuF0W/s6.net
>>61 Perl5、正規表現を使った文字列処理ではなく、数値のリストに対する処理として書いてみた

sub f {
 my @s;
 while (my $e = shift) { push @s, $e }
 @_ ? (@s ? (\@s, f(@_)) : f(@_)) : \@s;
}
sub g { @_ > 2 ? "$_[0]-$_[-1]" : @_ }
for ([1], [2,3], [1,2,3], [1,3], [1,3,4,5], [7,9]) {
 @a = ();
 @a[@$_] = @$_;
 @b = f @a;
 @c = map{g @$_} @b;
 $"=',';
 print "[@$_] -> '@c'\n";
}

実行結果
~ $ perl 17_61_resanc_0414fp.pl
[1] -> '1'
[2,3] -> '2,3'
[1,2,3] -> '1-3'
[1,3] -> '1,3'
[1,3,4,5] -> '1,3-5'
[7,9] -> '7,9'

134:蟻人間 ◆T6xkBnTXz7B0
20/04/14 12:53:55 QRiFiZHs.net
お題: 整数の閉区間がいくつか与えられる。
それらの和集合を求め、それをいくつかの閉区間で出力せよ。
出力の閉区間の個数はなるべく少なくすること。

(


135:例) [1, 5], [2, 6], [-1, 10] ==> [-1, 10]. [2, 3], [3, 4], [7, 10] ==> [2, 4], [7, 10].



136:デフォルトの名無しさん
20/04/14 14:56:59.99 vknfd45S.net
>>129
三項演算子ではない(Kotlinには三項演算子はない)。?: はエルビス演算子で、左側の式が null だったら右側の値を使うというやつ。nullでなければそのまま左側の値を使う。
で、その部分は先頭のレス番号のキーがまだ作られてなかったら0で初期化する部分だ。
m[n] = m[n] ?: 0
とも書けるが、これは何か無駄な感じがする。nullでなければ同じ値の代入になるので。だからifで必要な時だけの代入(初期化)にした。

137:デフォルトの名無しさん
20/04/14 15:14:57 U0kTSrBw.net
>>131 Perl5

sub f {
 my @s;
 while (defined (my $e = shift)) { push @s, $e }
 @_ ? (@s ? (\@s, f(@_)) : f(@_)) : \@s;
}
sub g { map{"[$$_[0],$$_[-1]]"} @_ }
for ([[1, 5], [2, 6], [-1, 10]],
   [[2, 3], [3, 4], [7, 10]]) {
 %h = map{$_ => $_} map{$$_[0]..$$_[1]} @$_;
 @k = sort{$a <=> $b} keys %h;
 @l = f map{$h{$_}} $k[0]..$k[-1];
 $"=',';
 @j = g @$_;
 @k = g @l;
 print "@j ==> @k\n";
}

実行結果
~ $ perl 17_131_intrange.pl
[1,5],[2,6],[-1,10] ==> [-1,10]
[2,3],[3,4],[7,10] ==> [2,4],[7,10]

138:デフォルトの名無しさん
20/04/14 15:35:48 cZOfM+S5.net
>>132
なるほど。ありがとうございます。

139:デフォルトの名無しさん
20/04/14 17:17:14 h96nPay3.net
数式を標準入力から与えられる。
計算結果を出力しなさい。

条件
・数式の長さが1000を超える場合や、不正な数式についてはErrorと出力すること
・整数を出力しなさい
・小数点が出る場合は切り捨てた値を出力すること
・eval禁止
・数式に利用できる文字 0123456789+-*/()
・数式に半角スペースは含まれない

140:デフォルトの名無しさん
20/04/14 17:45:13.26 SdOMVfQl.net
>>135 数式のサンプルよろ

141:デフォルトの名無しさん
20/04/14 17:50:15.21 OuRgqSbO.net
100/2(3+4)
はいくつですか?

142:デフォルトの名無しさん
20/04/14 17:56:57 7oi1O/kb.net
>>137
*が省かれているからErrorとする
あるいは100/2*(2+3)とみなして250
じゃまいか

143:蟻人間 ◆T6xkBnTXz7B0
20/04/14 19:35:28 Ozse1OSh.net
お題: CD/DVDドライブのトレイを開きなさい。

144:デフォルトの名無しさん
20/04/14 19:48:22 rsqvGSlE.net
>>135 Ruby

eval gets rescue $><<:Error

145:デフォルトの名無しさん
20/04/14 19:50:23 rsqvGSlE.net
typo

p eval$_ rescue$><<:Error while gets

146:デフォルトの名無しさん
20/04/14 20:13:52.06 AV9/Nsy0.net
>>139
言語:日本語
実行:日本人
CD/DVDドライブのトレイを開きなさい。

147:
20/04/14 20:35:51.72 42R+WK0w.net
>>142
言語:日本語
実行:日本語を理解する人
の方が正確ですね

148:デフォルトの名無しさん
20/04/14 22:24:45 8w/NVh3l.net
>>139 Python

import ctypes
ctypes.windll.WINMM.mciSendStringW(u"set cdaudio door open", None, 0, None)

149:デフォルトの名無しさん
20/04/15 01:04:36.72 RHvlA1sV.net
三項演算子ないとかゴミだな

150:デフォルトの名無しさん
20/04/15 12:23:24 229B67vy.net
>>131 js

let input = [[2, 3], [3, 4], [7, 10]];

let result = input.reduce((merged, range) => {
let under = range.map(n =>
merged.filter(mrange => mrange[0] <= n && n <= mrange[1])[0]||[]);

let extended = [under[0][0] || range[0], under[1][1] || range[1]];

let bored = merged.filter(mrange => !(extended[0] <= mrange[0] && mrange[1] <= extended[1]));

return [...bored, extended];
}, []);

console.log(result);

151:デフォルトの名無しさん
20/04/15 12:57:38 qoEmvMwd.net
>>135 F#
URLリンク(ideone.com)

152:デフォルトの名無しさん
20/04/15 15:02:35.67 3oL83xUj.net
>>145 Perl5、再帰降下parser generator使わせてもらいました
sub evalop {
 my (@list) = @{$_[0]};
 my $val = shift(@list)->();
 while (@list) {
  my ($op, $arg2) = splice @list, 0, 2;
  $op->($val,$arg2->());
 } $val }
use Parse::RecDescent;
$parse = new Parse::RecDescent(<<'EOG');
 formula: expr /\s*\Z/ {$item[1]->()} | <error>
 expr: <leftop:muldiv add_op muldiv> {sub {::evalop $item[1]}}
 add_op: '+' {sub {$_[0] += $_[1]}} | '-' {sub{ $_[0] -= $_[1]}}
 muldiv: <leftop:factor mult_op factor> {sub {::evalop $item[1]}}
 mult_op: '*' {sub {$_[0] *= $_[1]}} | '/' {sub {$_[0] /= $_[1]}}
 factor: number | '(' expr ')' {$item[2]}
 number: /\d+/ {sub {$item[1]}}
EOG
for (<DATA>) {
 chomp;
 $ret = defined ($iret = $parse->formula($_)) ? sprintf('%d', $iret) : 'Error';
 printf "$_ = %s\n", $ret;
}
__DATA__
1+2*((3-4*5)/6+7)*8-9
100/2(3+4)
100/2*(3+4)
*10
1/3*3

153:デフォルトの名無しさん
20/04/15 15:04:17.94 IXOt/09v.net
>>148
アンカーしくった…orz
>>135 宛でした。
実行結果
~ $ perl 17_135_recdecexpr.pl
    ERROR (line 1): Invalid formula: Was expecting /\s*\Z/ but found
            "(3+4)" instead
    ERROR (line 1): Invalid formula: Was expecting expr
1+2*((3-4*5)/6+7)*8-9 = 58
100/2(3+4) = Error
100/2*(3+4) = 350
*10 = Error
1/3*3 = 1

154:蟻人間 ◆T6xkBnTXz7B0
20/04/15 21:28:09 mz+a7+dL.net
お題: 二次元空間にナゾの物体Pが2個ある。2個のPは初期状態に(-3, -2), (3, 1)[単位:m]にあるものと仮定する。
2個のPは離れすぎると距離r[m]に比例する引力加速度2*r[m/s^2]を生じ、近づきすぎると距離r[m]に反比例する反発
加速度k/r[m/s^2]が発生する。rが収束するとき(一秒あたりの距離の変化が0.01[m]以下)の距離をRと表す。
kとRの関係を調べたい。kを1.0から1.5まで0.1刻みで動かし、それぞれで数値積分によって2つのPの収束位置を近似計算し、Rを求め、(k, R)の組を出力せよ。

155:デフォルトの名無しさん
20/04/15 21:56:01.64 //wWJwAN.net
はい、次の方どうぞ

156:蟻人間 ◆T6xkBnTXz7B0
20/04/15 22:30:18 mz+a7+dL.net
お題: 次のようなプログラムを作れ。プログラムを起動したとき、ファイル「times.txt」に現在の日時を秒単位で記録した後、
前回の起動日時との差を求め、時間差の秒数を表示せよ。
ただし、うるう秒を考慮すること。

157:デフォルトの名無しさん
20/04/15 23:31:28 /1JmN5U2.net
>>150
慣性が働いて抵抗が無いなら収束などしない
永遠に振動し続ける

初速度も書いて無いし
離れすぎ、近づきすぎの条件も書いてない

158:デフォルトの名無しさん
20/04/16 00:11:24 qhHxDSDQ.net
>>131 c
URLリンク(ideone.com)

159:デフォルトの名無しさん
20/04/16 00:30:51 qxGCpnz3.net
乙。

160:デフォルトの名無しさん
20/04/16 01:19:43 6omvFBXS.net
>>153
アスペルガー症候群は黙ってた方がいい

161:デフォルトの名無しさん
20/04/16 01:25:27 Yc0fbgtG.net
初速度や離れすぎ、近づきすぎの条件が書いてないのは事実で回答しようも無いんだし
そういうのはやめたらどうかと思うんだが

162:デフォルトの名無しさん
20/04/16 01:27:18 iTxUXfYH.net
そういう柔軟性のなさがアスペルガー症候群くさいんだよなぁ…
まあ本当は出題の意図は分かってて敢えてイチャモン付けてるんだろうけど

163:デフォルトの名無しさん
20/04/16 01:28:44 Yc0fbgtG.net
>>158
じゃあ、お前さんがお題の回答プログラム
どうぞよろしく

164:デフォルトの名無しさん
20/04/16 01:37:52 iTxUXfYH.net
俺なら初期位置も計算の打ち止め条件も完全に無視してポテンシャルの極小値を求めるプログラムを書いて提示するかな
出題者が期待してるのはそういうものだろうし些細な出題の問題点をいちいち指摘してボツにさせる気なんか起きないな

165:デフォルトの名無しさん
20/04/16 01:40:49 s4YIDkZq.net
>>160
そのプログラムを投稿すればいいだけの話

166:デフォルトの名無しさん
20/04/16 01:43:39 iTxUXfYH.net
じゃあ俺はアスペルガー症候群では?って言っただけの話

167:デフォルトの名無しさん
20/04/16 01:47:00 s4YIDkZq.net
>>161
自分では回答も提示せず人様をアスペ呼ばわりして
でも周りはアスペではなかったどうするの

168:デフォルトの名無しさん
20/04/16 01:49:51 s4YIDkZq.net
無名掲示板とはいえ、人様に言う言葉にはもう少し気を使え

169:デフォルトの名無しさん
20/04/16 01:50:45 XsJA9brB.net
せっかく考えて出題してくれてるのに頭ごなしにボツにされようとしてるのを見て許せなかったんだよ

170:デフォルトの名無しさん
20/04/16 01:52:40 s4YIDkZq.net
それとこれとは別問題
お前の気分しだいで人に失礼なことをするのはよせ

171:デフォルトの名無しさん
20/04/16 01:54:43 0k+XXy1f.net
君、ネット向いてないよ

172:デフォルトの名無しさん
20/04/16 01:57:06.29 s4YIDkZq.net
飲むとスルー力が鈍るのは認める。

173:デフォルトの名無しさん
20/04/16 01:58:36.86 XeDXz4LY.net
まるでシラフならスルースキル高いかのような言い草で寒っ

174:デフォルトの名無しさん
20/04/16 02:00:46.80 s4YIDkZq.net
今日はちょっと虫の居所が悪くてな、すまんな。
ちな上の方のレスのうち、どれが俺の回答か分かるかな

175:デフォルトの名無しさん
20/04/16 02:05:16 oMF0NE5s.net
急に語り出して劇寒

176:デフォルトの名無しさん
20/04/16 02:06:03 s4YIDkZq.net
あげあしとりで終わりかよ
つまんねー

177:デフォルトの名無しさん
20/04/16 02:08:57 s4YIDkZq.net
>>150
大体お前が悪いんだよ
もう少し考えて出題できませんかね

178:デフォルトの名無しさん
20/04/16 02:21:19.79 kjXrQDZb.net
今までも同じようにあまりよろしくないお題を出してそのたびにスルーか同じように指摘され続けてるんだからこんなもんでは?
個人的には全く解いてみたいと思えないお題ばかり
お題作るのは難しいなぁとつくづく感じる

179:デフォルトの名無しさん
20/04/16 02:24:22.48 7PlP0fH8.net
ここはすききらいをしゃべるすれではありません

180:デフォルトの名無しさん
20/04/16 02:24:26.49 GrYlaJ67.net
お題作るのは難しいよ
ちょうどいい難易度が難しい

181:デフォルトの名無しさん
20/04/16 02:25:43.69 s4YIDkZq.net
そりゃ気持ちはわかっけどさー
解いてみたいと思えないお題ばかり、ってことはさすがに無い。
お題によって回答したい、したくないはあるぞ、
時間が許せば、それには回答してきた

182:デフォルトの名無しさん
20/04/16 02:27:00.67 /gsmKway.net
おまえ名言()とか好きそうだな

183:デフォルトの名無しさん
20/04/16 02:27:53.73 s4YIDkZq.net
>>178
何か心に響いたか?

184:デフォルトの名無しさん
20/04/16 04:43:54 G88s3oE4.net
糞コテのお題をスルーできてない時点でどっちもゴミ

185:デフォルトの名無しさん
20/04/16 05:18:07 FKJpjkAo.net
お題、JAVA

ウインドウで、ボールを動かして、振り子にしろ。

186:デフォルトの名無しさん
20/04/16 15:33:05.77 CZ2awm/7.net
>>181 js(Javaじゃなくてすまん)
URLリンク(codepen.io)

187:デフォルトの名無しさん
20/04/16 18:34:42.45 Ao1pcPxo.net
眠くなってきた

188:デフォルトの名無しさん
20/04/16 19:17:37.16 A3RNLqkM.net


189:デフォルトの名無しさん
20/04/16 19:18:52.09 D2Oboa0/.net
>>182
しゅごい・・・

190:デフォルトの名無しさん
20/04/16 21:50:22 yL7j0Eir.net
お題:
2次元平面上の点が5つ与えられる。
これらを順番に線分で結んだとき、星形が構成できるかどうか判定せよ

0 0
1 2
2 0
0 1
2 1
=> true

0 0
1 2
2 0
0 2
2 2
=> false

0 0
0 1
1 2
2 1
2 0
=> false

0 0
5 5
0 5
1 0
1 6
=> true

191:デフォルトの名無しさん
20/04/16 22:15:17.40 A3RNLqkM.net
線型代数の問題だな

192:デフォルトの名無しさん
20/04/16 22:30:46.61 +l2higCM.net
お題
急減少列かどうかを判定せよ。
ただし急減少列とは、(末尾以外の)どの要素もそれ以降の要素の総和より大きい列のこと。
32,16,8,4,2,1 -> true
32,16,8,4,2,1,1 -> false
610,377,144,55,21,8,3,1 -> true
987,610,233,89,34,13,5,2,1 -> false

193:デフォルトの名無しさん
20/04/16 22:37:52.73 dbvXh7HJ.net
逆順に並べた方が良いなあ
急増加列?

194:デフォルトの名無しさん
20/04/16 22:57:42 tWuPngtw.net
>>188 Perl5

sub f {
 my $i = shift;
 my $r = f(@_) if @_;
 $i <= $r and die;
 $i + $r;
}
for ([32,16,8,4,2,1], [32,16,8,4,2,1,1], [610,377,144,55,21,8,3,1], [987,610,233,89,34,13,5,2,1]) {
 eval { f @$_ };
 $s = "$@" ? 'false' : 'true';
 $"=','; print "@$_ = $s\n";
}

実行
~ $ perl 17_188_shdec.pl
32,16,8,4,2,1 = true
32,16,8,4,2,1,1 = false
610,377,144,55,21,8,3,1 = true
987,610,233,89,34,13,5,2,1 = false

195:デフォルトの名無しさん
20/04/17 00:26:03.00 aBy1G2y60.net
>>186 js
線分交差判定アルゴリズムはググった
URLリンク(ideone.com)

196:デフォルトの名無しさん
20/04/17 02:37:38 GLu8MX8J.net
>>188
Perl5
URLリンク(paiza.io)

単に逆順にして加算しながら比較しているだけの誰にでも出来る簡単なお仕事。

197:デフォルトの名無しさん
20/04/17 09:07:37.71 uUpf2Y3l.net
>>186
URLリンク(ideone.com)

198:デフォルトの名無しさん
20/04/17 09:10:52.22 uUpf2Y3l.net
直線と点の位置関係判別を6回に減らした

199:デフォルトの名無しさん
20/04/17 16:03:16 FcD+/8tF.net
>>186 Perl5、PDL(Pythonで言うならnumpyとscipyを合わせたようなPerlモジュール)を使わせてもらいました

@t = ([[0,0], [1,2], [2,0], [0,1], [2,1]],
   [[0,0], [1,2], [2,0], [0,2], [2,2]],
   [[0,0], [0,1], [1,2], [2,1], [2,0]],
   [[0,0], [5,5], [0,5], [1,0], [1,6]]);
use PDL;
use PDL::Math;
for $ps (@t) {
 $ang = 0.0;
 for ([0,1,2], [1,2,3], [2,3,4], [3,4,0], [4,0,1]) {
  @p = map{pdl $$ps[$_]} @$_;
  $v1 = norm($p[0] - $p[1]);
  $v2 = norm($p[2] - $p[1]);
  $spro = sum($v1 * $v2);
  $ang += acos($spro);
 }
 $ang = abs($ang);
 $ans = ($ang > 3.14 and 3.15 < $ang) ? 'true' : 'false';
 print "$ans\n";
}

実行結果
~ $ perl 17_186_istar.pl
false
false
true
false

200:デフォルトの名無しさん
20/04/17 17:08:25 TdOLExdu.net
>>195 間違えてた
× $ans = ($ang > 3.14 and 3.15 < $ang) ? 'true' : 'false';
○ $ans = (3.14 < $ang and $ang < 3.15) ? 'true' : 'false';

しかし、実行結果は
~ $ perl 17_186_istar.pl
true
true
false
true

二番目がtrueになってしまう…orz

201:デフォルトの名無しさん
20/04/17 17:12:31 tQG0pn8t.net
>>196
内角の和が180°かで判定すると二番目のデータのような
星のひしゃげたような形も星型扱いされてしまう
交線計算が要るんじゃないかな

202:デフォルトの名無しさん
20/04/17 18:56:51 uUpf2Y3l.net
>>193
条件が1個足りなかった
最低7回ですかね

203:デフォルトの名無しさん
20/04/17 19:39:38.21 uUpf2Y3l.net
URLリンク(ideone.com)

204:デフォルトの名無しさん
20/04/17 23:20:45 GLu8MX8J.net
>>188
Kotlin
URLリンク(paiza.io)

やってることは >>192 とほぼ同じ。reduce() という丁度良いやつがあったのでそれを使った。

205:デフォルトの名無しさん
20/04/18 04:51:44 hOyj3UHi.net
お題: クリックすると画面が上下左右に揺れまくるボタンを作りなさい

206:デフォルトの名無しさん
20/04/18 06:43:51.86 YnXQesFn.net
「五角形P0-P1-P2-P3-P4が星形である」と「五角形P0-P2-P4-P1-P3が凸五角形である」は同値でいいのかな

207:デフォルトの名無しさん
20/04/18 06:48:34 N4WXNODD.net
自明だね

208:デフォルトの名無しさん
20/04/18 14:12:42.90 IwpZ9OtG.net
atan2とか要りそう
知らんけど

209:デフォルトの名無しさん
20/04/18 14:40:52 rV7GPkSs.net
内積とかでできそう
知らんけど

210:デフォルトの名無しさん
20/04/18 16:18:27.16 /6mIZfhm.net
>>203 同値ではない
>>186 の三番目のデータは凸五角形だが、順番に線分で結んでも星形にならない

211:デフォルトの名無しさん
20/04/18 16:34:26 N4WXNODD.net
>>206
3番目のデータに関して
「五角形P0-P1-P2-P3-P4が星形である」 => false
「五角形P0-P2-P4-P1-P3が凸五角形である」 => false

反例にはなっていないはずだが?

212:デフォルトの名無しさん
20/04/18 16:47:06 30AxPVCB.net
「五角形P0-P1-P2-P3-P4が凸五角形である」 => true
「五角形P0-P2-P4-P1-P3が星形である」 => true

多分言いたいのはこっちでしょ
いずれにしろ反例になってないけど

213:デフォルトの名無しさん
20/04/18 16:59:35 oyi4MQQP.net
結局コードは同じになりそう
知らんけど

214:デフォルトの名無しさん
20/04/18 17:09:16.93 30AxPVCB.net
そりゃ同値なんだから
点の指定順が変わるだけ

215:デフォルトの名無しさん
20/04/18 17:29:34 8ogfpEcQ.net
同値だと違うアルゴリズムでも同じコードになるのか
知らんかった

216:デフォルトの名無しさん
20/04/18 17:34:30 30AxPVCB.net
何を言ってるんだこの人は

217:デフォルトの名無しさん
20/04/18 17:37:26 8ogfpEcQ.net
なんだ違うのか orz

218:デフォルトの名無しさん
20/04/18 18:04:17.09 U3Va20gw.net
いつものキチガイでしょ。

219:デフォルトの名無しさん
20/04/18 22:39:39.01 9Ypi4rqk.net
>>207
4番目のデータは?

220:デフォルトの名無しさん
20/04/18 22:46:42.32 N4WXNODD.net
>>215
「五角形P0-P1-P2-P3-P4が星形である」 => true
「五角形P0-P2-P4-P1-P3が凸五角形である」 => true
だから反例じゃねえだろ
つーか凸角形の定義と対角線の定義から同値性は自明だろ
何が分からないのかが素でわからん
というか日本語通じてんのかこれ

221:デフォルトの名無しさん
20/04/18 22:48:13.84 n1sMw7/h.net
またキチガイが暴れてるのか…

222:デフォルトの名無しさん
20/04/18 22:50:15.61 H1RDccYw.net
>>216
4番目のデータの「五角形P0-P2-P4-P1-P3」は変な形してない?

223:デフォルトの名無しさん
20/04/18 22:50:52.43 N4WXNODD.net
>>218
綺麗な凸5角形ですがなにか

224:デフォルトの名無しさん
20/04/18 22:52:15 n1sMw7/h.net
ID真っ赤やん

225:デフォルトの名無しさん
20/04/18 22:53:23 r5aLC6gt.net
>>219
「P0-P2-P1-P4-P3」のことを言っている?
「P0-P2-P4-P1-P3」を結んだ五角形みた?

226:デフォルトの名無しさん
20/04/18 22:54:18 N4WXNODD.net
>>221
「P0-P2-P4-P1-P3」が綺麗な凸5角形だと言ってる

>>220
お前は死ね

227:デフォルトの名無しさん
20/04/18 22:57:07 N4WXNODD.net
これ見てよく考えて

_4____
2____1
______
______
______
______
03____

228:デフォルトの名無しさん
20/04/18 22:59:19 GFBeMLbL.net
>>221
ホントだすまんおれの手元の描画ミス

検算プログラム書いたが4番目のデータ、0-2-4-1-3で一周回ってきたときの方向かえる角度の和が2piにならんのよね
ANG: -0.785398163397448 -1.03037682652431 -1.14103404769821 -0.896055384571344 -1.5707963267949
和: -5.42366074898621

なーにかが間違ってるのか…

229:デフォルトの名無しさん
20/04/18 23:19:38 3QrrEgXO.net
五角形の内角の和は540度だぞw

230:デフォルトの名無しさん
20/04/18 23:23:05 N4WXNODD.net
内角じゃなくてどれだけ曲がったかの和を計算してるんだから2PIで良いだろ
数値があってんのかは知らんが

231:デフォルトの名無しさん
20/04/18 23:50:57 tXl890QR.net
ニチャァ…


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

1382日前に更新/264 KB
担当:undef