◎正当な理由による書き込みの削除について: 生島英之とみられる方へ:
プログラミングのお題スレ Part17 YouTube動画>1本 ->画像>6枚
動画、画像抽出 ||
この掲示板へ
類似スレ
掲示板一覧 人気スレ 動画人気順
このスレへの固定リンク: http://5chb.net/r/tech/1584031367/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。
お題:
日本式ローマ字の文字列をひらがなに変換してください
入力:tokugawayosimunehaedozidaidaihatidaisyougun
お題: なるべく短い文字数のコマンドで自動的にMS-DOSのシステムを完全停止させる。
>>6 やっぱりお題を撤回します。古いハードディスクの関係で、システムを強制終了するとドライブが壊れる可能性があるらしいので。つまんないの。
お題: 一辺2000メートルの正方形の平面上にランダムに動く物体5個がある。正方形の中心に自機があり、自機を中心にレーダー電波が一定速度で回転しながら常に放射されている。
物体がレーダー電波に当たるとその瞬間にその物体までの距離と方向がわかる仕組みになっている。
各物体が直線等速運動をしていると仮定して随時に各物体の速度を推定し、物体が100メートルより近いときは、それが当たりそうな場所に向かってミサイルを自動的に発射する次のようなアルゴリズムを作れ。
1. 毎分ごとに物体5個の位置(Pxn, Pyn)と推定速度(Vxn, Vyn)を報告すること。
2. 自機は動かない。
3. ミサイルを発射するときは方向(Tn; ラジアン)を報告すること。ミサイルの速さは毎秒5メートルである。
4. ミサイルの個数には制限がない。
5. ミサイルと物体座標が2メートル以内であれば、ミサイル命中と見なす。命中すれば物体は消える。実際に消えたときは消えた位置を報告する。
前スレの6N+1型と6N-1型の素数どちらが多いかという問題
それぞれの素数全てからなる集合をA, B としたとき、A, Bの濃度はどちらも?_0であり等しい。
問題(と出題者の)頭が悪すぎ
頭悪いと言われるけど、技術的な問題を作れるヤツが少ないから困ってるんだ。
80年代の防衛システムを作れる奴が居ないんだぜ。
ひつじのような学生ばかり作って必要な分野に投資しない。この国はお金を動かす奴等が馬鹿ばかりだ。
>>11 どちらも有限個でない証明がいるんじゃね?
双子素数の無限存在の十分条件だな(´・ω・`)
Oops sorry 6nプラマイ型の無限性じゃ双子予想導けなかった(´・ω・`)
>>15 Dirichlet prime number theoremでググれ
初等的な照明は6n±1どちらも簡単
2種類のSSRキャラが各2%、2種類のSRキャラが各2.5%の確率で排出されるガチャがある
これら4種のキャラが全て(各1体以上)出るまでに必要なガチャ回数の期待値は何回か
また、一日3回ガチャした場合に、イベント期間中の2週間(14日)で出る確率はいくらか
無限につづく数列の足し算はできる言語あるの?(wolframとか??)
シグマ(k=4から無限まで) Pk
Pnとは n回で出る時の確率であり
Pn = (0.02*0.025)^2 * (0.91)^(n-4) * (n-1 C 3)
>>6 本当にMS-DOSならばいきなり電源切ればいいのでは?
>>20 Ctrl+Cかexitしないとハードディスクが壊れるというハードウェアがあったらしい。
>>21 あー。HDD付いてるのか。
フロッピーディスクのみかと思った。
>>19 数式処理ができる言語なら級数の収束が数式で解けるから
できるはずだが
(多項式)*(等比数列)の形の級数に限れば多項式を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)を使えば求められる
だから多項式を展開できて連立方程式が解ける言語ならなんでも
>>10 ミサイルの速度遅くね?
敵の速度ってどれくらい?
お題: ミサイル迎撃システムがある
関数analyzeに敵ミサイルの座標である「緯度」「経度」「高度」が渡されるので敵ミサイルを迎撃せよ
なおこのanalyze関数は敵ミサイルが飛翔している間、座標を更新しながら100ミリ秒ごとに繰り返し呼ばれるものとする
敵ミサイルの高度が0以下になった場合、ミサイルの迎撃に失敗したものとみなす
迎撃ポイントを確定したら関数fireを呼び出し、敵ミサイルを撃墜すること
なお迎撃に使うレーザー砲は敵ミサイルに届くまで1秒かかるものとする
敵ミサイルの軌道は直線的とし、重力や空気抵抗を考慮しないものとする
レーザーが届くまでに一秒かかるということは
ミサイルの位置も一秒前のものしかわからないわけだな
高度は地表からの距離だろうか。
地球が完全な球と仮定してよいか。
地球の半径、迎撃レーザーの発射点の座標とかは勝手に決めてよいのか。
ミサイルの起動について地球の自転は考慮不要か。
ミサイルの起動は直線だとして速度が一定と仮定してよいのか。
>>28 指摘された点を推敲したいと思います・・・
>>31 かなり杜撰な問題だと思うけどそもそも自分でちゃんと解いたのか?
テキトーすぎる
コテ関係なく質がひどすぎるお題なんて触れなくておk
奇形のデブス前にしてチンコ勃てろと言ってるようなもの。
それでEDと罵られても困る。
リーマン球面は複素平面である。
故に球面は平面である。
Q.E.D.
Gとなる、というのは解がGの文字の字形になるということか?
Gの文字の字形に定義はあるの?
お題: 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
色の正規化の方法など、詳しいことは一任するが、↑の色定数の名前に近似するように調整すること
>>42 訂正: MAGENTA -> PURPLE
int conv(int r, int g, int b){
return (r&0x80?200:100) + (g&0x80?20:10) + (b&0x80?2:1);
}
>>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
>>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 "
お題:安価をレス番リストに変換せよ
例:
"1" -> [1]
"1-3" -> [1,2,3]
"1,3" -> [1,3]
"1,3-5" -> [1,3,4,5]
>>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]
お題:
>>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]
やっぱやめた。
よく考えたら
>>53のコードに重複削除追加するだけだった
>>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]
>>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]
>>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]
お題:レス番リストを安価に変換せよ
例:
[1] -> "1"
[1,2,3] -> "1-3"
[1,3] -> "1,3"
[1,3,4,5] -> "1,3-5"
前者は2ch browserで使えるけど後者はそうじゃないね
>>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
>>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
@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を作るところがもう少しエレガントにできればよかったけれど
なるほど、そうやって並んだ部分でグループ化するのか
>>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
>>69 テスト時のcodeが残ってた…orz
× @b = map{$h{$_}//' '} 1..20;
○ @b = map{$h{$_}//' '} 1..1000;
>>59 めったに使えない evalが入てて楽しい
お題
文字列の先頭から続く、0 は、8進数と解釈されるため、バグります!
なので、それらを除去して、10進数と解釈できる文字列にして下さい。
以下は、すべて文字列です
090 → 90
0080 → 80
123 → 123
0 → 0
000 → 0
"" → ""
向こうのスレから移動したので、このスレで続けて下さい!
>>72 js
result=input==""?"":Number(input)
>>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
>>79 いや、([\d])は(\d)で十分だた…
for $a (qw{090 0080 123 0 000}) {
($b = $a) =~ s/^0*(\d)/$1/;
print "$a → $b\n"
}
>>80 r オプションつかうと括弧省ける
$b = $a =~ s/^0*(\d)/$1/r;
>>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
>>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", "" ]
>>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] >>72 Python
def strip(s):
s = s.lstrip('0')
if not len(s):
return '0'
return s >>72 Perl5
ある意味手抜きなプログラムである。
https://paiza.io/projects/rlLxhWyuXx9FG7oVB7Kutw オマケ機能としてマイナスの時に -00009 みたいなやつも -9 になるようにした。
更に、整数の数でない場合(文字列の場合)はダブルクォーテーションで括って出すようにした。
>>72 Python
https://ideone.com/Q5vth7 PerlとKotlinの人のに比べると長くなってしまったのが心残り
えw それ言ってるのが粘着君じゃないの?w
どの辺がスレチなのか知らんけど君の意見なんか誰も同調しないかのように回答わさわさなのを見てどんな気持ち???w
>>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 '' )
https://ideone.com/x8y6JM わざわざ他スレから出張してまで粘着するも自分の思い通りにならず涙目敗北草不可避w
ID:SfC0ZJYKは有名な荒しだよ
スルーしな
そのように言っている自分自身の策略書き込みがスルーされているという悲劇ww
共有NG入ってて草
>>72が自力で解けない時点で脳みそに障害あるだろコイツ
ブツブツと負け惜しみを垂れ流しているその姿はまさに哀愁満点 w
>>72 部分解なら lisp で
(loop for i in (list 090 0080 123 0 000 ) do (format t "~d~%" i))
90
80
123
0
0
であればもうこれで十分って感じがしてきた^^;
>>72 GNU Smalltalk
#(090 0080 123 0 000 '') display.
=> (90 80 123 0 0 '' )
https://ideone.com/e0kdys お題: レスの被アンカー数をレスごとにカウントし、降順に整列して出力せよ
入力は1レス1行で入力され、1行のフォーマットは「レス番:レス内容」でコロンで区切ってある
レスの入力がすべて終わった段階でレスごとに被アンカー数を計算し、「レス番:カウント数」のフォーマットで出力せよ
入力と出力例:
https://ideone.com/XOytlP こんな感じで作ったな
select_word_and_anchor.pl
https://ideone.com/bpypjv 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"
動作はこんな感じ 例にあるような常用2chアンカー機能する
>>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;
実行結果
https://ideone.com/UVvDtv >>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;
実行結果
https://ideone.com/r4tBGc >>106 話題そらそうと粘着君が必死だねwww負け組だっさwww
荒らしは必ず、2回書き込む。
「そうだよね」とか、同意するレスを付けて、人数が多いように見せる
くだすれPython(超初心者用) その47【Ruby禁止】
Ruby禁止とか、色々なスレのタイトルを勝手に変える
工学部というコテハンだろ。
ソースコードを書かないし、プログラマーじゃないから相手をしないように!
>>113 そのスレは別のスレであり話題としてスレ違い。
そもそもそれらのスレでRuby禁止と付けられる原因を作っているお前が言うな。
お前こそコテハンをつけるか書き込みをやめるかしろよ。
>>113 悔しいんでしょwwそうゆう風にいつまでも負け惜しみ言ってなよwww
このスレは放っておくとすぐ過疎っちゃうんだからむしろもっともっと激しくテッテ的にage続けるべきだ。
if(m[n]==null) m[n]=1
の部分と三項演算子の部分の後分は機能が被ってませんか?
>>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'
お題: 整数の閉区間がいくつか与えられる。
それらの和集合を求め、それをいくつかの閉区間で出力せよ。
出力の閉区間の個数はなるべく少なくすること。
(例)
[1, 5], [2, 6], [-1, 10] ==> [-1, 10].
[2, 3], [3, 4], [7, 10] ==> [2, 4], [7, 10].
>>129 三項演算子ではない(Kotlinには三項演算子はない)。?: はエルビス演算子で、左側の式が null だったら右側の値を使うというやつ。nullでなければそのまま左側の値を使う。
で、その部分は先頭のレス番号のキーがまだ作られてなかったら0で初期化する部分だ。
m[n] = m[n] ?: 0
とも書けるが、これは何か無駄な感じがする。nullでなければ同じ値の代入になるので。だからifで必要な時だけの代入(初期化)にした。
>>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] 数式を標準入力から与えられる。
計算結果を出力しなさい。
条件
・数式の長さが1000を超える場合や、不正な数式についてはErrorと出力すること
・整数を出力しなさい
・小数点が出る場合は切り捨てた値を出力すること
・eval禁止
・数式に利用できる文字 0123456789+-*/()
・数式に半角スペースは含まれない
>>137 *が省かれているからErrorとする
あるいは100/2*(2+3)とみなして250
じゃまいか
お題: CD/DVDドライブのトレイを開きなさい。
>>135 Ruby
eval gets rescue $><<:Error
typo
p eval$_ rescue$><<:Error while gets
>>139 言語:日本語
実行:日本人
CD/DVDドライブのトレイを開きなさい。
>>142 言語:日本語
実行:日本語を理解する人
の方が正確ですね
>>139 Python
import ctypes
ctypes.windll.WINMM.mciSendStringW(u"set cdaudio door open", None, 0, None)
>>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);
>>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 >>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 お題: 二次元空間にナゾの物体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)の組を出力せよ。
お題: 次のようなプログラムを作れ。プログラムを起動したとき、ファイル「times.txt」に現在の日時を秒単位で記録した後、
前回の起動日時との差を求め、時間差の秒数を表示せよ。
ただし、うるう秒を考慮すること。
>>150 慣性が働いて抵抗が無いなら収束などしない
永遠に振動し続ける
初速度も書いて無いし
離れすぎ、近づきすぎの条件も書いてない
初速度や離れすぎ、近づきすぎの条件が書いてないのは事実で回答しようも無いんだし
そういうのはやめたらどうかと思うんだが
そういう柔軟性のなさがアスペルガー症候群くさいんだよなぁ…
まあ本当は出題の意図は分かってて敢えてイチャモン付けてるんだろうけど
>>158 じゃあ、お前さんがお題の回答プログラム
どうぞよろしく
俺なら初期位置も計算の打ち止め条件も完全に無視してポテンシャルの極小値を求めるプログラムを書いて提示するかな
出題者が期待してるのはそういうものだろうし些細な出題の問題点をいちいち指摘してボツにさせる気なんか起きないな
>>160 そのプログラムを投稿すればいいだけの話
じゃあ俺はアスペルガー症候群では?って言っただけの話
>>161 自分では回答も提示せず人様をアスペ呼ばわりして
でも周りはアスペではなかったどうするの
無名掲示板とはいえ、人様に言う言葉にはもう少し気を使え
せっかく考えて出題してくれてるのに頭ごなしにボツにされようとしてるのを見て許せなかったんだよ
それとこれとは別問題
お前の気分しだいで人に失礼なことをするのはよせ
まるでシラフならスルースキル高いかのような言い草で寒っ
今日はちょっと虫の居所が悪くてな、すまんな。
ちな上の方のレスのうち、どれが俺の回答か分かるかな
>>150 大体お前が悪いんだよ
もう少し考えて出題できませんかね
今までも同じようにあまりよろしくないお題を出してそのたびにスルーか同じように指摘され続けてるんだからこんなもんでは?
個人的には全く解いてみたいと思えないお題ばかり
お題作るのは難しいなぁとつくづく感じる
そりゃ気持ちはわかっけどさー
解いてみたいと思えないお題ばかり、ってことはさすがに無い。
お題によって回答したい、したくないはあるぞ、
時間が許せば、それには回答してきた
お題、JAVA
ウインドウで、ボールを動かして、振り子にしろ。
お題:
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
お題
急減少列かどうかを判定せよ。
ただし急減少列とは、(末尾以外の)どの要素もそれ以降の要素の総和より大きい列のこと。
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
>>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
>>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 >>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
>>196 内角の和が180°かで判定すると二番目のデータのような
星のひしゃげたような形も星型扱いされてしまう
交線計算が要るんじゃないかな
>>193 条件が1個足りなかった
最低7回ですかね
お題: クリックすると画面が上下左右に揺れまくるボタンを作りなさい
「五角形P0-P1-P2-P3-P4が星形である」と「五角形P0-P2-P4-P1-P3が凸五角形である」は同値でいいのかな
>>203 同値ではない
>>186 の三番目のデータは凸五角形だが、順番に線分で結んでも星形にならない
>>206 3番目のデータに関して
「五角形P0-P1-P2-P3-P4が星形である」 => false
「五角形P0-P2-P4-P1-P3が凸五角形である」 => false
反例にはなっていないはずだが?
「五角形P0-P1-P2-P3-P4が凸五角形である」 => true
「五角形P0-P2-P4-P1-P3が星形である」 => true
多分言いたいのはこっちでしょ
いずれにしろ反例になってないけど
同値だと違うアルゴリズムでも同じコードになるのか
知らんかった
>>215 「五角形P0-P1-P2-P3-P4が星形である」 => true
「五角形P0-P2-P4-P1-P3が凸五角形である」 => true
だから反例じゃねえだろ
つーか凸角形の定義と対角線の定義から同値性は自明だろ
何が分からないのかが素でわからん
というか日本語通じてんのかこれ
>>216 4番目のデータの「五角形P0-P2-P4-P1-P3」は変な形してない?
>>219 「P0-P2-P1-P4-P3」のことを言っている?
「P0-P2-P4-P1-P3」を結んだ五角形みた?
>>221 「P0-P2-P4-P1-P3」が綺麗な凸5角形だと言ってる
>>220 お前は死ね
これ見てよく考えて
_4____
2____1
______
______
______
______
03____
>>221 ホントだすまんおれの手元の描画ミス
検算プログラム書いたが4番目のデータ、0-2-4-1-3で一周回ってきたときの方向かえる角度の和が2piにならんのよね
ANG: -0.785398163397448 -1.03037682652431 -1.14103404769821 -0.896055384571344 -1.5707963267949
和: -5.42366074898621
なーにかが間違ってるのか…
内角じゃなくてどれだけ曲がったかの和を計算してるんだから2PIで良いだろ
数値があってんのかは知らんが
算数できないやつが単発IDで必死にマウント取ろうとしてて草
>>224 どうやって計算したのか知らんが
3番目は2.0005586058915847だな
>>229 検算とヒントありがと、2.00055860589158 - (-1.14103404769821) = 3.14159265358979
プログラの間違い直せたら書き込むわ
>>230 普通に余弦定理で内角求めてPIから引くだけだよな?
>>231 1)内積⇒arccos
2)外積⇒arcsin
凸判定には角度0や符号反転も要検出なので
2)でやってるがどっかに間違い入っちゃったかもしれなす
お題:マップの縮尺から画面の縮尺バーの長さを求めろ。
縮尺は、現実:画面 = 1:s
バーの長さは100以上で出来るだけ短くする。
バーの現実での長さの数値は 1, 2, 5 が頭にきて以降は0のみが続くもののみ許される。(1桁なら0がなくても良い)
例:
s = 0.003 → 150
0.01 → 100
0.4 → 200
0.96 → 192
説明が下手ですみません。
縮尺バーはGoogleマップの右下にあるようなバーで、画面上のバーの長さが現実では何キロメートルかを示しています。
その現実で何キロメートルかというのがバーの左に表示されています。
バーの長さはズームインしていくと連続的に伸びていき、伸びるすぎるガクッと縮んで、また連続的に伸びていきます。
そしてそのバーの左に表示される距離は2kmや50km、100kmなどの数値のみで中途半端な値は取りません。
この条件下で、縮尺とバーの長さの最小値を定めたときに、どんな長さでバーを画面に表示するかを求める問題です。
バーの長さは取りうるものの中で最小のものでお願いします。
ちょっと数学の話になる度にむきになって荒らすのが必ず一人いるからな
>>236 現実:画面 = 1:s
という式の意味は?
>>186 Perl5、P0-P2-P4-P1-P3が凸五角形であるか、で判定
@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]],
[[0,1], [0,0], [1,0],[-1,-2],[-2,-1]]
);
@s = qw{0 2 4 1 3 0 2};
use PDL;
use PDL::Math;
use PDL::Constants qw(PI);
use feature 'signatures';
sub f($v1, $v2) {
my $sp = sum $v1 * $v2;
$v2 = -$v2 if $sp < 0.0;
my $ang = asin det pdl $v1 , $v2;
$ang = $ang >= 0.0 ? -PI + $ang : PI + $ang if $sp < 0.0;
$ang
}
for $ps (@t) {
@vs = map{pdl $ps->[$s[$_]]} 0..6;
@es = map{norm($vs[$_+1] - $vs[$_])} 0..5;
$angs = pdl map{f $es[$_], $es[$_+1]} 0..4;
$ans = 'true';
$ans = 'false' if (grep{abs $angs->at($_) < 0.0001} 0..4)
or $angs->min * $angs->max < 0.0;
$ttl = sum $angs;
$ans = 'false' if abs $ttl < 6.28 or abs $ttl > 6.29;
print "$ttl = Σ$angs: $ans\n";
} >>245 の実行結果
~ $ perl 17_186_convx_pent.pl
The signatures feature is experimental at 17_186_convx_pent.pl line 12, <DATA> line 207.
6.28318528610616 = Σ[ 1.5707963 0.78539816 1.5707963 0.78539816 1.5707963]: true
6.28318530717959 = Σ[ 1.5707963 1.5707963 0 1.5707963 1.5707963]: false
-12.5663706143592 = Σ[-2.2142974 -2.4980915 -2.677945 -2.677945 -2.4980915]: false
-6.28318530717959 = Σ[-0.78539816 -1.0303768 -2.0005586 -0.89605538 -1.5707963]: true
-12.5663706143592 = Σ[-2.0344439 -2.9996956 -2.4980915 -2.9996956 -2.0344439]: false
>>244 具体的には、地球上で1mの長さの直線の道路があった時、それを画面の地図上で 1m × s の長さで表示するということです。
s=0.01ならその道路は画面に1cmで表示されます。
>>234 Perl5 (問題の意図をくみ取り違えていなければ、下記で良い筈…ただし実の距離が一桁以下の場合はNGかも…)
for $s (qw{0.003 0.01 0.4 0.96}) {
$d = 1;
while ($s * $d < 10) { $d *= 10 }
if (50 <= ($s * $d)) {
$d *= 2;
} elsif (20 <= ($s * $d)) {
$d *= 5;
} else {
$d *= 10;
}
print "$s -> ", $s * $d, "\n";
}
実行結果
~ $ perl 17_234_scale_bar_len.pl
0.003 -> 150
0.01 -> 100
0.4 -> 200
0.96 -> 192 >>250 もっとスンナリ書けるんだった…
for (qw{0.003 0.01 0.4 0.96}) {
$d = $_;
while ($d < 10) { $d *= 10 }
if (50 <= $d) { $d *= 2 }
elsif (20 <= $d) { $d *= 5 }
else { $d *= 10 }
print "$_ -> ", $d, "\n";
} >>234 Ruby
def scale( s )
i = (100.0 / s).ceil
j = 100 * 10 ** - Math.log10( s ).to_i
s * j * [ 1, 2, 5 ].each{|k| break k if i <= k * j; 10 }
end
[ 0.003, 0.01, 0.4, 0.96 ].each{|x| puts "%-6g → %d" % [ x, scale(x) ] }
>>181 Perl5 (Javaじゃなくてスマソ、ActivePerlなどのTkxモジュールがインストールされている環境で実行ください)
use Tkx;
$top = Tkx::widget->new('.');
$c = $top->new_canvas(-width => 300, -height => 300);
$c->g_pack(-expand => 1);
($x0, $y0) = (150, 50);
$r = 200;
($v, $theta) = (0, 3.1415 * 40 / 180);
($x, $y);
$dt = 20;
sub show {
($x, $y) = ($x0 + $r * sin $theta, $y0 + $r * cos $theta);
$c->coords($stick, $x0, $y0, $x, $y);
$c->coords($ball, $x-7, $y-7, $x+7, $y+7);
Tkx::after($dt, \&show);
$a = -0.00098 * sin $theta;
$a *= $a * $v > 0 ? 0.95 : 1/0.95; # dumping
$dv = $a * $dt;
$dtheta = ($v + $dv/2) * $dt / $r;
$theta += $dtheta;
$v += $dv;
}
show;
$stick = $c->create_line($x0, $y0, $x, $y, -width => 2.0);
$ball = $c->create_oval($x-7, $y-7, $x+7, $y+7, -fill => 'gray');
Tkx::MainLoop();
>>181 Python3 (Javaじゃなくてスマソ >>253 をインプリ, tkinterのインストールされている環境で実行ください)
import math, tkinter as tk
root = tk.Tk()
canvas = tk.Canvas(root, width=300, height=300)
canvas.pack()
x0, y0 = 150, 50
r = 200
v, theta = 0, 3.1415 * 40 / 180
x, y = x0 + r * math.sin(theta), y0 + r * math.cos(theta)
stick = canvas.create_line(x0, y0, x, y, width=2)
ball = canvas.create_oval(x-7, y-7, x+7, y+7, fill='gray')
dt = 20
def show():
global v, theta, x, y
a = -0.00098 * math.sin(theta)
a *= 0.95 if a * v > 0 else 1/0.95 # dumping
dv = a * dt;
dtheta = (v + dv/2) * dt / r
theta += dtheta;
v += dv;
x, y = x0 + r * math.sin(theta), y0 + r * math.cos(theta)
canvas.coords(stick, x0, y0, x, y)
canvas.coords(ball, x-7, y-7, x+7, y+7)
root.after(dt, show)
show()
root.mainloop() スタックに積んで処理していくっていう昔ながらの方法と何か違うの?
>>181 Common Lisp (SBCL) + CLX。X Window Systemが使える環境で。>>253, >>256を参考に
(require "asdf")
(asdf:load-system "clx")
(defpackage #:pendulum (:use #:common-lisp #:xlib))
(in-package #:pendulum)
(defvar *display* (open-default-display))
(defvar *screen* (display-default-screen *display*))
(defvar *window* (create-window :parent (screen-root *screen*)
:x 0 :y 0
:width 300 :height 300
:background (screen-white-pixel *screen*)))
(defvar *gcontext* (create-gcontext :drawable *window*))
(defparameter *x0* 150)
(defparameter *y0* 50)
(defparameter *r* 200)
(defparameter *theta0* (/ (* pi 40) 180))
(defparameter *dt* 0.03)
(map-window *window*)
(loop for v = 0 then (+ v dv)
for theta = *theta0* then (+ theta dtheta)
for x = (+ *x0* (floor (* *r* (sin theta))))
for y = (+ *y0* (floor (* *r* (cos theta))))
for a = (let ((a (* -0.00098 (sin theta)))) (funcall (if (> (* a v) 0) #'* #'/) a 0.95))
for dv = (* a *dt*)
for dtheta = (/ (* (+ v (/ dv 2)) *dt*) *r*)
do (progn
(draw-line *window* *gcontext* *x0* *y0* x y)
(draw-arc *window* *gcontext* (- x 7) (- y 7) 14 14 0 (* 2 pi) t)
(clear-area *window*))) お題: 配列と列数が与えられるので配列を行列に再構築して返せ
例:
in < [1, 2, 3, 4], 2
out > [[1, 2], [3, 4]]
>>270 Perl5
$s = [1, 2, 3, 4];
$ncol = 2;
push @b, [splice @$s, 0, $ncol] while @$s;
use Data::Dump 'dump';
print dump(\@b,)."\n";
実行結果
~ $ perl 17_270.pl
[[1, 2], [3, 4]]
>>270 Ruby
p [*eval(str.sub(/],/,"].each_slice"))] # => [[1, 2], [3, 4]]
>>270 D
void main() @safe {
import std.stdio : writeln;
import std.range : chunks;
[1, 2, 3, 4].chunks(2).writeln;
}
>>270 matlab
reshape([1,2,3,4],[],2)
入力無視すんなら最初からprint([[1,2,],[3,4]])ってかけばええやんw
>>270 J
f =: 4 : 0
(-x) , \ y
)
2 f 1 2 3 4
1 2
3 4 このスレは入力のハードコーディングは禁止だって
>>1に書いてるだろ?
>>270 Kotlin
https://paiza.io/projects/F6x2m9b-Hs-a2yOZFxLMAw こういうことをするための chunked() という拡張関数がライブラリに最初からあるので自分ではほとんど何も考えてない。
\∧_ヘ / ̄ ̄ ̄ ̄ ̄ ̄ ̄
,,、,、,,, / \〇ノゝ < どうすっかな…… ,,、,、,,,
/三√ ゚Д゚) / \_______
/三/| ゚U゚|\ ,,、,、,,,
,,、,、,,, U (:::::::::::)∪ ,,、,、,,,
//三/|三|\ ,,,, ,,、,、,,,
∪ ∪
,, , ,,,, ,,、,、,,, ,,、,、,,,
,,,,, ∧_∧ うまいモナー,,,,, 、 ,,,,,, ,,,,,,,, ,,,,,
,,, ( ´∀`)___,,,,___ ,, ∧_∧ ゲンキニ シテルカナ・・・___,,
/ ̄ ( つ日ヽ ∧_∧ ( ) /
/ (__)) (´∀` ) ( ) ∧_∧∧_∧ / マターリモナー
∧_∧∧_∧ドーゾ (日ノ ) | | | ( ´∀`) ´∀`)
( ´∀`) ´∀`) ((__) ,(_(_) (○)⊂ ) つ日⊂ ) モーナー
―(つ⊂ ) つ⊂ )―――――――――――ヽ|〃(⌒)(⌒) (⌒)(⌒)
(⌒)(⌒) (⌒)(⌒)グーグー
お題
XORゲートは4つのNANDゲートで構成できることが知られている
この構成方法をプログラムで探索せよ
i番目のNANDゲートの入力を(ai,bi)、出力をciとする
XORゲートの入力を(X,Y)、出力をZとする
出力例
X->a1
Y->b1
X->a2
c1->b2
Y->a3
c1->b3
c2->a4
c3->b4
c4->Z
>>286 Step 6, Solution 1
0 : -1, -2: 0, 0, 1, 1 : 2
1 : -1, -2: 0, 1, 0, 1 : 2
2 : 1, 0: 1, 1, 1, 0 : 3
3 : 2, 0: 1, 1, 0, 1 : 3
4 : 2, 1: 1, 0, 1, 1 : 3
5 : 4, 3: 0, 1, 1, 0 : 2
>>286 Ruby
https://ideone.com/OJiVYh 対称など考慮せずに 384通りの解が出てきた
ループ判定は手抜き
[0,0,0,0] は Array.new(4, 0)
[ nil,nil, nil,nil, nil,nil, nil,nil ] は Array.new(8)
って書いた方が分かりやすいな
あとcase-when はthenを使うのが良し
次は全加算器をやってみよう。
4入力セレクタ辺りで限界でしょう。
このスレってアルゴリズムとかデータ構造を解説してくれる人はあまりいなんだな
>>294 わからないことあったら聞こうよ
ガキじゃねえんだからさ
アルゴリズムは金になるからここじゃあ書かないよ。
聞きたくなるようなコードをチラ見せするのがプロ。
知らない言語の長いコードを読むのは難しいからアルゴリズムだけ書いてほしい
そうじゃなかったら何のために披露してるのかわからない
(誰かがきっと俺のコードをじっくり読んでくれるはず…!)
perlとかだと全くわからん
暗号にしか見えん
まあそれが楽しいんだろうけどw
お題:ワープ付き迷路
始点(S)、終点 (G)、通路(.)、ワープ(0-9)、壁(#)で構成される大きさH×Wの迷路を考える
プレイヤーは、隣接する壁以外のマスにコスト1で移動することができる
ワープマスに入った場合、プレイヤーは対となるワープマスにコスト0で強制的に移動する
迷路中に存在する0-9の個数は、各数字について0個または2個である
始点から終点に移動するときの最小コストを求めよ
ただし、終点に到達できない場合は"impossible"と出力せよ
4 6
1#S...
....#.
#####.
1..G..
=> 7 (ワープを使わずに右に進むとコストは8)
3 3
S1G
###
1##
=> impossible (ワープ先で身動きが取れなくなる)
1 22
S01234567890123498765G
=> 5 (S→0→9→4→5→G)
>>301 披露してる側には意味はあるだろう。
お前の方には読めないコードでは意味がないのかもしれないけど、それはお前の都合でしかないだろう。
まあそうムキになるな
余裕がある人はコメントなりレスなりで解説入れたりすればいいと思うよ
>>311 とりあえず思い付くままにかいてみると、
アルゴリズムだけだったらとるに足らない問題だったり、逆に難しいけどそれただの数学の問題だよねってのが多いけど、それをプログラミング言語で書くから解く方も面白いし見る側も面白い。
同じ問題でも使う言語によって使える機能や記法が異なるから、様々な回答、解法が出てくる。
大抵の人は複数言語が読めるし詳しくなくてもちょっと考えたり調べれば読めるから、読めない人がいることをケアする必要性は特にない。
Jとか一部の言語のワンライナーとかは読めないことが多いけど、むしろそういう読めないようなコードで実現されていることが面白いし、読めないながらも感心してしまう。
アルゴリズムを疑似言語的に書こうとするとどうしても曖昧さや人によって解釈が異なる問題が出てしまうが、仕様が定義された言語を使えばその問題は回避できる。
312
>>292とか
>>268ってどういうアルゴリズムなん?
やっぱ概要入れてくれたほうが親切だと思う
スマホのほうにはslipコマンドが設定してあるのでIDちょっと違いますが
自分はID:KzmnkBMzです
>>313 説明つけてくれればそりゃ親切だろうけど、回答する人に初めからそこまで求めるなよ。
疑問があれば質問すればいいだけでしょ?
>>315 そういう見方もあるかもしれないですね
親切なレスには説明ついていて助かりますね
こういう流れを見てると、つくづくプログラマーって学生時代に冴えなかった奴等の巣窟なんだって痛感するよね…
自分語りかよ…
人を自分と一緒にしないでくれ
>>313 言っちゃー悪いそのレベルだと、まだまだ山のように勉強が必要だと思う
誰かに教えるスレじゃないんだからそういう見方しかないと思うけど…
>>317 それとブラック企業で使い潰され余裕ない奴な
俺は職業プログラマではないけどプライド高い人は多そうなイメージ
他板でもプログラミングスレは大抵荒れてる
勘違いしている底辺が大半
ごく一部が優秀
でもその付加価値に見合った価格が支払われない残念な分野
>>294のワード効きすぎだろ
何がそんなに刺さったんだ?
実際は1人が騒いでるだけか??
>>294 こいつだけは絶対に許さない
2chの兵力あげてぶっ潰す
自然科学 + グラフ理論 + 手書き作業 = アルゴリズム
単振り子のアルゴリズムなんて運動方程式解くだけだろ
近似すれば高校生でも解ける
アルゴリズムを勉強するスレでもないし
アルゴリズムを競うスレでもない
>>334 振り子の運動方程式を解くのは非常に難しい
振幅が小さい時は簡単に微分方程式解けるだろ
日本語が読めないアホ
近似にしても
±90度振れる振り子を近似するのは高校生には出来ない
>>334「近似すれば高校生でも解ける」
後付けじゃねえよ。最初から言ってるわ
死ねよ
単振り子の微分方程式解くときに他にどんな近似するっていうんだ
真面目に精神障害者だろコイツ
解析的には解けない
シミュレーションに頼る
シミュレーションの精度を上げるにも技術がいる
一言で簡単とか言うアホは何もわかってない
>>345 死ねよアホ
お前がアホだからこの程度すら簡単に思えないだけ
死ね
自分が頭悪いの棚に上げていちゃもんつけられても困るわ
10cmの理想的な単振り子
90度の位置から初速度ゼロで離して
ちょうど10分後の位置を求めよ
簡単だって言うならやってみて
近似が高校で習う1通りしか無いと思ってる時点でアホだし
そもそも近似でしか解けない
「単振動近似なら高校生でも解ける」
これなら誰も反対しない
お題
10cmの理想的な単振り子
90度の位置から初速度ゼロで離して
ちょうど10分後の位置を求めよ
振り子の運動方程式解くときに近似って言われて振幅が小さい場合を想定できないのは障害者のお前くらいだわ
プログラマの99%はリコメンドしない情報盗人。俺調べ。
そもそも
>>334の「近似すれば」は「高校生でも解ける」にしかかかってないし
高校生で習う知識が全てと思ってしまう高校生レベルのアホ
数学の話になると毎度現れるアスペ君今日も来てて草
アスペが重度なのか数学コンプが重度なのか
>>293 全加算器
Step 12, Solution 3
0 : -1, -2: 0, 0, 0, 0, 1, 1, 1, 1 : 4
1 : -1, -2: 0, 0, 1, 1, 0, 0, 1, 1 : 4
2 : -1, -2: 0, 1, 0, 1, 0, 1, 0, 1 : 4
3 : 2, 1: 1, 1, 1, 0, 1, 1, 1, 0 : 6
4 : 3, 1: 1, 1, 0, 1, 1, 1, 0, 1 : 6
5 : 3, 2: 1, 0, 1, 1, 1, 0, 1, 1 : 6
6 : 5, 4: 0, 1, 1, 0, 0, 1, 1, 0 : 4
7 : 6, 0: 1, 1, 1, 1, 1, 0, 0, 1 : 6
8 : 7, 0: 1, 1, 1, 1, 0, 1, 1, 0 : 6
9 : 7, 3: 0, 0, 0, 1, 0, 1, 1, 1 : 4 *
10 : 7, 6: 1, 0, 0, 1, 1, 1, 1, 1 : 6
11 : 10, 8: 0, 1, 1, 0, 1, 0, 0, 1 : 4 *
他2
お題:CapsLock on/offを切り替えながら文字入力
[入力]
A B C S
A : Shiftキーを押さずに1文字入力するのにかかる時間
B : Shiftキーを押しながら1文字入力するのにかかる時間(※)
C : CapsLock on/offの切り替えにかかる時間
S : 入力する文字列(英字のみ)
※CapsLock onで小文字入力、CapsLock offで大文字入力にかかる時間をBとする
[出力]
初期状態をCapsLock offとしたとき、Sを入力するのにかかる時間の最小値を求めよ
(例1)
2 3 4 ABCDE
=> 14
CapsLockを使わない場合、3+3+3+3+3=15
CapsLockを使うと、(4)+2+2+2+2+2=14
(例2)
2 3 4 aBCDe
=> 13
CapsLockを使わない場合、2+3+3+3+2=13
2文字目以降CapsLock onの場合、2+(4)+2+2+2+3=15
モレも若い頃、力ずくの実装でこう言ふコード書いていた時期があった希ガス 遠い目
プログラマってプライド高いからすぐに張り合うよねw
>>380 あなたにとってうざいことは、みな歓迎しています
│ _、_
│ ヽ( ,_ノ`)ノ 残念、それは私のおいなりさんだ。
│ へノ /
└→ ω ノ
>
>>398 ご褒美あげるよ
https://www.google.co.jp/search?q=%E3%83%9E%E3%83%B3%E3%82%B3&hl=ja&source=lnms&tbm=isch&sa=X&ved=2ahUKEwibwsmt14vpAhXGQN4KHZx_AsYQ_AUoAnoECAsQBA&biw=1024&bih=626
ご褒美にどうせ貼るならこっちだろ
https://www.google.co.jp/search?q=%E3%83%9E%E3%83%B3%E3%82%B3&source=lnms&tbm=isch&sa=X&ved=2ahUKEwi2__io3IvpAhXoy4sBHWLLAs0Q_AUoAnoECAsQBA&biw=1024&bih=626
いやいやこっち
https://www.google.co.jp/search?q=%E3%83%9E%E3%83%B3%E3%82%B3&source=lmns&tbm=vid&bih=626&biw=1024&hl=ja&ved=2ahUKEwja0Yir3IvpAhUyMHAKHSsUDc0Q_AUoAXoECAEQAQ
>>286 Ruby
https://ideone.com/KV5X5c 主な処理をテーブルで済ませて高速化
ideone の時間制限内に完走できた
>>366 Ruby
# A <= B とする
def f(a, b, c, arr, cl = false)
return 0 if arr.empty?
arr = arr.clone
cap, size = arr.shift
return a * size + f(a, b, c, arr, cl) if cap == cl
[c + a * size + f(a, b, c, arr, !cl), b * size + f(a, b, c, arr, cl)].min
end
g = -> str {str.scan(/[A-Z]+|[a-z]+/).map{|s| [s.match?(/[A-Z]/), s.size]}}
[
'2 3 4 ABCDE',
'2 3 4 aBCEe',
'2 3 4 XMLHttpRequestEventTarget'
].each{|s| *e, s = s.split; puts '%s => %d' % [s, f(*e.map(&:to_i), g[s])]}
# =>
ABCDE => 14
aBCEe => 13
XMLHttpRequestEventTarget => 57 >>308 2番目の例impossibleじゃなくて S -> 3 -> Gじゃないの?って思ったら入力1行目はH Wだった
>>293 4入力セレクタ
digraph g1 {
subgraph cluster_1 {
label = "Solution_1"
aa_1_0, aa_1_0 -> aa_1_6 ; aa_1_1, aa_1_1 -> aa_1_7 ; aa_1_3, aa_1_1 -> aa_1_8 ;
aa_1_5, aa_1_1 -> aa_1_9 ; aa_1_7, aa_1_2 -> aa_1_10 ; aa_1_7, aa_1_4 -> aa_1_11 ;
aa_1_10, aa_1_8 -> aa_1_12 ; aa_1_11, aa_1_9 -> aa_1_13 ; aa_1_12, aa_1_6 -> aa_1_14 ;
aa_1_13, aa_1_0 -> aa_1_15 ; aa_1_15, aa_1_14 -> aa_1_16 ;
}
}
>>286 EXNORはちょっとおもしろい。
Step 7, Solution 1
0 : -1, -2: 0, 0, 1, 1 : 2
1 : -1, -2: 0, 1, 0, 1 : 2
2 : 0, 0: 1, 1, 0, 0 : 2
3 : 1, 0: 1, 1, 1, 0 : 3
4 : 1, 1: 1, 0, 1, 0 : 2
5 : 4, 2: 0, 1, 1, 1 : 3
6 : 5, 3: 1, 0, 0, 1 : 2 *
お題: 関数とパイプを実装せよ
以下のような文字列をパースし、パイプに繋げながら関数を実行せよ
標準入力と標準出力の代わりにバッファを使って実装すること
in < "hello"
out > hello
in < "hello | world"
out > helloworld
in < "world | hello"
out > worldhello
in < "hello | upper"
out > HELLO
in < "hello | world | upper"
out > HELLOWORLD
>>416 hello | upperはhelloupperだろ
>>417 upperはバッファを大文字にする関数
いや、存在する関数を全部定義しないと実装なんてできんやん
突っ込まれて思わなかったの?
hello, world, upperだけ実装すればいいのでは
>>416 書き直し
お題: 関数hello, world, upperを実装し、それらをパイプで繋げて実行できるようにせよ
標準入力からコマンドライン文字列が一行ずつ入力されるので、それをパースして上記の関数を組み合わせて実行する
関数の出力と入力には標準入出力を使う代わりに、バッファを使い、コマンドライン全体の実行が終わったら構築したバッファを標準出力へ出力すること
例えば入力されるコマンドラインは
in < hello
in < hello | world
in < hello | world | upper
in < world | hello
in < world | hello | upper
のようになる
hello関数はバッファに文字列「hello」を追加し、world関数はバッファに文字列「wolrd」を追加し、upperはバッファ内の文字列を大文字にする関数である
よって最終的なコマンドラインの出力は
in < hello
out > hello
in < hello | world
out > helloworld
in < hello | world | upper
out > HELLOWORLD
in < world | upper | hello
out > WORLDhello
のようになる
hello world それぞれを改行無しの printf などで出力し
upper は大きくするだけか
>>424 バッファを使わずに標準入出力だけで実装できるならそれでもいいです
Ruby には、まさに文字列(バッファ)に、IO インタフェースを実装したクラス、StringIO がある!
>>423 Ruby
$><<$_.split(' | ').reduce(''){|s,e|[s.upcase,s+e][e.ord%-3]}while gets
-*- input -*-
hello
hello | world
hello | world | upper
world | hello
world | hello | upper
-*- output -*-
hello
helloworld
HELLOWORLD
worldhello
WORLDHELLO
>>423 Perl5, 要求仕様通り素直に三つの関数を定義し、文字列をparseした単語の関数名を呼び出す形で実装
sub hello { $o .= 'hello' }
sub world { $o .= 'world' }
sub upper { $o = uc $o }
for (<DATA>) {
$o = '';
&$_ for /(\w+)/g;
print "$o\n";
}
__DATA__
hello
hello | world
hello | world | upper
world | hello
world | hello | upper
world | upper | hello
実行結果
~ $ perl 17_423_hello_world_upperl.pl
hello
helloworld
HELLOWORLD
worldhello
WORLDHELLO
WORLDhello
>>427 world | upper | hello
>>431 ちゃんと"WORLDhello"って出力される
>>423 Kotlin
https://paiza.io/projects/Opyd7gwTb5jwgD2LANwPeA 文字列を判定して対応する処理をするだけでも良かったが、Map に文字列と対応する処理をセットしてそれを呼び出して実行させるようにした。
また hello, world, upper 以外が入力されるとエラーが出るようになっている。
>>286 C++
https://ideone.com/djJiyu Ruby から移植。実行時間は Rubyより 90倍程度高速化
>>435 端子の出現順を固定しないから無駄に組合せが増えているのではないだろうか。
お題
H行W列のマス目が与えられる。左上の座標を(0, 0)、右下の座標を(H, W)とする。
座標(0.5, 0)を始点にしてボールを右下45度の方向に発射する。
ボールが始点に戻ってくるまでに壁に衝突する回数を求めよ。
(マス目の範囲外は壁とみなす。ボールの大きさや摩擦などは無視してよい)
[入力]
H W
('.'が地面、'#'が壁)
[例]
1 1
.
=> 4 (軌跡は◇の形)
4 5
..#..
#..#.
.#..#
..#..
=> 18
5 10
..........
#########.
..........
.#########
..........
=> 66
>>437 x = Math.gcd(H, W);
print((H / x + 1) * ( W / x + 1));
ああ、違うな
壁って長方形の辺上にだけあるのかと思って解いてた
>>437 Perl5、素直に壁で跳ね返る回数をカウント
for (<DATA>) {
($H, $W, @a) = /(\S+)/g;
@s = map{[map{$_ eq '#'} split '']} @a;
my %t;
for $h (0..$H-1) { $t{$h+0.5}{0} = $t{$h+0.5}{$W} = 1;
for $w (0..$W-1) { $t{0}{$w+0.5} = $t{$H}{$w+0.5} = 1;
next unless $s[$h][$w];
$t{$h}{$w+0.5} = $t{$h+0.5}{$w} = $t{$h+0.5}{$w+1} = $t{$h+1}{$w+0.5} = 1;
}
}
($x, $y, $dx, $dy, $n) = (0.5, 0, 0.5, 0.5, 0);
do {
$x += $dx; $y += $dy;
if ($t{$y}{$x}) {
$dx = -$dx if $y =~ /\.5/; $dy = -$dy if $x =~ /\.5/;
$n++;
}
} while $x != 0.5 or $y != 0;
print "$n\n"
}
__DATA__
1 1 .
4 5 ..#.. #..#. .#..# ..#..
5 10 .......... #########. .......... .######### ..........
実行結果
~ $ perl 17_437_bounce.pl
4
18
66 お題
2つの文字列について、文字列を構成する文字が同じで、最初と最後の文字が合っていれば、
その2つの文字列は等価であるとみなす。
文字列がN個与えられる。
上記ルールに従って重複を除去したとき、文字列はいくつ残るか?
(例)
6
programming
odai
prorgamnimg
oadi
pgorgamming
idao
=> 4
>>442 Perl5、"6"も文字列に含めれば、4
for (<DATA>) {
@a = /(\w)/g;
%h = map{$_ => 1} @a;
$s = $a[0].join('', sort keys %h).$a[-1];
print "$_ -> $s\n";
$g{$s}++;
}
print keys(%g)."\n";
__DATA__
6
programming
odai
prorgamnimg
oadi
pgorgamming
idao
実行結果
~ $ perl 17_442_similstr.pl
666 <- 6
pagimnoprg <- programming
oadioi <- odai
pagimnoprg <- prorgamnimg
oadioi <- oadi
pagimnoprg <- pgorgamming
iadioo <- idao
4
>>442 (defun cambridge-string= (a b)
(and (char= (elt a 0) (elt b 0))
(char= (elt a (1- (length a))) (elt b (1- (length b))))
(string= (sort (copy-seq a) #'char<) (sort (copy-seq b) #'char<))))
(defvar *set* nil)
(dotimes (n (read))
(pushnew (read-line) *set* :test #'cambridge-string=))
(princ (length *set*))
common lispのsortは破壊的だったのか
>>442 Ruby
p %[6 programming odai prorgamnimg oadi pgorgamming idao].
uniq{|s| b, *m, e = s.chars; [b, e, m.uniq.sort]}.size
# => 4
>>436 端子の順番は固定ですよ
なので print_map2() では省略しています
print_map() で出力すれば
>>286 のフォーマットになります
>>442 J
smoutput # ~. <@( /:~ , {. , {:);._2 stdin ''
4入力一致の回路
選別
digraph g1 {
subgraph cluster_1 {
label = "Solution_1"
aa_1_0, aa_1_0 -> aa_1_4 ; aa_1_1, aa_1_1 -> aa_1_5 ;
aa_1_3, aa_1_2 -> aa_1_6 ; aa_1_4, aa_1_2 -> aa_1_7 ;
aa_1_5, aa_1_3 -> aa_1_8 ; aa_1_5, aa_1_4 -> aa_1_9 ;
aa_1_8, aa_1_7 -> aa_1_10 ; aa_1_9, aa_1_6 -> aa_1_11 ;
aa_1_10, aa_1_10 -> aa_1_12 ; aa_1_12, aa_1_11 -> aa_1_13 ;
aa_1_13, aa_1_13 -> aa_1_14 ;
}
}
>>453 > auto end_pt = unique(s.begin(), s.end());
> s.erase(s.end(), end_pt);
バグってるぞ
sortしてuniqするだけなら3になるはずだと思って眺めたら
その前に加えて、先頭と最後の文字の比較もしてるやん
auto equalsBeginBack = [=](string a, string b){
return *a.begin() == *b.begin() && *&a.back() == *&b.back();
>>270 Dart
import 'dart:io';
void main() {
final var str = stdin.readLineSync();
const var reg = RegExp(r'\d+');
final List<int> args = reg.allMatches(str).map((m)=>int.parse(m.group(0))).toList();
final column = args.removeLast();
final result = [];
for(var i = 0; i <= args.length ~/ column; i += column) {
result.add(args.sublist(i, i + column));
}
print(result);
}
// input
[1, 2, 3, 4], 2
// output
[[1, 2], [3, 4]] #!/usr/bin/env -S sbcl --script
(format t "~d~%"
(length (delete-duplicates
(loop repeat (read) collect (read-line))
:test (lambda (a b)
(and (string= (sort a #'char<) (sort b #'char<))
(char= (char a 0) (char b 0))
(char= (char a (1- (length a))) (char b (1- (length b)))))))))
>>445
Common Lisp HyperSpecではSide Effects: None.となっているけれど。 >>442 Kotlin
https://paiza.io/projects/i27KzyH5DRbZTc6mfxL6AA 複数の同一文字を1文字扱いでやる場合はコメントを外して SortedSet に文字を入れる方を有効にする。
>>442 Io
File standardInput readLines map(do(
sort .. slice(0,1) .. slice(size)
))unique size println
色んな言語による実装が見られて楽しい。
ロゼッタストーンのように自分が出来ない言語の実装も
お題ごとに見られて面白い
>>442 Haxe で
var input_ary: Array<String> = [ "6", "programming", "odai", "prorgamnimg", "oadi", "pgorgamming", "idao" ];
var str_map = new Map<String, Bool>( );
for ( i in 0...input_ary.length ) {
var char_ary = input_ary[ i ].split( "" );
var tmp_ary = new Array<String>( );
var tmp_str = "";
var char_map = new Map<String, Bool>( );
tmp_str = tmp_str + char_ary[ 0 ] + char_ary[ char_ary.length - 1 ]; // 最初・最後
for ( j in 0...char_ary.length ) {
char_map.set( char_ary[ j ], true ); // 同じ文字を排除
}
for ( ch in char_map.keys( ) ) {
tmp_ary.push( ch );
}
tmp_ary.sort( function( a, b ): Int {
return ( a.charCodeAt( 0 ) > b.charCodeAt( 0 ) ) ? 1 : -1; }
);
for ( k in 0...tmp_ary.length ) {
tmp_str += tmp_ary[ k ];
}
str_map.set( tmp_str, true ); // 重複排除
}
var size = Lambda.count( str_map );
trace( size ); // 4
お題
文字列Sが与えらえる。Sの部分列に"odai"は何個あるか?
[1] odadai => 3
部分列は以下の3通り
oda__i
od__ai
o__dai
[2] odaiodai => 5
[3] ooooddddaaaaiiii => 256
[4] daioadiao => 0
>>466 greedy algorithmしか思い浮かばんがいい方法があるのかね
>>466 D 再帰の力ってすげー
size_t count_substring(string target, string from) {
if (target.length == 0) {
return 1;
} else if (from.length == 0) {
return 0;
} else if (target[0] == from[0]) {
return count_substring(target[1..$], from[1..$]) + count_substring(target, from[1..$]);
} else {
return count_substring(target, from[1..$]);
}
}
>>466 haskell
f [] _=1
f _ []=0
f (x:xs) (y:ys)
| x==y = f xs ys+(f (x:xs) ys)
| otherwise = f (x:xs) ys
f "odai" "odadai" -> 3
>>466 Ruby
https://ideone.com/AxLfCd 文字列処理を減らしたいので 2pass化
"odadai" => [[0], [1, 3], [2, 4], [5]] # 2passでは 左が小さな組み合わせをカウント
"odaiodai" => [[0, 4], [1, 5], [2, 6], [3, 7]]
入力サイズが小さいと簡単みたいなので、入力例を追加します。
[1]〜[4]の入力を1000回繰り返した文字列を入力とした場合
[1'] 167501334000
[2'] 668668500500
[3'] 10730784064000
[4'] 999666166500
>>473 python
https://ideone.com/Qodc4Y 計算量は "対象文字数 * 4"
"odai"4文字なら、50万文字もいける
(多倍長のコストの方が多いかも)
>>473 D
https://ideone.com/lhlPdj 前半に含まれる"odai"の接中辞たちの数と後半のそれから全体のそれを求める、を再帰的にやる
>>466 Ruby
def f(a,b)
r=0
v=b.chars
a.chars.combination(b.size){|x| r+=1 if x==v}
r
end
>>486 charsじゃなくてeach_charを使うべきだな
前にもRubyにケチつけてるやついたな
そんなにRubyが好きなのか
>>490 Rubyのコードを見るとシュババ!って「Rubyはもっと簡潔に書ける!Rubyはもっと便利なんだ!」だとアピールするやつがいるってこと。
この板にはRubyガイジが蔓延ってるからそいつが脳裏に浮かんだからレスしてみただけです。
>>493 気持ちは分かるしそう感じている人は一定数いるが
大人になれ
よそでやれ
0~7を2~19の素数に対応させた回路
digraph g1 {
subgraph cluster_1 {
label = "Solution_1"
aa_1_1, aa_1_1 -> aa_1_3 ; aa_1_2, aa_1_2 -> aa_1_4 ;
aa_1_3, aa_1_0 -> aa_1_5 ; aa_1_4, aa_1_3 -> aa_1_6 ;
aa_1_5, aa_1_0 -> aa_1_7 ; aa_1_5, aa_1_2 -> aa_1_8 ;
aa_1_6, aa_1_6 -> aa_1_9 ; aa_1_7, aa_1_1 -> aa_1_10 ;
aa_1_7, aa_1_7 -> aa_1_11 ; aa_1_8, aa_1_2 -> aa_1_12 ;
aa_1_8, aa_1_6 -> aa_1_13 ; aa_1_9, aa_1_5 -> aa_1_14 ;
aa_1_12, aa_1_5 -> aa_1_15 ; aa_1_12, aa_1_10 -> aa_1_16 ;
}
}
またRuby信者が暴れてるのか
そんなんだから廃れるんだぞ
お題: 標準入力から使用言語のインポート文やインクルード文に相当する複数の文が入力される
インポート文のパッケージ名をキーにして複数の文を昇順にソートして出力せよ
例: (Pythonの場合)
in < import abc
import def
from ABC import DEF
out > from ABC import DEF
import abc
import def
iostreamが一番上に無いと落ち付かないし、
<>と""が混ざるのもヤダ
#includeは行を前後入れ換えるとエラーになることあるから実用的ではない
まあ例え実用的でなくても要求仕様のとおり作れってことなんでは?
お題の意味を深読みするやつはテストの点が悪い
テストの問題などそれが解けるかどうかを見たいのであって
それ自体に大した意味はない
それはそのテストが能力評価試験か
あるいは単なる選別試験化によること
>>517 Ruby
回答が困難な例を考えてみた
require 'etad'.reverse
foo = 'date'
require foo
require %w| json date net cgi |[1]
module Foo module Bar
Car = 'date'
end end
require Foo::Bar::Car
require_relative './foo/../bar/../car/../wrk'
お題
ipのフィルタリングを行ってください
許可するipが次の形式で入力されます allow ip
拒否するipが次の形式で入力されます deny ip
チェックするipが次の形式で入力されます ip
アクセスを許可する場合は次の文字列を出力してください allow
アクセスを拒否する場合は次の文字列を出力してください deny
許可するip、拒否するipの形式は次の2つです
xxx.xxx.xxx.xxx
xxx.xxx.xxx.xxx/xx (CIDR形式)
xxx.xxx.xxx.xxxの場合は、完全一致で判断してください
CIDR形式の場合は、ネットワークアドレスの一致で判断してください
チェックするipの形式はxxx.xxx.xxx.xxxのみです
allowとdenyの優先順について
1. allow ipに該当したらアクセスを許可します
2. 1.に該当せず、deny ipに該当したらアクセスを拒否します
3. 1.に該当せず、2.に該当しない場合アクセスを許可します
例
入力
allow 192.168.11.9
deny 192.178.12.3/8
allow 192.168.23.34/16
192.168.89.99
出力
allow
小規模なシステムだとサーブレットでipのフィルタリングすることあるから結構実用的だと思う
>>527 そういうわけでもないんよ
例えば
deny 0.0.0.0/0
allow 20.8.5.34
とした場合、20.8.5.34は許可するけど、それ以外は全部拒否っちゃうみたいな
ホワイトリスト方式の使い方も想定してるんよ
システムの入り口のところなので大量のリクエストを裁かなければいけないので
できるだけ高速に動作するように、さらにアクセス制御リストに変更があった場合に
即座に反映するために外部リソースから読み取るようにしておいてみたいなことも
考えると良い暇つぶしになるよー
>>527はdenyとでないを掛けた洒落
>>529もあろうの歴史的仮名遣いのあらうとallowを掛けた親父ギャグでしょ
なんで親父ギャグ(多分)の解説しただけで親父扱いなんですかねぇ
>>525>>528 Perl5
sub na { (((($_[0] << 8) + $_[1]) << 8) + $_[2]) << 8 + $_[3] }
sub iaf { my @rl;
for (split "\n", shift) {
my @f = /(?:(allow|deny)\s+)?(\d+)\.(\d+)\.(\d+)\.(\d+)(?:\/(\d+))?/;
if ($f[0]) {
push @rl, [$f[0], na(@f[1..4]), $f[5]//0];
} else {
$res = 'allow';
for (@rl) { $res = $$_[0] if ($$_[1] & $$_[2]) == (na(@f[1..4]) & $$_[2]) }
print "$_ -> $res\n";
}
}
}
iaf <<EOL;
allow 192.168.11.9
deny 192.178.12.3/8
allow 192.168.23.34/16
192.168.89.99
EOL
iaf <<EOL;
deny 0.0.0.0/0
allow 20.8.5.34
20.8.5.34
EOL
実行結果
~ $ perl 17_525_ip_filt.pl
192.168.89.99 -> allow
20.8.5.34 -> allow あなたはお腹が空くと、[DENY]ーズにいくのだ[ALLOW]ね。
>>540 6行目
× push @rl, [$f[0], na(@f[1..4]), $f[5]//0];
↓
○ push @rl, [$f[0], na(@f[1..4]), -1 & 2**$f[5]-1];
お題: ペナルティ方式でパスワードの強度を判定するプログラム。「弱い」「普通」「強い」の3段階で判定する。
5文字より短いパスワードは「ダメ」
「3AAA1567」のような同じ文字が3文字以上並んでる場合は「ダメ」
「1234567」「abcdefg」などの規則的なものは「ダメ」
パスワード辞書に登録されているパスワードは「ダメ」
英単語辞書に登録された単語そのものは「ダメ」
英単語辞書に登録された単語を含むものは「あまり良くない」
英字のみは「あまり良くない」
数字のみは「ダメ」
「2020/5/16」「20.5.16」のような日付に見えるものは「ダメ」
あんさんのお代に共通して言えることだけど、
難易度はさておいて、パスワード辞書に登録されているか調べたり
英単語辞書に登録された単語化調べたりするのは
それなりに冗長でサイズがかさんで回答しにくい。(難易度とは別に手間がかかる)
こういうところに出すお題は、もっと手短にかける回答になるないと
対応しにくい
テスト用なんだし適当に辞書に数個のデータ書いとけば良くね?
入力例を書くのと同じようなもんでしょ。
>>550 お前、変な絡み方するな。
何か文句あるのか
>>544 規則的というのがよくわからんな
aceg
13579
314515926
あたりがいいのか悪いのかわからん
難しいことはどうでもいいんだよ
糞コテなんかNGに入れて無視しとけ
お題
N×M個の頂点からなる格子状の無向グラフが与えられる。
グラフのエッジは隣同士の頂点を結んでいる。
このグラフの全域木を一つ出力せよ。
ただし、横線と縦線の数は同じでなければならない。
[入力]
N M (N, Mは3以上の奇数)
[出力]
頂点'o'、横線'-'、縦線'|'を使って全域木を描画せよ。(答えは複数あり得る)
[入力例]
3 7
[出力例]
o-o-o-o-o-o-o
|.|.|.|.|.|.|
o.o.o.o.o.o.o
|.....|...|..
o-o-o.o-o.o-o
※表示の都合上、スペースは'.'に置き換えています。
>>572 Ruby
n, m = gets.split.map{|s| s.to_i}
na = [ ['-']*(n+m), [' ']*(n*(m-1)-n-m) ].flatten.shuffle
ma = [ ['|']*(n+m), [' ']*(m*(n-1)-n-m) ].flatten.shuffle
n.times{|y|
puts [ na[y*(m-1)...(y+1)*(m-1)].map{|s|'o'+s}, 'o' ] * ''
puts ma[ y*m...(y+1)*m ].join(' ') if y != n-1
}
お題: 入力文字列に機種依存文字が含まれているか判定するプログラム。
>>576 C
#include <stdio.h>
int check( unsigned char uc ){
return( uc == 0x40 || uc >= 0x5b && uc <= 0x5e || uc == 0x60 || uc >= 0x7b && uc <= 0x7e || uc >= 0x80 );
}
void main(){
char ch;
while( (ch = getchar()) != EOF )
check( ch ) && printf( "Check %02X '%c'\n", ch, ch );
}
お題: XY平面上の謎のキャラクターPが原点に居てY軸(北)の方向を向いている。Pは何回か次のいずれかのアクションを行う。
アクション1. 90度左に自転する。
アクション2. 90度右に自転する。
アクション3. 一つ前に進む。
入力は、カンマ区切りのアクション番号の並びとする。Pは入力されたアクションを順番に実行する。
出力は、入力の各アクションを実行した後の位置と向き(東西南北)を順番に並べたものとする。
入力例1) 1, 3, 3, 2, 3
入力例2) 3, 2, 3, 1
>>579 Ruby
def moves( str )
x, y = 0, 0
r = 0
ta = [ [0,-1], [1,0], [0,1], [-1,0] ]
ts = %w{北 東 南 西}
str.split(/,\s*/).each{|ch|
case ch
when '1'; r = (r - 1) % 4
when '2'; r = (r + 1) % 4
when '3'
x += ta[r][0]
y += ta[r][1]
end
puts "%3d %3d %s" % [ x, y, ts[r] ]
}
end
moves( "1, 3, 3, 2, 3" )
moves( "3, 2, 3, 1" )
>>579 Ruby
def moves( str )
x, y = 0, 0
dx, dy = 0, -1
ts2 = %w{北 西 \ 東 南 }
str.split(/,\s*/).each{|ch|
case ch
when '1'; dx, dy = dy, -dx
when '2'; dx, dy = -dy, dx
when '3'
x += dx
y += dy
end
puts "%3d %3d %s" % [ x, y, ts2[dx + 2*dy + 2] ]
}
end
moves( "1, 3, 3, 2, 3" )
moves( "3, 2, 3, 1" )
>>579 Ruby
Vectorで書き直して歩数を追加
require 'matrix'
def moves( str )
xy = Vector[ 0, 0, 0 ]
v = Vector[ 0, -1, 1 ]
ts = %w{ 北 西 x 東 南 }
str.split(/,\s*/).each{|ch|
case ch
when '1'; v = Vector[ v[1],-v[0], 1]
when '2'; v = Vector[-v[1], v[0], 1]
when '3'; xy += v
end
puts "%3d %3d %3d歩 %s" % [ xy.to_a, ts[v.dot(Vector[1,2,0])+2] ].flatten
}
end
お題: テキトーに木構造を描画せよ。
入力例)
動物→鳥類、哺乳類
鳥類→ペンギン、アヒル、スズメ
哺乳類→ニワトリ、リス
>>586 digraph sample {
subgraph cluster1 {
label="cluster1";
{
動物->鳥類, 哺乳類;
鳥類->ペンギン, アヒル, スズメ;
哺乳類->ニワトリ, リス;
哺乳類, 魚類, 鳥類->アマビエ;
}
}
}
お題: おらがロボ村では、5人の選手が参加するマラソン大会が実施される。マラソンコースは半径500mの円形で、各選手はコースを一周する。
マラソン大会の開始時刻では、5人の選手はスタートラインに並ぶ。各選手を20km/h〜40km/hのランダムな速度でコースに沿って
ゴールに向かって動かし、スタートラインからの相対位置と順位を1分ごとに記録せよ。
>>600 C++ Windows
#include <Windows.h>
#include <iostream>
int main()
{
auto drives = GetLogicalDrives();
for (int i = 0; i < 32; ++i) {
if (drives & (1 << i)) {
char directory[] = "A:";
directory[0] += i;
ULARGE_INTEGER freeBytes;
if (GetDiskFreeSpaceExA(directory, nullptr, nullptr, &freeBytes) != 0) {
std::cout << directory << " " << freeBytes.QuadPart << std::endl;
}
}
}
}
>>600 #!/bin/sh
echo '残りHDD容量'
>>602 if (drives & (1 << i)) {
↑これなにやってるの?
すまん自己解決したわ
有効なドライブを判定してるのか
代々受け継がれた秘伝では
ビット演算にはいやらしいほど大量の括弧を付ける
Cの条件文の後の式も
必ずカッコ{}でくくらないと
気持ち悪くなる体になってしまった
お題: アリが20匹現れた。ハエ叩き棒でやっつけろ。ジョークプログラムなので、なるべく面白いのを頼む。
前出のお題の修正:
5以上の素数に対して、6の剰余は±1のいずれかになる。剰余を順次加算していくと
合計が0になる時の素数は
7, 13, 19, 37, 43, 79, 163, 223, 229
が表れる。次に表れる素数は何か。
>>613 C && sh
is_prime.exe のソース
https://pastebin.com/JSJU2GWt これは is_prime.exe 5 600 で5以上600以下の素数を整形して表示する
また、 exe 7 => 7, exe 8 => のように引数1つの時はそれが素数である場合のみ返す
そんな exe を使えば題意の229の次は521だと分かる
~/bin/is_prime.exe 5 600 |perl -pe 's/\s+/\n/g'| head -200 | sed '/^$/d' | perl -ne 'chomp;m/\A(\d+)/;$total += $1; print "$_ ($total)\n" if ($total %6 == 0)'
7 (12)
13 (36)
19 (72)
37 (192)
43 (276)
79 (786)
163 (2742)
223 (4656)
229 (5112)
521 (23064)
569 (26364)
593 (28692)
出力コードを簡素化した。結果は同様
~/bin/is_prime.exe 5 600 |perl -pe 's/\s+/\n/g'| head -200 | sed '/^$/d' | perl -ne '$total += $_; print if ($total %6 == 0)'
7
13
19
37
43
79
163
223
229
521
569
593
>>614 済みませんが、
素数の時、6の剰余+1か-1のいずれかを使って
加算してください。
>>613 問題の意味がわからない。
> 5以上の素数に対して、6の剰余は±1のいずれかになる。
割り算の余りがマイナスになるというのはどういう事なのか?
整数でいえば余り1,5の状態だな
>>616 No
mod 6 で閉じてて可換な四則計算順序を指定する意図が不可解
ああーそれとも剰余の合計rに対して
剰余が5 のときr--して剰余が1のときr++しろってことかな?
なら
>>613は解無しじゃないのか
>>619 (n - 1) mod n の計算結果は n - 1 になるが? 5 mod 6 = 5 になるだろ普通に計算すれば。
余りはどうやっても負の数にならんよな。余りなんだから。
>>624 いや -1 も n-1 も同値だっつーの
>>625 それはどういうルールなのか?普通の数学や数値計算とルールが違うのであればその独自ルールを全て書いてくれ。
書いてくれればそれに合わせて考えるから。
>>627 普通の文脈で、数学において x = -1 mod n ⇔ x = n - 1 mod n なんですが、あなたはどの宇宙の数学を学んできたんですか
>>628 じゃあどうやって計算したら結果を -1 にして出せるんだ?
>>630 いやだからそもそも剰余環境Z/nZにおいては -1 も n - 1 も同じ数字なんだっての
なんで理解できないの
算数もわからんガイジに群論で説明しても分かるわけないやろ
>>630 n を自然数として、
6n + 5 の形である整数の集合…@
と
6n - 1 の形である整数の集合…A
があったとき、よくよく考えると @とAは合致しませんか?
>>631 もっと簡単な言葉で説明できませんか?難しい言葉でしか説明できないのなら、それは本質がわかっていないということになりませんか?
>>632 馬鹿にあわせて説明できる人こそ真の天才だとおもいますが、そういう人はなかなかいないようですね
数学の話してんなら普通やろ
いつもの数学コンプレックスニキが自演してんやろな
>>623 ありがとうございます。まだ確認できていませんが、
素数が6の剰余で+1型とー1型が同じ割合で存在するなら合計の零点は
もっと頻繁にあると思っていました。
同値とかいう言い方してるから伝わないんやろ
そんなこともわからんのか
同値なんて中学校で習ったがここには小学生しかおらんのか?
ググれば10秒でわかることをいちいち聞いてくるアホ共
最終的には足し算の定義聞かれてペアノの公理説明することになりそうだなw
>>613 こんな感じじゃないかなあ
C++
#include <iostream>
const int MAXENT = 1000000;
int prime_table[MAXENT] = {3};
int main()
{
int found = 0, s = 0, d = 4;
for(__int64 p = 5;;p += (d = 6 - d)) {
for(int i = 0;;i ++) {
int can = prime_table[i];
if( p < can * can || i >= found ) {
if( p < MAXENT ) { prime_table[found ++] = (int)p; }
if( (s += d - 3) == 0 ) { std::cout << p << std::endl; }
break;
}
if( p % can == 0 ) { break; }
} }
return 0;
} 「n-1と-1は同値」
これ本来の同値ってワードの使い方として合ってるの?
まあ感覚でわかるけどややこしくしてる要因だな
>>646 「x = -1 mod n ⇔ x = n - 1 mod n 」ってわざわざ読み下してるんですがあなたの眼球にはピンポン玉でもつまっているのですか?
数学オタは意地でもスマートな記述にこだわるから一般人には伝わりにくい
もっと日常語で説明して
このスレ絶望的に算数できないやつが定期的に荒らすよな
数学得意なやつにとって当たり前で簡単なことは勝手に算数呼ばわりする奴も定期的に湧くよな
実際中学生レベルの算数をして算数と呼んでいるのですが、あなたたちは中学校で算数を学ばなかったのですか?
modなんてちょっといいとこの小学生でも勉強するがな
中学でやるのは数学ですよね。
それをわざわざ算数と呼ぶところに悪意が満ち溢れていてまさに荒らしの鑑ですね。
単発IDで必死だなお前
中学の数理技術を教える授業をなんて呼ぶかなんて些末な問題だってわからないくらいに頭が悪いんだな
さすがに中学校で習うものを一般的な数学と呼ぶのは無理があるやろwww
>>648 こんな風に表現してみてはどうかねえ
5以上の素数pで、
p以下にある6で割って1余る素数の個数と
p以下にある6で割って5余る素数の個数とが一致するのは、小さい順に
7, 13, 19, 37, 43, 79, 163, 223, 229
となるが、その次に一致する素数は何か?
このスレを算数未履修の未開人が見てることに驚きだわ
いま
>>645のプログラムを回してるんだけど、
答えが12桁なんだったら、結果が出るのは数日後になるんじゃないかなあ
もっと早い計算機で回してもらうか、アルゴリズムの改良が求められるね。
Perl でこんなのも作ったけど遅くて話にならない
use Math::Prime::Util next_prime; for($p = 5;;$p = next_prime($p)) { $p % 6 == 1 ? $s ++ : $s --; print "$p\n" if $s == 0; }
>>639 正解は知らないし適当な想像で言うけど、+1と-1の出現頻度が同じ確率に収束するとして、最初の段階で合計が0からある程度離れたとしたらなかなか0には近づかないんだないの?
>>613 A098044 - OEIS
https://oeis.org/A098044 3, 7, 13, 19, 37, 43, 79, 163, 223, 229,
608981812891, 608981812951, 608981812993, 608981813507,
608981813621, 608981813819, 608981813837, 608981813861,
608981813929, 608981813941, 608981814019, 608981814143,
608981814247, 608981814823
>>636 するね。で?
元の問題は剰余と書いてあるわけだが、負の値の余りはありえないだろう。余りなんだから。計算上の一致は分かるがそれは余りではない。
>>671 >>613にはその定義を用いると書かれていない。
>>673 >>613の時点で剰余は±1といってるんだから、
>>613の意図しているものがお前が考えている正の余りだけを考える剰余ではないのは明確だろう。
俺が知っているルールが絶対だ、俺に断りなく俺の知らない俺の習ってないルールを使うのは許さん!なんて考えてるなら、周りから話の通じないめんどくさい奴だと普段から思われてないか?
自分の知っているものと違うなら、自分が知らないものかもしれないとか自分の理解が間違っている可能性があるとかに思いが至るのが普通の人間の思考だと思うぞ。
>>674 許さんなどと書いてはいない。違うルールであるならばそれを書いてくれと言っているだけだ。
でないと問題として情報不足で成り立たないからだ。
>>675 素直に勉強になりましたごめんなさいって言えねえのかお前
>>675 >違うルールであるならばそれを書いてくれと言っているだけだ。
>でないと問題として情報不足で成り立たないからだ。
負の剰余なんて、
>>671 で例示した基本書でも記述されているくらいに誰でも知っていることなので明示する必要はないでしょうね
>>672 でしょう?
>>671 の URL で示した wiki に私は(解析・代数も含めて)全部入力したかったんですが「米国」著作権法に抵触する、ということで入力は途中までになってしまいました
>>675 ほんとに書いてあることを字面通りにしか受け取れない奴なんだな。
これまでもこのスレのお題には、問題文に全てが厳密に書かれて無いが話の流れや解答例から推測できたり些末な部分だから無視できるような問題は山のようにあったが、それには突っ込まずこの問題では執拗に絡んでくるのは数学的な問題だから?
数学の問題が解きたいだけなら、このスレのお題なんかやらずに学校の教科書や入試の問題のような、どんな突っ込みやクレーム(そんなの習ってませーん!その表記は習ったのと違いまーす!)も受けないように作られた学校の教科書や入試の問題を解いていた方が幸せになれるぞ。
>>679 編集しているうちに二重になっている部分ができでしまった、すまん。
文意は察してくれ。
>>677 誰でも知ってねえから
世の中の90%は知らん
嘘つくな
理系でも80%は知らん
一般的な定義を知ってるのはオタクだけ
オタクって自分が知ってることはみんな知ってると思い込む性質があるよな
おまえの頭の中まで知らない、定義しろ。
おまえが顧客なら聞き取りするが、出題者なんだから定義しろ。
って事で良いのでは。
喚く数学弱者と取り巻きのマウントガイジはスレの癌だから出て行けよ
何回やるんだクソ荒らしども
-1余ってる状態に何も違和感は無いな
己の題意汲み取り能力の欠陥を認められずに「余り」という単語に固執し「俺は悪くない」「おまえらオタク」と責任転嫁
無知なくせに自尊心だけは一丁前のガキが駄々こねてる様はみっともない
どうせどこでもお前はポンコツ扱いされてるんだろうからいい加減認めろよ
数学得意な人多そうなら誰か
>>574を解いてみてくれ
↑
ここまで意地の張り合い
ここからも意地の張り合い
↓
>>687 現実ではポンコツ扱いされてるんだから、ここでくらいカッコつけてさせてあげようよ
>>676 勉強になった点はあるが何故こちらが謝る必要があるのか?こちらは問題の不備に対して質問しただけなのだが?
謝らねばならない者が居るとしたら不備のある問題を作った者だろう。まあここなら別に謝らなくても良いけどね。
解く義務があるわけでもないし、こちらが金払って問題作って貰っているわけでもないから。
>>677 出鱈目を書くな。誰でも知っている事ではない。
>>679 たまたま目に入ったからだよ。そして作るべきプログラムの仕様がはっきりしていない点を質問しただけだ。
しかし答えたくないなら無視すれば良かったのではないか?そうすればこちらは問題を解こうとせずにそのまま放置して終わりだ。
最初から解く義務はないからな。
>>686 IDをコロコロ変えながら質問した側を貶めても君の頭が良くなることはないよ。むしろ君が馬鹿であることを晒す事になるだろう。
>>645訂正
> if( p < can * can || i >= found ) {
if( p < (__int64)can * can || i >= found ) { 剰余と言ってるんだからmodじゃなくてremainderでござろう
むしろそっちの方が負の数の剰余より理系の中で認知度高いだろ
>>613 Ruby で作ったけど、10分経っても終わらないw
require 'prime'
memo = 0
ary = [ ]
Prime.each do |prime|
case prime % 6
when 1 then memo += 1
when 5 then memo -= 1
else next # 2, 3 の時は、処理なし
end
if memo == 0
ary.push prime
break if prime > 229
end
end
p ary
どうでもいいけど
mod演算の結果が負になることは無いとか決めつけてると
Cの場合なんか特にアンダーラン起こしてハマるよ
>>705 せやからそれはremainderであってmoduloとちゃいまんがな
負の数の剰余って言語によってバラバラじゃなかったっけ
小学生ですら習うことのあるmoduloを知らずに発狂してるアホ
バカに限って謙虚に物を学ぶということをしねえんだよな
負の数の剰余は世の中の90%は知らないと何度言えば覚えるのか…
お題: XX:YY:ZZ形式で2つの時刻が与えられる(XXは時間、YYは分、ZZは秒)。2つの時刻の差を求めよ。
それを言ったら世の中のほぼ全ての人間はプログラミング何か知らないんだし何でもありだなw
>>712 どういう「理屈でなんでもありなんだな」、につながるんだ?
>>710 90て数字の根拠は?
標準偏差はいくつ?
馬鹿なのになんで生きてるの?
>>714 感覚の話だろ
おまえは本当に理系のほとんどは負の数の剰余を扱えると信じてるのか?
かwんwかwくwwww
今月一番笑ったわwwwww
>>716 で、まじで信じてるの?
やばいですね☆
世間一般じゃなく
ム民が当然知らなければならない事柄を基準にするべきだろう
>>718 負の数の剰余はプログラマーならほとんど知ってると信じてるの?
>>711 それって不定性があると思うんだけど
例えば13:00:00と4:00:00だと9時間差とも思えるし15時間差と思えるから
その場合は一番小さい値を出せば良いのか?
信じるも何も普通は負の場合も含めた定義をするだろ……
>>721 その負の数に関する定義を知ってるかどうかの話ですよね
>>719 悪いけどここにいるあなた以外はみな知ってるよ
>>723 それはあなたの感想ですよね?
つまりプログラマーなら負の数の余りに関する理解があると信じてるということですね?
やばいですね☆
小学生が習うことすら知らなくて恥ずかしくないの?
公理主義の数学を語るうえで信じるもクソもねえよアホか
>>726 公理とはなんの話ですか?
負の数の余りに関する定義を知ってるかどうかの話をしているのですが会話できないのですか?
>>725 いや、信じるどうこうじゃなくてまともな教養ある人間は全員知ってるでしょうさすがに
>>729 だからそれはあなたが個人的に信じてることですよね?
言ってる意味わかりますか?
もう愉快犯だろコレwww
さすがにこんなバカがこの世に存在するとは思いたくない
>>730 「だからそれはあなたが個人的に信じてることですよね?」
っというのはあなたが個人的に信じてることですよね?
言ってる意味わかりますか?
「まともな教養のある人間」とかいう曖昧なワードでごまかそうとしてるのですかね
あなたにとっては教養のあるまともな人間とは数学の基礎的な公理をしっかり理解してるってことですか?
>>727 了解!てかなんかアスペみたいな反応ですまんw
>>733 少なくとも駒場の同級生は全員一人残らず知ってたよ
>>732 そのレスでは私がなにを信じてると言いたいのかわかりませんね。
整数論での基本的なところを省略しただけでどんだけ引っ張るねん
基本なんでわざわざ明記しなかっただけだろ
素数の定義も併記したほうがよかったの?
わかんなかったら聞きゃいいだけ
>>735 それはあなたの周りの人間のはなしですよね?
それは一般論ではありませんね
>>738 駒場ってどこにあるのか知ってる?ガイジくん
>>739 私の認識では東大のことを言ってると思っていますが勘違いならすみません。
でもそれがどうかしたのですか?
いずれにしろあなたの周りの人間のはなしということに変わりはありませんね。
勝手にまともな教養のある人間というのを都合のいいレベルに引き上げて「普通は負の数の余りを扱える」とか言わないでください
俺じゃねえよアホ
てか一般人のレベル引き下げてんのお前じゃん
>>741 で、あなたは本当にプログラマーなら負の数の余りの定義を知ってると信じてるですか?
やばいですね☆
>>671 で権威のある書籍を引用してみましたが、全然動じないし通じないようですね
私が学生時代のときは名前を見ただけで無条件に「ごめんなさい」といってしまったに違いないのですけれども今日日はだめですかね
ただ私の方にも落ち度はあり、権威を借りて説得する、というのは数学的な態度とはいえない、と反省しています
>>740 教養ある人っていうのは東大の教養時代に進振りの点数が90点くらいになるような、
リベラルアーツを堪能した知識欲旺盛な人物のことだと思ってたんですけど
教養がない人にとっての教養がある人の認識は違うってことですかね
彼はなんの話をしているのでしょうか。
私は
>>709に反応しただけですよ?
何か都合よく言いくるめたいのですかね
やばいですね☆
>>746 小学生ですら知ってることを知らずに恥をかいて5chでID真っ赤にするとか生きてて恥ずかしくないんですかね
やばいですね☆
>>744 それに対する私の意見は
>>740の後半に書いてますね
勝手に普通じゃないことを普通と決めつけてそれに当てはまらない人をやばい奴扱いしないでください
>>748 負の数の剰余は世の中の90%は知らないと何度言えば覚えるのか…
>>705 素数判定があまりに遅いのでBPSW法の実装を試してるんだけど、負数の剰余とか平気で登場するから、もろにこれにハマったw
これを期に勉強できてよかったよ
>>742 プログラムを書くときは、そういう点はきちんと把握する必要はありますね
モジュロ中置演算子に与える引数のうち一方または両方が負数のときの振る舞いは、言語によって大きく異なります。
https://shunirr.hatenablog.jp/entry/20120409/1333993409 >>749 私からすれば東大の中の上位レベルの教養があるのが普通です
勝手にあなたの普通を押し付けないでください
>>752 それは私でも知っていますね!
でも今回の件には関係ないですね!
>>750 この世の100%は知ってるぞ
お前以外な
>>756 それをほんとうにしんじてるとしたらやばいですね☆
>>755 いやだって周りにあなたみたいな白痴いませんから……
>>758 いずれにしろ負の数の余りに関する定義を普通の人は知ってるという認識はやばいですね☆
数学の話なのにもう「信じてる」とか感覚の問題でしか反論できてない時点でID:v/h5RNAaはゴミ
死んだ方が良い
この先生きてても誰もお前のことを好きにならない
>>759 あんたの主張論理的に破綻してるって気づいてる?
すごく間抜けだよ
>>760 あなたのレスでは会話になりませんね!
純粋な数論しかしてないと認識してるのはやばいですね☆
負の数の余りの定義を知らないとやばい奴扱いされるのが妥当らしいかの話ですよね!
>>762 その「普通」の認識がやばいってことですね!
お題と関係ない話を延々と…
世間一般的に伝わるかどうかなんてスレどころか板違いだろ
>>766 もう少しひねりのあるレスしろや
同じことばっか言ってて詰まんねえぞ
>>745 それはそのとおりなんですけれども、なかなか手がつかなくて…
電験2種に取り組んでおりそれに関係するようでしたら私も目の色を変えてやるのだろうと思いますが
今のところ値域が複素数のことはあっても、定義域は実時間 t で実数しかとらないのです…
お題: 与えられた英字文字列のrot13を求めよ。
>>773 あなたのことも言われてると思いますよ☆
>>775 人のせいにしてんじゃねえぞハゲ
面白いダジャレの1つでも言ってみろよ
お題: xy平面において原点を中心とし、4頂点が軸の上にある一辺10cmの正方形の紙について、与えられた定数a,b,cに対して、
直線方程式a*x + b*y = cを折り線として、紙をプラスの方向に完全に180度折り曲げた後に正方形の4個の頂点がどこに移るかを計算せよ。
可能ならば図示せよ。単位はcmとする。
入力例) a=1, b=-3, c=0.
a=-1, b=1, c=5.
>>711 pythonで書いてみた
def zikansa(x,y):
time1 = x.split(':')
time2 = y.split(':')
for i in range(3):
time1[i]=int(time1[i])
time2[i]=int(time2[i])
total1 = 3600*time1[0]+60*time1[1]+time1[2]
total2 = 3600*time2[0]+60*time2[1]+time2[2]
return abs(total1-total2)
初心者なので変なとこあったら教えて欲しい
>>774 やってみた
def rot(x):
alphabet=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
return alphabet[(alphabet.index(x)+13)%26]
def rot13(X):
text = ''
for i in range(len(X)):
if X[i] in alphabet:
text += rot(X[i])
elif X[i].lower() in alphabet:
text += rot(X[i].lower()).upper()
else:
text +=X[i]
return text
お題: トマトの選別をするシステムを作ることになった。ほとんどのトマトは真っ赤で、カメラは照明下で無地のホワイトカラーを
背景に画像いっぱいにトマトを一個一個撮影する。赤くないトマトは不良品として除外したい。
一個のトマトを撮影した画像を入力とし、赤くない場合は0、赤い場合は1を返す判定プログラムを作れ。可能ならば、しきい値をいくつか調整できるようにせよ。
>>782 pythonで作ってみた
>>781とくっつけたら出来る
import tkinter
from tkinter import messagebox
root = tkinter.Tk()
root.title("rot13")
root.geometry("360x360")
input_box = tkinter.Entry(width=40)
input_box.place(x=10, y=35)
input_label = tkinter.Label(text="英文字列を入力")
input_label.place(x=10, y=10)
def onClick():
messagebox.showinfo('結果',rot13(input_box.get()+'です。'))
button = tkinter.Button(text="rot13を実行",command=onClick)
button.place(x=10, y=65)
root.mainloop()
お題: 何も乗ってない将棋盤の上のあるマスに一つだけ角を置く。将棋のルールで角の移動できる範囲を図示せよ。
お題: 0〜9のアラビア数字が複数並んだ文字列が与えられる。統計して各数字の出現確率を小数点以下2桁の百分率で出力せよ。
入力例) 576985238557117185893588855965544756
お題:
1) 四則演算ができるシンプルな電卓プログラムP1を作れ。
2) 入力として計算式が与えられたら、P1を操作することでその式の値を計算するプログラムP2を作れ。
お題:モールス符号を復号化してください
短点 = "・"
長点 = "−"
区切り = " "
例)
入力
・・・・ ・ ・−・・ ・−・・ −−− ・−− −−− ・−・ ・−・・ −・・
出力
HELLOWORLD
モールス信号のお題って、俺が前に出したことがあるような?
文字をモールス信号に変えるやつだったかな?
それもう出たお題
A1
__b1
__b2
____c1
A2
__b3
のようなのを構築させるやつ
お題:頂点数Vnと枝数Bnが与えられる。連結で合同でないグラフをすべて書き出せ。
>>801 やるじゃん。君だったら、シミュレーションゲームのキャラも作れるどろう。
凄いよ
凄いけどさ。。労力の使い道、間違ってないか?こんなとこで
趣味のプログラミングと義務のプログラミングは違うくね?
>>801 3ヶ月はやりすぎやろーwって思って覗いたら力作だった
今後も頑張って!
戦艦もののシミュレーションゲームとか作って、ゲーム会社に売り込んでみたら?
久々に良いものを見た。
そういえばしばらく仕事以外のプログラミングから遠ざかっていたな...
お題を出される方は当然自身の答えを持ち合わせてから出すんですよね?
答え合わせはどうだったのですか?
多分俺日本で一番技術力高いと思うわ
日本一になった今思うことは問題が簡単過ぎてつまらん。ライバルがいなくてつまらん
俺はいったい何をすればいいのか
Adobeのようにソフトを市場にうちだすんだ
あなたはお金を得られて嬉しい
ユーザーは高い技術がうみだした良い製品を使えて嬉しい
>>815 人工知能チップと人工知能ドライバーモデルを開発して人工知能OSを設計する。
お題:
説明変数に測定誤差が生じるとき最小二乗法は一致推定量とはならない
正しい尤度方程式を導出し最尤推定を行えば一致推定になるが、驚くべきことに測定誤差があるとき最尤推定は確率収束が最も早い推定にはならない
これをネイマン・スコット問題という
最も収束が早い推定にはどのようなものがあるかを述べ、実装を行え
>>815 >>801を3次元化してSAOガンゲイルオンライン作れそう?
>>795
お題:文字列を読み取って同じ構造のフォルダを作ってください
入力:
フグ亜目
├─マンボウ科
│ ├─ヤリマンボウ属
│ │ └─ヤリマンボウ
│ ├─マンボウ属
│ │ ├─ウシマンボウ
│ │ ├─マンボウ
│ │ └─カクレマンボウ
│ └─クサビフグ属
│ └─クサビフグ
└─ハリセンボン科
└─ハリセンボン属
└─ハリセンボン >>795
お題:ソートされたパスの一覧を構造化して出力してください
入力:
フグ亜目
フグ亜目\ハリセンボン科
フグ亜目\ハリセンボン科\ハリセンボン属
フグ亜目\ハリセンボン科\ハリセンボン属\ハリセンボン
フグ亜目\マンボウ科
フグ亜目\マンボウ科\クサビフグ属
フグ亜目\マンボウ科\クサビフグ属\クサビフグ
フグ亜目\マンボウ科\マンボウ属
フグ亜目\マンボウ科\マンボウ属\ウシマンボウ
フグ亜目\マンボウ科\マンボウ属\カクレマンボウ
フグ亜目\マンボウ科\マンボウ属\マンボウ
フグ亜目\マンボウ科\ヤリマンボウ属
フグ亜目\マンボウ科\ヤリマンボウ属\ヤリマンボウ
出力:
フグ亜目
ハリセンボン科
ハリセンボン属
ハリセンボン
マンボウ科
クサビフグ属
クサビフグ
マンボウ属
ウシマンボウ
カクレマンボウ
マンボウ
ヤリマンボウ属
ヤリマンボウ >>826 Perl5
for (<DATA>) {
chomp;
@a = split/\\/;
sub {
$k = shift @a;
$_[0]->{$k} = {} unless exists $_[0]->{$k};
__SUB__->($_[0]->{$k}) if @a;
}->(\%h);
}
sub ($s, $r) {
for (keys %$r) {
print "$s$_\n";
__SUB__->($s.' ', $r->{$_})
}
}->('', \%h);
__DATA__
フグ亜目
フグ亜目\ハリセンボン科
フグ亜目\ハリセンボン科\ハリセンボン属
フグ亜目\ハリセンボン科\ハリセンボン属\ハリセンボン
フグ亜目\マンボウ科
フグ亜目\マンボウ科\クサビフグ属
フグ亜目\マンボウ科\クサビフグ属\クサビフグ
フグ亜目\マンボウ科\マンボウ属
フグ亜目\マンボウ科\マンボウ属\ウシマンボウ
フグ亜目\マンボウ科\マンボウ属\カクレマンボウ
フグ亜目\マンボウ科\マンボウ属\マンボウ
フグ亜目\マンボウ科\ヤリマンボウ属
フグ亜目\マンボウ科\ヤリマンボウ属\ヤリマンボウ >>829 一行目にこれが要る
use feature qw{current_sub signatures};
>>829 for (keys %$r) {
↓
for (sort keys %$r) {
>>830 ハイハイ、修正修正
use feature qw{current_sub signatures};
for (<DATA>) {
chomp;
@a = split/\\/;
sub ($hr) {
$k = shift @a;
$hr->{$k} //= {};
__SUB__->($hr->{$k}) if @a;
}->(\%h);
}
sub ($s, $r) {
for (sort keys %$r) {
print "$s$_\n";
__SUB__->($s.' ', $r->{$_});
}
}->('', \%h);
__DATA__
フグ亜目
フグ亜目\ハリセンボン科
フグ亜目\ハリセンボン科\ハリセンボン属
フグ亜目\ハリセンボン科\ハリセンボン属\ハリセンボン
フグ亜目\マンボウ科
フグ亜目\マンボウ科\クサビフグ属
フグ亜目\マンボウ科\クサビフグ属\クサビフグ
フグ亜目\マンボウ科\マンボウ属
フグ亜目\マンボウ科\マンボウ属\ウシマンボウ
フグ亜目\マンボウ科\マンボウ属\カクレマンボウ
フグ亜目\マンボウ科\マンボウ属\マンボウ
フグ亜目\マンボウ科\ヤリマンボウ属
フグ亜目\マンボウ科\ヤリマンボウ属\ヤリマンボウ お題: 年月日の日付が YYYY-MM-DD 形式の文字列(2020-06-11 など)で与えられるので、その日付から月の第何週か、及び第何曜日(第2月曜日、など)かを求める。
月の第何週かを求める場合、週の初めの曜日が日曜日と月曜日で違う答えになるが、これは両方を求めて分かるように二つ出力しても良いし、片方だけでも良い。
ヒント: Kotlin 7 スレの43。ただしこのヒントはほとんど答えなので自分で考えて解きたい人は見ない方が良い。
http://2chb.net/r/tech/1588748438/43 お題: 表面積が1平米である凸八面体のうち、体積が最大となる立体について、その体積の値を15桁以上の精度で計算せよ。
あと考えられるのは5角形4枚と4角形4枚か?
面倒で計算したくない
冷やっこ食ってて思ったんだけど
一辺が41cmの立方体の
表面積が 41×41×6=10086cm^2なので
角っこの頂点2ヶ所を
ちょんちょんって切り落とした立体なら八面ではあるって事かな?
三角錐二個の部分の表面積計算めんどくさそう
1÷√√34992=0.0731152229418051367121788278776110586200…
これより大きいものをとりあえず見つける方針で
0.0743448680932299869829269776944062867445462710353362468
見つかった
>>843 コナミ音ゲーのビートストリームの箱猫にゃん
みたいのは難しいので中学生が電卓で出来るレベルで
立方体から直方体切り出しの六角柱で考える
表面積約1平米の凸六面体の最大体積は?
まず一辺wが41cmの立方体の表面積w×w×6=10086[cm^2]
10086から86を引き算して10000に近づけます
do-whileループでxを求める
do{
a=10086-(x*x*2);
x+=0.00001;
}while(a>10000);
直方体切取幅x=6.557449999920918[cm]
切取直方体上下部分だけの表面積x×x×2=86.0000387051257[cm^2]
凸六面体(六角柱)の表面積=
9999.999961294874[cm^2]≠約1平米
元の立方体の体積41^3=68921[cm^3]
切取った直方体の体積x×x×w=1763.0061705599765[cm^3]
凸六面体(六角柱)の体積は
41^3-(x×x×w)=67157.99382944002[cm^3]
≒0.06715799382944002[m^3]
15桁以上
1割るルートルート34992ってなんだろう?
最大じゃないのは私も人の事を言えないので...
>>845が合ってるか間違ってるか
だけ教えていただけると
8面体が解決したら次は9面体
8面も最大の証明は難しいけど
>>851 値は15桁まで合ってると思いますよ。
プログラムのお題なんでコードを載せていただけると幸いですが。
何らか組んだんですよね?
しまった
係数 (1/3) がdoubleのままだったんでdouble精度になってしまった
家に帰ったらdouble版をアップします
ひたすら乱数探索
>>849 えー 凸にしたら10面になっちゃう
>>826
Ruby で
text = <<'TEXT' # \ を解釈しない
フグ亜目
フグ亜目\ハリセンボン科
フグ亜目\ハリセンボン科\ハリセンボン属
フグ亜目\ハリセンボン科\ハリセンボン属\ハリセンボン
フグ亜目\マンボウ科
フグ亜目\マンボウ科\クサビフグ属
フグ亜目\マンボウ科\クサビフグ属\クサビフグ
フグ亜目\マンボウ科\マンボウ属
フグ亜目\マンボウ科\マンボウ属\ウシマンボウ
フグ亜目\マンボウ科\マンボウ属\カクレマンボウ
フグ亜目\マンボウ科\マンボウ属\マンボウ
フグ亜目\マンボウ科\ヤリマンボウ属
フグ亜目\マンボウ科\ヤリマンボウ属\ヤリマンボウ
TEXT
text.each_line.inject( [ ] ) do | prev, line | # 1行ずつ処理する
line.chomp! # 末尾の改行を削除する
words = line.split( "\\" )
words.zip( prev ).each_with_index do |ary, idx|
if ary[ 0 ] != ary[ 1 ] # 1つ前の要素と、異なっていたら
puts " " * idx + ary[ 0 ] # インデント
break
end
end
words
end 0.07434486809322999110989619368561104639139465256280075733904874421666917664911993460556242342418454035329397732967289108376252183488881295875664070934129575634827025621624683049348057877455258195173727352356013738382644505372784969303844994902036116602401810098334065219605813513311533511174260033990459633153548001338432276618035960031832154258304694684989102438831680515365572871146875031327576991273892059152446734535128273692394822907010528329236904909366291990338992899295703583566824654618008406013296199027300917662863617783075767465771504776626571228664315942541587700314169499095063254202509152441676340208925338471982724370712866011599553438930619611265418988185782338154673314730488687674137034907531619005947724301353643581914084747714077649289547685930833278053943700887036591347108420548965969583488831450816524757283812848039192907796866305854763801905888387806167102792468923
>>861のコードはわかるけど、
>>862の桁数はどうやったんだろう
>>864 scalarを自作8192bit floatライブラリにして計算しました
全部はれなかったのではれたぶんだけ
探索方法は全く同じです
頂点座標は体積最大値の半分くらいの桁数で求まるようです
今回は速度が問題にならなかったので力業のままで
8面体は自力で面の構成を考えたけど
9面以上はコンピューターに考えさせないとキビシイかな?
>>861 お見事です
ま、頂点の座標があったら図を描くのも難しくはないですけどね
>>867 はヘェ〜スゲーな〜
どんな勉強したらこんなの解けるんだろ
理屈の解説は
>>861のコードを読み解くしか無いですかね?
頂点を求める考え方や手順の解説お願いします。
6角柱がハズレだとわかった後
6分で思い付いた形
すごいでしょ?
さすが数オリ経験者の東大数学科卒
>>869 >840-841は6分かも知れないけど
出題から3時間後
>>837で答えてるのは
答えを知ってたのでは?
何処で習うんだか、というか有名な立体でプラトンとか名前付いてたりするんかな
>>866 >8面体は自力で面の構成を考えたけど
>9面以上はコンピューターに考えさせないとキビシイかな?
そうねえ。
面の構成まで計算できたら汎用性があっていいし、何より「本当にコレで最大なのか?」ってとこで悩まなくてもいいですね
私にもファンが出来たか
5か月前の書き込みを覚えていてくれるとは
では次5か月後にあらわれます
>>834 Perl5、こういうプログラムでは日にち曜日計算を自分で考える前に、いつも使っているモジュールの利用をすぐ思い浮かんでしまう
for (qw{02 03 07 10 14 17 21 24 28 30 31}) {
$date = "2020-05-$_";
$t = Time::Piece->strptime($date, '%Y-%m-%d');
$n = 1 + int($t->mday / 7);
$dw = $n . $t->day(qw{日 月 火 水 木 金 土});
$t1 = $t - ONE_DAY * ($t->mday - 1);
$wk = 1 + int(($t->mday + $t1->_wday - 1) / 7);
print "$date: 第$wk週目の第$dw曜日です。\n";
}
実行結果
~ $ perl 17_834_date_week_day.pl
2020-05-02: 第1週目の第1土曜日です。
2020-05-03: 第2週目の第1日曜日です。
2020-05-07: 第2週目の第2木曜日です。
2020-05-10: 第3週目の第2日曜日です。
2020-05-14: 第3週目の第3木曜日です。
2020-05-17: 第4週目の第3日曜日です。
2020-05-21: 第4週目の第4木曜日です。
2020-05-24: 第5週目の第4日曜日です。
2020-05-28: 第5週目の第5木曜日です。
2020-05-30: 第5週目の第5土曜日です。
2020-05-31: 第6週目の第5日曜日です。
>>875 先頭に
use Time::Piece;
use Time::Seconds;
が抜けてたてorz
お題
フィボナッチ数列のN番目の項を求めよ。
ただし非常に大きなNにも対応するために計算量をO(logN)に抑える事。
>>878 perl
use bigint;
$ap = $am = $bp = $b0 = 1;
$a0 = $bm = 0;
for($m = $N = $ARGV[0]; $m ;$m /= 2) {
($ap, $a0, $am) = ($ap * $bp + $a0 * $b0, $ap * $b0 + $a0 * $bm, $a0 * $b0 + $am * $bm) if $m % 2;
($bp, $b0, $bm) = ($bp * $bp + $b0 * $b0, $bp * $b0 + $b0 * $bm, $b0 * $b0 + $bm * $bm)
}
print "F_$N = $a0\n";
>>878 Perl
# 簡略化
use bigint;
$am = $b0 = 1;
$a0 = $bm = 0;
for($m = $N = $ARGV[0]; $m ;$m /= 2) {
$a0b0 = $a0 * $b0;
$b0b0 = $b0 * $b0;
($a0, $am) = ($a0b0 + $am * $b0 + $a0 * $bm, $a0b0 + $am * $bm) if $m % 2;
($b0, $bm) = ($b0b0 + 2 * $b0 * $bm, $b0b0 + $bm * $bm)
}
print "F_$N = $a0\n";
>>881 C++/Win32
#include <windows.h>
#include <urlmon.h>
#include <stdio.h>
int main(void)
{
CoInitialize(NULL);
HRESULT hr = URLDownloadToFileA(NULL,
"
http://google.com/robots.txt",
"robots.txt",
0,
NULL);
if (SUCCEEDED(hr)) puts("OK");
else puts("No good");
CoUninitialize();
return 0;
}
なおNが大きくなると扱う数の桁数がNに比例して増える
よって
>>882の乗算の回数はO(logN)であるが、
計算量はO(logN)に抑えることはできない
おそらくO(N^2)とか、乗算を効率化してもO(N*(logN)^2)あたりではないか
お題: (835の類題)表面積が1平米である九面体のうち、体積が最大となる立体について、その体積の値を15桁以上の精度で計算せよ。
※ 立体の形状をあらかじめ限定しないアルゴリズムがあればなお良い。
>>884 標準コマンド
Windows 10 だったら多くのOSと同様に標準で curl が使えるから
curl -LO
https://google.com/robots.txt >>881 Kotlin script
java.net.URL("
https://google.com/robots.txt").openConnection().inputStream.bufferedReader().lineSequence().forEach(::println)
script じゃなくてもほぼ同じ。main() の中に入れるだけ。
>>881 Ruby
require 'open-uri'
$><<open('
https://google.com/robots.txt').read
>>881 Perl5
use LWP::Simple;
use LWP::Protocol::https;
print mirror('
https://google.com/robots.txt', './robots.txt'), "\n";
実行結果
~ $ perl 17_881_https_mirror_robots_txt.pl
200
~ $ ls -o robots.txt
-rw-r--r-- 1 user 7035 Jun 9 03:00 robots.txt
>>659 https://ideone.com/dJhsj8 10日以上回してようやく229の次が出た
先頭から30個は以下。A098044 の記載とも一致
7, 13, 19, 37, 43, 79, 163, 223, 229, 608981812891, 608981812951, 608981812993, 608981813507, 608981813621, 608981813819, 608981813837, 608981813861, 608981813929, 608981813941, 608981814019, 608981814143, 608981814247, 608981814823, 608981814829, 608981815027, 608981815051, 608981815069, 608981816791, 608981816803, 608981816893
>>893 VPSは10コアぐらい使いましたか?
それにしても興味深い
>>894 いや、コード見てもらったらわかるようにシングルスレッドです。
工夫して並列化したらコアの数だけ高速化できる余地はあるので
誰かやってみてほしいですよ。
計算を続けると6千億台に1万個以上解が見つかります。
連続した数調べるならエラトステネスの篩したほうが速いんじゃないの
篩を使った方法は
>>645(修正
>>695)
こんなん1時間でいける?
>>896 えっともしかしてそれは
6000億ちょっとの要素数の配列を扱うと言ってますか?
エラとステネスの篩はビット単位で判定させれば8分の1の要素数で済む
もっと効率化すれば32分の1くらいになったはず
まぁそれでも億単位の要素を使うわけだけど
>>893 そのまま解を検索してみたけど、610968213803 から先は解が見つからなくなった
次はいくつになるかをお題にしてもいいかもね
ほとんどの6000億幅が取れない人は、"区間ふるい"で.
「1億の6千回」か「10億の600回」でやるのが現実的(平方分割的感性が必要?)
実際に1億でやってみたら、2時間ほどかかった。
ideonは時間の関係で1億配列にして、
最初と(ログから)最後の1億をやっている。
https://ideone.com/Ikn4qW >>896 いや
篩も試してみたけどやっぱりBPSW法が速かったよ
それと単純に割り算の繰り返しで試すより面白そうだったってのもある
お題: 整数を記入可能な空欄の横3×縦3マスが格子状に並んでいる。左からh+1番目で上からk+1番目のマスに書かれている整数を「C(h, k)」と表すことにする。
ただし、空欄のときやマスの範囲外の場合は「C(h, k)」はゼロとする。
C(h, k)の位置に整数mを鉛筆で記入する手続きを「P(h, k, m)」と表すことにする。
手続きにおいてはC(h, k)は入れ子を許し、演算子+と-は通常の足し算と引き算を意味するものとする。
(1) 次の手続きのリストを順に実行し、結果を表示せよ。
P(0, 0, 1), P(1, 0, C(0, 0)+2), P(2, 0, C(1, 0)-1),
P(C(1, 0)-1, C(0, 0)+C(2, 0)-2, 5), P(2, 2, C(2, 1)-2).
空欄はゼロで表すものとする。
>>906 前言撤回。
>>905のように篩でやったほうが格段に速い。そりゃそうだよね。
お題: CSVをパースせよ
例
入力:
1,abc,"def
ghi",4
2,abc,"def
ghi",4
出力:
[[1, "abc", "def\nghi", 4], [2, "abc", "def\nghi", 4]]
>>909 Ruby
require 'csv'
$><<CSV.parse($<.read)
>>887 60面体まで出来ました
60面体にもなると
5角形と6角形だけからなるものだけでも
極大点が10個以上にもなって
本当に最大が探せてるのかいまいち確信は持てないんですが...
収束は速いので形の概要が分かれば高精度化は簡単です
14面体以上は全て
5角形が12面、残りが6角形の多面体が最大です
お題:多面体の面の構成を、以下のルールに従う面列で表現する。
頂点のリストで表現された面の集合(例:正四面体なら {[1,2,3],[1,3,4],[1,4,2],[4,3,2]})で多面体が与えられたとき、
それに対応する多面体の面列表現を出力せよ。
1. 3〜9角形の面の表現を t,q,p,x,h,o,n とする。10角形以上の面がある場合はエラーとしてよい。
2. 適当な面を選び、その面の表現をまず面列の先頭に置く。
3. 選ばれていない面が残っている場合は、それまでの面列の後にハイフンを置き、続けて、既に選ばれている面の外周に接する面を順に列挙する。
選ばれていない面がなくなるまでこのプロセスを繰り返す。
4. ハイフンの前後の面列の、それぞれ先頭の文字に対応する面は、互いに接しているものを選ぶ。
5. ハイフンで区切られた面列に、pppp のように繰り返し部分がある場合は、p4 のように繰り返し回数を数字で表す。
繰り返しの対象が単一の面でない場合は対象の前後に括弧を置く。この括弧は入れ子にできる。(t(xp)2)2 = txpxptxpxp
(この括弧の中にハイフンを含めることはできない)
6. 可能な表現が複数ある場合は、表現に含まれるアルファベットの個数が最も少ない表現を採用する。
例) 三角錐: t-t3, 六角柱: x-q6-x, 正十二面体: p-p5-p5-p
切頂二十面体(サッカーボール形): p-x5-(xp)5-(px)5-x5-p
>>912 そのルールでは任意の多面体を表現出来ないと思うんですが
だね
トポロジー的に球面限定だし
その限定でも
4. が複数可能性があるから
>>912の表現では一意に決まらない
>>909 これってエクセープサれた改行文字で渡されるのが標準的じゃない?
規格としてあるのかわからないけど
最初から区切り文字をエスケープする方法まで決まっていたらxmlなんて出てこなかったかもな
>>911 面の数が可変のものを作ってしまったか・・・
20面体、32面体、42面体、72面体あたりが面白い形状だと思うよ
14面体以上は全て5角形6角形のみで
あまり面白くない
対称性が良いか悪いかだけ
現在82面体
手抜きで一部計算オーダーが非常に悪い所があって進まなくなってきた
(面数の5乗オーダー)
100面まで到達するにはコードを変えないとダメかも
対称性が良ければ良いほど最大解となるかというとそうではない
八面体の解をみてもそれはわかるし
四十二面体の対称性の高いのは切稜十二面体だと思うが、解はそれとは違う
面の数の5乗というのは総当たりをしているのかな
高速化するには焼きなまし法等を使うといいのかと思うがどうやるんだろう
1面少ない体積最大の立体から1面足した形を探索
なので最大が突然変異すれば最大を見逃すかもしれない
ランダムよりは効率が良さそう
構造計算のオーダーが4乗
ここはおそらく2乗くらいに減らせると思う
極大の収束は良くある微分を使うやつ
収束時も毎回構造計算してるけど
(ほぼ)同じ構造であるのでオーダーは1乗に減らせる
形自体はもう面白くないので
改善はしないかも
むしろ体積が小さい極大の方がいろんな形になって面白い
>>921
数値はこれと同じ?
9 0.076898933926867766
10 0.078734752898039751
11 0.080055026399577983
12 0.08168837182418255218049
13 0.082432267303420834
14 0.083349245941114841
16 0.084742718358283536
17 0.085264872589057683
20 0.086626966830007951
32 0.089493100466131958
33 0.089603827451613424
42 0.090574499972086386 お題: 3つ以上の言語で動く"Hello World"(標準出力 改行有無不問)
>>925 #! /usr/bin/perl
print "Hello World";
#!/usr/bin/python
print "Hello World"
<?php
print "Hello World";
?>
>>925 $ cc hw.c && ./a.out
Hello, World!
$ bash hw.c
Hello, World!
$ perl hw.c
Hello, World!
$ cat hw.c
#if 0 /*
/ 2>\/dev\/null
print() {
echo Hello, World!
}
2>\/dev\/null /;
#*/
#endif
#include <stdio.h>
#define print main() { printf ("Hello, World!\n"); } char *p =
print "Hello, World!\n";
>>925 面白いね。俺の回答はつまらんけど
$ cat hello_world
print("Hello World!")'
$ruby hello_world
Hello World!
$perl hello_world
Hello World!
$python hello_world
Hello World!
お題: CSV を、JSON に変換せよ
あ,い
1,2
[
["あ","い"],
["1","2"]
]
Convert CSV to JSON
https://www.convertcsv.com/csv-to-json.htm あ,い
1,2
2, 3
↓
[
{ "あ": 1, "い": 2 },
{ "あ": 2, "い": 3 }
]
とかじゃないんだな
❯ node
> const csv2json = text => text.trim().split('\n').map(line => line.split(','))
undefined
> text = `
あ,い
1,2`
> csv2json(text)
[ [ 'あ', 'い' ], [ '1', '2' ] ]
>>930 Ruby
require 'csv'
require 'json'
puts CSV.parse($<.read).to_json # => [["あ","い"],["1","2"]]
>>930 sh というか awk というか
( echo あ,い ; echo 1,2 ) | awk -F, 'BEGIN{print "["} { printf "[\"%s\"", $1; for (i = 2; i <= NF; i++) printf ",\"%s\"", $i; print "]"} END{print "]"}'
>>930 >>934はレコードごとのカンマが抜けてた。ちょっと修正。
( echo あ,い ; echo 1,2 ) | awk -F, 'BEGIN{print "["} {if(NR>1)print","; printf "[\"%s\"", $1; for (i = 2; i <= NF; i++) printf ",\"%s\"", $i; printf "]"} END{print "\n]"}'
>>909 >>930 何気にPythonの仕様が気になったので。
import csv
import io
import json
with io.StringIO("""
1,abc,"def
ghi",4
2,abc,"def
ghi",4
""") as f:
__print([r for r in csv.reader(f) if r])
with io.StringIO("""
あ,い
1,2
""") as f:
__print(json.dumps([r for r in csv.reader(f) if r], ensure_ascii=False))
お題:"チューリングマシン"を使って一行CSVパーサーを作る
チューリングマシンも自作すること
【CSVの仕様】
・カラム値は「a」、「,」、「"」、の組み合わせ、または「」(値無し)しか取らない
・カラム値に「,」が含まれる場合は「"」で囲む必要がある、含まれない場合はどっちでもいい
・カラム値に「"」が含まれる場合は「\"」とエスケープする
入力例) "aa,a",aa,,"aa\"aa"
チューリングマシンからの出力例、Pythonの場合) [None, 'a', 'a', ',', 'a', None, 'X', 'a', 'a', 'X', 'X', None, 'a', 'a', None, '"', 'a', 'a', None]
(Noneは無視、'X'は区切りポイントを表している)
【開発規模】Pythonで15行程度
チューリングマシンなのにPythonとは?
意味不明だ
正方形の面積を求める問題に対して
この世に正方形なんて存在しないから求められません
とか言っちゃう系?
比喩がとんちんかんだぞ
今回は「チューリングマシンも自作すること」って明言されてますやん
自作チューリングマシンを Pythonの改行15回程度で作れって?神だわ
動作を規定すればよくて
実際に動く機械を作る必要はない
と思ったが
Pythonでエミュレーターを作れって事か?
別に無限にメモリがある必要は無いけど
実際に動くどんなプログラムにも限界がある
>>946 メモリが有限だったらチューリングマシンとはいいましぇん><
しかもCSVパーサーって
つまりはPython15行でExcelを再現しろと?
>>938の生成言語
CSV → COL | COL ',' CSV
COL → '"' WCOM '"' | NCOM
WCOM → ε | 'a' WCOM | ',' WCOM | '\' '"' WCOM
NCOM → ε | 'a' NCOM | '\' '"' NCOM
状態セル10個前後でいけそう
>>938 Perl 状態セル4個
$ cat input
"aa,a",aa,,"aa\"aa"
$ perl odai938 < input
[None, 'a', 'a', ',', 'a', None, 'X', 'a', 'a', 'X', 'X', None, 'a', 'a', None, '"', 'a', 'a', None]
$ cat odai938
%maton = (
'N' => { 'a' => ['N', q('a')] , ',' => ['N', q('X')] , '"' => ['Q', q(None)] , '\\' => ['E', q(None)] },
'Q' => { 'a' => ['Q', q('a')] , ',' => ['Q', q(',')] , '"' => ['N', q(None)] , '\\' => ['F', q(None)] },
'E' => { 'a' => ['N', q('a')] , ',' => ['N', q(',')] , '"' => ['N', q('"') ] , '\\' => ['N', q(None)] },
'F' => { 'a' => ['Q', q('a')] , ',' => ['Q', q(',')] , '"' => ['Q', q('"') ] , '\\' => ['Q', q(None)] },
);
@res = ();
$state = 'N';
for $c ( split //, <> ) {
($next, $out) = @{$maton{$state}{$c}};
last unless defined $next;
push @res, $out;
$state = $next;
}
printf "[%s]\n", join ', ', @res;
>>951 チューリングマシンを使っていないのでだめだ
そのオートマトンは文脈依存文法どころか文脈自由文法すら対応していない
これら全てに対応出来てこそチューリングマシンだ
(このことは将来エラーリカバリーを考える上で、重要になると思っている)
つまりテープヘッドは左右に動き状態関数でそれを指示出来る(文脈自由文法に対応)
チューリングマシンは受理状態を指定出来る
今回、状態の数は受理状態を省略して5個でいける(もっと少なく出来るかもしれんが)
状態関数は状態5*記号4のマトリックスを考えて、その中の12個を埋めればいい
>>958 どこがおかしい?
線形有界オートマトンといえば納得するか?
そんな言葉使わなくても実装出来る
と言うかこのスレにこの言葉知ってる奴いないだろ
チューリングマシンの設計じゃなくて
チューリングマシンエミュレーターの設計だよな
>>951 \aやらを認めてるのが気になるがそれを直したら遷移関数はあってるな
後はチューリングマシンとして完成させるだけ
俺の遷移関数に冗長があったから直したら一致した
>>960 HTMLは文脈自由文法だが
WebKitのHTMLパーサーは非文脈自由文法として実装されている
そこでチューリングマシンが有用かはさせおき、非文脈自由文法を考えるキッカケになることもある思う
>>961 エンドマーカーを省略した線形有界オートマトンの実装な
イミテーション・ゲームという映画が面白かった
キーラ・ナイトレイ美しすぎ
お題
日本将棋連盟のサイトにあるレーティングで
AとBが対戦してAが勝った場合のA、Bの
新しいレーティングを求める。
解答を持ちあわせていて、ただドヤりたいだけのスレなのに?
解答期限をつけるべきだと思う
イロレーティングの実装ってことでいいのかな?
だとするとあまりに簡単すぎないか?
漢字覚えるのに上からなぞるだけみたいな問題だと思った
考える要素が皆無でもこのスレの趣旨に反しないのか?
現にイロレーティングの実装なんかググったらすぐ見つかるわけだし。
そんなんでもいいんだったらいくらでも出せる。組合せ最適化問題の本に書かれているのそのまま出せばいいわけだし。
後、入力が何で出力が何で、どれくらいで実装できるものか書いてくれたら分かりやすくなると思う
結果後の数値出すだけだから2つの数値受け取って計算して出力するだけでしょ
三角形の面積を求めよ、と同じ問題
計算式知ってるか、ググれるかだけ
お題: 九九の表の1×1〜9×9をSQLデータベースに書き出せ。
お題: サイン関数の表をSQLテーブルに出力し、そのテーブルへのSQL問い合わせを使ってサイン関数を再現する関数を作れ。精度はテキトーで構わない。
>>974 出来たけど5chはSQLは貼れないのかな?w
間違ったSQLインジェクション対策なのかもw
>>974 SQLはブロックされて貼れないけど3行で出来た
1. x、y、y_hatのカラムでテーブル作成
2. INSERT SELECT文とPGのgenerate_series関数を使ってxに乱数をINSERT
3 .UPDATE文でsin関数をyに、テイラー展開版sin関数をy_hatにINSERT
>>973 やっぱりSQL貼れないねぇ
答え:PostgreSQLで確認
http://codepad.org/qGD8d2IU ※会員登録してないからそのうち消える
>>974 これもしかしてサイン関数の表は荒いから補完法を使ってサイン関数を作れって意味だったのかなー
テーブル作らなくても行けそうだと思ったけど必要なのか
>>973 mysql>CREATE DATABASE testdb;
mysql>use testdb;
mysql>CREATE TABLE tbl_kuku(
'1' int, '2' int, '3' int,
'4' int, '5' int, '6' int,
'7' int, '8' int, '9' int
) ;
mysql>load data local infile
"/Users/user/Desktop/kukutable.csv "
into table tbl_kuku
fields terminated by ','
optionally enclosed by '"';
>>974 問題の意味がよく分からなかったけど、荒いsine関数表を元に補間法によって任意の値に対するsine関数を完成させろという意味なら出来た
PostgreSQL用
http://codepad.org/Z81nscIT ※会員登録してないからそのうち消える
>>974 mysql> delimiter //
mysql> CREATE FUNCTION SIN (angle DOUBLE )
-> BEGIN
-> SELECT angle FROM tbl_sin ;
-> END//
mysql> delimiter ;
mysql> SELECT SIN(45);
>>991 解答締め切りと採点と答え合わせは?
ちゃんとフラグ回収してよね
お題: 過去スレからお題と回答を抽出し、検索できるようにしろ
>>994 print "ろくなお題もまともな回答もありませんでした。"
お題: 三次元タートルグラフィックスを実装し、森林・臓器・シェルピンスキーの立体ギャスケットのいずれかを描画せよ。
奥行きの表現には任意の遠近法か任意のレンダリングエンジンを使うこと。
【実装例】
walk(長さ) // 現在のペンの状態で現在の方向へ前進する
set_pos(x, y, z) // 位置をセット
pos = get_pos() // 現在位置を保存
set_dir(dx, dy, dz) // 方向ベクトルをセット
dir = get_dir() // 現在の方向を保存
turn(dx, dy, dz) // 向きを調整(方向ベクトルを回転)
pen_on() // ペンを下ろす(描画を開始)
pen_off() // ペンを上げる(描画を止める)
-curl
lud20250209160608ncaこのスレへの固定リンク: http://5chb.net/r/tech/1584031367/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。
TOPへ TOPへ
全掲示板一覧 この掲示板へ 人気スレ |
Youtube 動画
>50
>100
>200
>300
>500
>1000枚
新着画像
↓「プログラミングのお題スレ Part17 YouTube動画>1本 ->画像>6枚 」を見た人も見ています:
・【話題】『関ジャム』名曲ランキングにミスチルファン激怒?「上位に入ってないのは謎」★2 [数の子★]
・【音楽】 春奈るな、6月7日“るなの日”に配信限定シングルをリリース。夏のプレミアムライブ実施も発表
・【ラグビー/W杯】9月の訪日客5・2%増 227万2900人 2カ月ぶり増加 英国、ロシア、フランスなどからの旅行者が急増
・ロマンシングサガ-ミンストレルソング 563曲目
・スプラトゥーン2のナワバリバトル過疎っててワロタ・・・
・プロレスリングWAVE 25
・【バーチャルYoutuber】にじさんじ有ンチスレ25145【ロア復帰配信21時〜お葉山を添えて〜】
・DDTプロレスリング中継
・ハロプロの話題スレ
・数独プログラミング
・【中米移民キャラバン】メキシコと米国の国境に2000人超到着 地元では抗議デモや投石など冷たい歓迎
・女子プロランキング1位は男子だと何位ぐらいですか
・「お金10倍にするよ」 マッチングアプリで出会った男性の投資話に乗ったら… [蚤の市★]
・【音楽・新譜】CD・DL・ストリーミングチャート/売上議論・予想スレッド 2022/05/14~
・バイアグラ・レビトラ・シアリス&ジェネリック119
・【バイキング】高橋真麻、紅蘭の服装への批判にピシャリ「こういう服が着られない人のひがみ」 [爆笑ゴリラ★]
・【モーニング娘。12期】 野中美希応援スレッド#243 【ちぇる・ちぇるぴ・のなちゃん・のなえもん】【1st写真集、発売中!!】
・東部ルガンスク州制圧迫る ロシア軍、州の95%を占領 ウクライナ側が最後の拠点とする要衝セベロドネツクを包囲へ★8 [powder snow★]
・ゼレンスキー大統領 日本の国会で“ロシアに抗議の演説”打診 ★8 [どどん★]
・【アニメ】ガンダム史上最も性格がいいヒロインランキング…ラクス・クライン、セイラ・マス、ティファ・アディールなど★2
・【サッカー】親善試合(対ブラジル戦と対ベルギー戦)の日本代表メンバー25人発表★5
・のりプロアンチスレ7
・鬼滅の刃のプログラム
・プログラマのIQ
・プロレス界のイケメン
・【バーチャルYouTuber】にじさんじ有ンチスレ26636【俺の切り抜きだけ伸びない】
・バスプロの不倫
・プログラマーの転職
・矢口真里の火曜ザナイトでモーニング娘。現役OG大集合スペシャルやるってよ
・【アメリカ大統領選】激戦6州の平均支持率でバイデン氏をトランプ氏が徐々に詰め、2.3ポイントに迫る ★3 [豆次郎★]
・プログラマの最終学歴
・プログラマとテスター
・プログレラジオ
・プログレは死んだのか?
・プログラマーのイメージ
・池沼の歌う歌はプログレ
・『正統派』日本のプログレについて語ろう
・【ミリシタ】アイドルマスターミリオンライブ! シアターデイズ Part4413
・【野球】<新庄ビッグボス>敵地チケット完売せず…人気に疑問の声..連日大展開するメディアの扱いと、ファンとの間に温度差が... ★2 [Egg★]
・【FF14】Manaグループ総合スレ Part57
・【チラシより】カレンダーの裏(IDなし)1113【大きめ】
・彼の家に行ったらプレイステーション2があった
・B86W59H83、Gカップグラドルが4年ぶりグラビア「水着になるのが恥ずかしすぎて…」
・【バーチャルYoutuber】にじさんじ有ンチスレ16162【くこかな?】
・薬局「カップラーメンとジュース安く売っちゃお…w」
・【DAZN】プレミアリーグ総合 Part.10
・プロレスラーが出した歌について
・【音源】昨今のレーベル/レコ屋事情【グッズ】
・Yahoo!検索 宮澤エマがランキング1位に、宮澤「各局、口合わせをしているよう、流れは誰が作っているのだろう」 政権への報道に疑問★3
・【ロックマン】有賀ヒトシ/ありがひとし総合 16巻【THEビッグオー】
・津波到達の混乱に乗じて残虐レイプして妊娠させてあげたいハロメンと言えば?江口紗耶
・ロマンシング サ・ガ
・セクロスのプラモデル
・【Netflix】ザ・プロム The Prom【ライアン・マーフィー監督 メリル・ストリープ ジェームズ・コーデン ニコール・キッドマン】
・【バーチャルYoutuber】にじさんじ有ンチスレ21875【女将無能伝説】
・執筆するプログラマー
・TDR謎解きプログラム
・七人の侍はプロレス
・【G7】各国首脳が激論をかわす写真が話題に・・・座るトランプ氏に仏独首脳が身を乗り出し、安倍首相は間に立って腕を組む★3
・信州プロレスの今後
・プロレスラーと酒
・【バーチャルyoutuber】にじさんじ有ンチスレ27600【勃起した】
・【バーチャルYouTuber】GEMS COMPANY総合スレ27【ジェムカン】
・佐山聡のプロレス論
・きつねの講座卒業生による鑑定タロットリーディング
・【もうすぐ】ももいろクローバーZ潜入捜査官16079【おもしろラジオ】
02:06:08 up 27 days, 3:09, 0 users, load average: 9.19, 10.19, 10.98
in 1.6815040111542 sec
@0.072270154953003@0b7 on 020916
|