TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
Pythonのお勉強 Part60
Vue vs React vs Angular Part.2
関数呼出しはgoto文である
数学者が技術者にプログラムを書いてもらうスレ
人工知能ディープラーニング機械学習のための数学
「コンパイラ・スクリプトエンジン」相談室16
関数型言語一般
Python の宿題ここで答えます Part 2
Visual Studio Code / VSCode Part3
ねえ、これ僕間違ってる?
プログラミングのお題スレ Part14
- 1 :2019/05/18 〜 最終レス :2019/07/16
- プログラミングのお題スレです。
【出題と回答例】
1 名前:デフォルトの名無しさん
お題:お題本文
2 名前:デフォルトの名無しさん
>>1 使用言語
回答本文
結果がある場合はそれも
【ソースコードが長くなったら】 (オンラインでコードを実行できる)
https://ideone.com/
http://codepad.org/
http://compileonline.com/
http://rextester.com/runcode
https://runnable.com/
https://code.hackerearth.com/
http://melpon.org/wandbox
https://paiza.io/
宿題は宿題スレがあるのでそちらへ。
※前スレ
https://mevius.2ch.sc/test/read.cgi/tech/1549160513/
- 2 :
- 2get!
- 3 :
- #!/bin/sh
echo 1乙
- 4 :
- >>1乙
>>前スレ920
C
https://ideone.com/bz7Y5P
- 5 :
- お題
1. URLエンコード
次の文字列をURLエンコード(パーセントエンコーディング)せよ。
但しURLエンコード専用ライブラリだけは使わない事。
‘日 本’
( 全角2文字の間に半角スペースが一つ入ってる.)
元の文字コードはUTF8とする。 この場合は7バイト。
パーセントエンコードとは、バイトの並びについて各バイトを「%XX」(XXは十六進法)という文字列への変換である。 バイト列への変換はライブラリを使っても良い。
正解(アルファベットは小文字も可)
%E6%97%A5%20%E6%9C%AC
2. URLデコード
1でURLエンコードされたものをURLデコードせよ。
URLデコード用ライブラリがあれば使う事。
正解 日 本
- 6 :
- >>5 python
from urllib.parse import unquote #,quote
url = '日 本'
urle = ''.join([ '%{:x}'.format(b) for b in url.encode('UTF-8') ])
print(urle) # encode same #print(quote(url))
print(unquote(urle)) # decode
''' # 出力
%e6%97%a5%20%e6%9c%ac
日 本
'''
- 7 :
- 何も考えないバカはすぐに飛びつくなぁ
これお題に見せかけた課題か宿題だろw
- 8 :
- >>7
出題者本人が回答しているだけだろ。
何も考えない以下略
- 9 :
- 各桁を足し合わせたら引数で与えられた数になるものを5個返す関数を作れ。
例:
sumnum 12
> [39,48,57,66,75] <- 3 + 9 = 12, 4 + 8 = 12, 5 + 7 = 12, 6 + 6 = 12, 7 + 5 = 12
- 10 :
- >>5
https://mevius.2ch.sc/test/read.cgi/tech/1434079972/56
- 11 :
- お題
(0,0)(0,999)(999,0)(999,999)のx,y 座標系の中の問題
次の20個の数値を先頭から2個ずつ取ってのx,y の位置に 10個のポイントがあるとする。
[136, 577, 110, 927, 472, 199, 157, 808, 388, 598, 94, 31, 388, 157, 325, 409, 787, 897, 850, 598]
(136,577) (110,927) 〜(850,598) 10ポイント
問題1 外側の正方形
全てのポイントが正方形の内側にあり、正方形の面積が一番小さくなる正方形の4点の座標を示せ。 但し正方形の座標は(999,999)の範囲内とする。
正方形は斜めもあり得る。 正方形の辺は必ず2点以上ポイントに重なっている。
問題2 内側の正方形
全てのポイントが正方形の外側にあり、正方形の面積が一番大きくなる4点の座標を示せ。
正方形は斜めもあり得る。 正方形の辺は必ず2点以上ポイントに重なっている。
問題を難しく感じる人は、斜めの正方形は考えないとしても良い。その旨回答に書いておいてください。
- 12 :
- お題と回答
>>5 : >>6 >>10
>>9 :
- 13 :
- 宿題スレ行けって
- 14 :
- >>12 おいおい、金儲けにするんかい。 ま、金を払う人がいるなら良いが。 学生の宿題に需要があるかな?
しかしこんなところで宣伝すんな。
- 15 :
- >>9 https://ideone.com/4nfTNV
- 16 :
- >>15 93 だけは正しいけど他は違うだろと思ったが、0を足しても結果は変わらないから詐欺に近いな。
しかしこう言う指摘は、プログラムには重要。
こう言う考え方をするなら、129 12342 なども該当するな。
あまりにも組み合わせが多すぎるから、条件をつけないとな。
問題の条件として各桁に0は含まないとしたり数字は2桁以内とするとか、答えは一番大きな数字を上から順に5つ示せとか。
- 17 :
- 出題するときには、答えが一意になる様にした方が良い。
回答する方も戸惑うし、正解が何かも判りづらくなる。
出来るだけ正解は少ない方が良い。 理想的には一つ。
- 18 :
- >>14
>>12 のどこに宣伝の文言が記載されているのですか?
- 19 :
- 0 -> 1
1 -> 11
2 -> 101
3 -> 1111
4 -> 10001
5 -> 110011
6 -> 1010101
7 -> 11111111
8 -> 100000001
9 -> 1100000011
10 -> 10100000101
11 -> 111100001111
12 -> 1000100010001
13 -> 11001100110011
14 -> 101010101010101
15 -> 1111111111111111
この0から15までを隙間なく並べる
隙間なく並べるとは例えばこの0から2までなら
0 -> 1
1 -> 11
2 -> 101
---1
11
--101
11111
このように1同士がぶつからずにそして0がなくなるように並べる
この場合の解答は0番を3つ右にずらして2番を右に二つずらしているので
(0,3)(1,0)(2,2)となる
- 20 :
- 詐欺は酷くないか
要件は満たしてるし、何より解が存在する全ての値に対して正しい解を出力するだろ
sumnum 1についても対応しようとしたらこれが綺麗な解法の1つであることは疑いようもない事実のはず
- 21 :
- >>20 と思ったが俺が間違ってた
相違なる数と言われてないから、sumnum 0に対しても[0,0,0,0,0]が解を満たすわな、すまんかった
- 22 :
- お題と回答
>>5 : >>6 >>10
>>9 : >>15
>>11:
>>19:
- 23 :
- >>18 リンク先に書いてあるじゃん、金払えと。
>>19 さっぱりわからん。 何のための説明をしてるの? どんな問題に関係してるの?
- 24 :
- お題
ペアノの公理、及びペアノに依る加法の定義に従って 128 + 256 を計算せよ。
- 25 :
- >>23
>リンク先に書いてあるじゃん、金払えと
根拠のないデマを流さないでください
>>12 に記載のアンカーの一つ >>10
>>10 に記載のアンカー(リンクの一つ) https://mevius.2ch.sc/test/read.cgi/tech/1434079972/56
https://mevius.2ch.sc/test/read.cgi/tech/1434079972/56 に記載のリンクは https://ideone.com/Nxx41h でこれは ideone へのリンク
リンクをたどれるところのどこにも宣伝は記載していません
>>10 に記載のアンカーの一部 https://mevius.2ch.sc/test/read.cgi/tech/1434079972/
のうち https://mevius.2ch.sc/test/read.cgi/tech/1434079972/1 には、ビットコインの請求が発生する手順が定義されており
その定義を満たさないものについては、特に「※本フローに従わない回答掲示についてはビットコインの請求は発生しないものとします。」と注記していますね
したがって、そもそも「金払え」とは書いてませんし、あるいは「ビットコインを払え」とすら書いていませんね
- 26 :
- >>25 だったら何で金を要求するサイトへのリンクを貼るんだよ。 ビットコインを稼ぎたいための宣伝だろ?
下心がないのなら直接 ideon のリンクを貼れば良いじゃないか。 面倒臭いし。
- 27 :
- >>26
自分の書いたコードを一箇所に固めているだけですよ
これわりと便利で、3年前のコードなんかすっかり忘れてしまっているのを呼び出せるのです、ああ、あのとき N クイーンやったよね、とか
自分のローカルは一つのディレクトリに放り込んでいるだけだから grep でも検索困難…
- 28 :
- 練習問題のコードなんて使い捨てでいいじゃない。 俺も最初の頃は記録してたけど、もうやめた。
要は必要なときに必要なコードが書けなければそれまでなんだから、最初から勉強し直しても同じ。
昔のコードを見ても自分が理解していないんだから同じ。
沢山練習した方が良い。 基本から見直す事でより理解が深くなる。
- 29 :
- >>28
ええ、まったくの使い捨てでここ十年くらいやってますが、特定のスレに ideone/codepad のリンクを貼っていたのが、十年たってみると、当初は意図していなかった効用をもたらしてくれているんですね
- 30 :
- >>23
自己愛性パーソナリティ障害の朝鮮人は相手にすんなよ
- 31 :
- ネトウヨの相手もすんなよ
- 32 :
- >>5 Squeak Smalltalk
'日 本' encodeForHTTP "=> '%E6%97%A5%20%E6%9C%AC' "
'%E6%97%A5%20%E6%9C%AC' unescapePercents "=> '日 本' "
- 33 :
- >>32 但しURLエンコード専用ライブラリだけは使わない事。
- 34 :
- >>9
Python3
https://ideone.com/v9wx2v
- 35 :
- >>9
Haskell
import Data.Char
main = (print.sumnum) 12
sumnum 0 = [0]
sumnum n |n < 0 = error "Please n >= 0 number"
sumnum n = take 5 [x | x <- [0..], n == sum [read [a]| a <- show x]]
- 36 :
- >>5
Java
https://paiza.io/projects/lPsVtvM3yO0cQEnRxg7fpQ
- 37 :
- >>36
いいことを教えてもらいました、Java って uft-16 だけかとおもっていました…
- 38 :
- >>33
組み込みメソッドの使用禁止とかばかげてる
- 39 :
- https://mevius.2ch.sc/test/read.cgi/tech/1549160513/779
https://mevius.2ch.sc/test/read.cgi/tech/1434079972/57
- 40 :
- 出禁 ID:8BTe2vpb
- 41 :
- 正直言ってここに出てくるお題よりAtCoderのお題の方がレベル高いよね
- 42 :
- 11がマジで難しいんだけど、だれか取り組んでる?
- 43 :
- >>41
小ネタの合間にめんどくさいものがポツポツあるかと >>11 とか
- 44 :
- >>5
Kotlin
https://paiza.io/projects/DCRebTKGifCuLe5ysI1JIA
- 45 :
- 漏れなんて、書き捨てのRuby のファイルが、100もある
いつも、Windows10 で、WSL, Ubuntu16.04 から、grep してる
- 46 :
- お、ツッコミ待ちか?
- 47 :
- お題
Excelのカラム名でHELLOからWORLDまで表示する
- 48 :
- >>11 問題1の斜めにしない直行正方形までは出た。
xの範囲= (94, 31) (850, 598) 差 756
yの範囲= (94, 31) (110, 927) 差 896
1辺= 896
直行正方形 (94, 31) (990, 31) (94, 927) (990, 927)
次はこれを傾けていくんだな。これがムズイ。
- 49 :
- >>11 x,y座標は 0〜999までの整数 辺の長さは斜めになった時は整数とは限らない。
- 50 :
- プログラミングのお題スレ Part13
https://mevius.2ch.sc/test/read.cgi/tech/1549160513/920-984
前スレのランク付けの問題は、O(n^2)とかなら簡単なんだが、
ハッシュなどを使って、計算回数を少なくするのに、苦戦してる
入力データ
-6 3 9 5 3 -7
出力・ランク
2 3 5 4 3 1
- 51 :
- ハッシュを使ってんのがperlのじゃねえの
- 52 :
- ランク付けならmap使うと楽、O(NlogN)が想定解
- 53 :
- 前スレの場合、みんなハッシュ(set)かソート使ってたじゃん
- 54 :
- >>53 コンパクトなコーディングはみんなほぼ同じだったね。
python smalltalk java
なんかプログラミング言語を見直しはじめたよ。
複雑にせずに根本を見つめるコーディングが出来る言語というのは素晴らしい。
- 55 :
- え、JAVA?
- 56 :
- >>前スレ988 Perl5
https://mevius.2ch.sc/test/read.cgi/tech/1549160513/988
sub p {
$h = int $n/2;
for ($i=2; $i<=$h; $i++) {
$s[$i] = 1 unless exists $s[$i];
do {$s[$i*$_] = 0 for 2..int $h/$i} if $s[$i];
}
@p = grep{$s[$_]} 2..$h;
}
sub f {
my $i = shift;
my $h = int $i/2;
for $j (grep{$_ <= $h} @p) {
return ($j, f($i/$j)) if 0 == $i % $j;
}
$i
}
for $n (qw{28 2002 216653}) {
p;
my %f; $f{$_}++ for f($n);
@f = map{$_ . (1 < $f{$_} and "^$f{$_}")} sort{$a<=>$b} keys %f;
$" = '+';
print "$n => @f\n";
}
実行
~ $ perl 13_988.pl
28 => 2^2+7
2002 => 2+7+11+13
216653 => 216653
- 57 :
- setにぶちこんで重複削除、リストにしてソートしてマップの値の方にインデックス入れて最後にそのマップ使って出して完成
- 58 :
- ゆっくり書いてたら間にたくさんの書き込みが入った。
俺のことは忘れてくれ。
- 59 :
- >>56 スマソ、ケアレスミスった、繋ぐ演算子は+ => *だた…orz
sub p {
$h = int $n/2;
for ($i=2; $i<=$h; $i++) {
$s[$i] = 1 unless exists $s[$i];
do {$s[$i*$_] = 0 for 2..int $h/$i} if $s[$i];
}
@p = grep{$s[$_]} 2..$h;
}
sub f {
my $i = shift;
my $h = int $i/2;
for $j (grep{$_ <= $h} @p) {
return ($j,f($i/$j)) if 0 == $i % $j;
}
$i
}
for $n (qw{28 2002 216653}) {
p;
my %f; $f{$_}++ for f($n);
@f = map{$_ . (1 < $f{$_} and "^$f{$_}")} sort{$a<=>$b} keys %f;
$" = '*';
print "$n => @f\n";
}
実行
~ $ perl 13_988.pl
28 => 2^2*7
2002 => 2*7*11*13
216653 => 216653
- 60 :
- test
- 61 :
- >>56
https://mevius.2ch.sc/test/read.cgi/tech/1434079972/58
- 62 :
- お題と回答
>>5 : 6 10 32 36 44
>>9 : 15 34 35
>>11 : 48
>>19 :
>>50, https://mevius.2ch.sc/test/read.cgi/tech/1549160513/920 :
https://mevius.2ch.sc/test/read.cgi/tech/1549160513/988 : 59 61
- 63 :
- あなたが解けない C/C++/Java/C#/JavaScript の問題を有償で片付けるスレッドです
- 64 :
- 有償で片付けるスレッドに貼り付けるのはよろしくないね
有償で片付けてほしくて出題してるわけじゃないでしょ
問題の窃盗だよ
- 65 :
- >>59
Perlは配列に対するexistsやdefinedは呼び出せるが振る舞いは不明確で「強く」非推奨となっているので
この場合では問題なくとも@pはリストではなく代わりにハッシュ%pを使って実装するべきだった
- 66 :
- >>65
ハッシュにしたほうが良いのは@pじゃなくて@sの方だったわ
- 67 :
- >>64
バカチョンには何を言っても無駄だと思うよ
聞く耳持たない分からず屋の馬鹿だからバカチョンなんだから
- 68 :
- >>64
>>27に理由が書かれていたが、一ヶ所に纏めておくと便利だなんてのは個人の都合であって、他の人にはわざわざ間接参照を強いることになるのだから、ほんとに身勝手な奴だと思う。
>>27
纏めておくのは他所で勝手にやれ、このスレにはコードだけを貼れよ。お前の手間なぞ知ったことではない。
- 69 :
- ネトウヨもコテハンもうぜえわ
- 70 :
- >>62 折角まとめるんなら、回答の方も >> でリンクを貼って欲しいな。
- 71 :
- >>70
それは絶対にやらないんじゃね
奴は自分のことしか考えてないから
だから自己愛
永遠に人から煙たがられる存在
- 72 :
- >>11 は、多角形の中のドットの内外判定問題と言うのが確立されてるみたいね。
色んな方法があるみたいだが、簡単なのは、
Crossing Number Algorithm
らしい、ググってみると結構コンパクトなコード。
他も見てみたが、問題は境界線上にある点は多角形外と判定する事。
だから、そのままのロジックに手を入れないとした場合、使う側としてどう解決したら良いんだろう。
直行正方形を1ドットずつ大きくしてから回転させる?
それとも、多角形の中の多角形問題の方が適してるのかな?
この問題は結構勉強になる。 問題のイメージを掴むために、図形表示までやり始めたよ。 表示するとより楽しくなる。
- 73 :
- >>71 そこまで悪い人間では無さそうだけどな、おだてれば猿も木に登るタイプだとみた。
高い木に登ってもらおう。
- 74 :
- ググラないで考えようとしていたけど、
ヒントを目にしてしまった気分
いやべつにいいけどさ
- 75 :
- Q. クソ問題とは何ですか?
A. 問題の解釈を巡って議論や煽り合いが10レス以上続く、バカが投稿した不備のある問題のことです。
- 76 :
- >>47 Ruby
("HELLO".."WORLD").each{|v| puts v}
- 77 :
- >>62
前スレ920 >>4
- 78 :
- >>72
https://dotup.org/uploda/dotup.org1853571.cpp.html
とりあえず図形表示。
一応内部の点は除去して、凸包を表示するような感じにしてる。
左クリックで頂点追加、右クリックで全削除、中クリックでリセット
操作しながらいろいろ検討してるけど、さっぱり思いつかない。
- 79 :
- >>9 Ruby
def sumnum(n)
(0..4).map{|i| ("1"*n +"0"*i).to_i}
end
- 80 :
- >>78
Windows じゃないと動かないようだけど見やすいようにideonに張ってみた。
https://ideone.com/gJVREH
凸包と言うんだね。
2次元の凸包を求めるアルゴリズムと応用について
https://matsu7874.hatenablog.com/entry/2018/12/17/025713
凸包(convex hull)とは,与えられた点をすべて包含する最小の凸多角形(凸多面体)のこと.
--------
凸包が求められても難しいね。 凸包内の点を削除して計算時間を削減できる効果はあるかもしれないけど。
- 81 :
- 凸包が求められれば、頂点の並びも整列するので
形状を分割して余弦定理とかから導けないかなって思ったんだよね
- 82 :
- >>47
画面の幅が足りなくて表示できません。
- 83 :
- ちなみに、最小を求めるだけならある角度から見た凸包の一次元への投影と、直交する角度からの一次元への投影を180度回しながら調べれば出せると思うけど、分割の粒度の問題で、本当に最小が取れる保証はないね
- 84 :
- >>76
試しに Perl でも 文字列 .. 文字列 をやってみたらできたよ。
こんなことできたとは。知らないまま20年以上使ってたよ。w
- 85 :
- >前スレの920
頭を使った。Ruby で、
str = "-6 3 9 5 3 -7"
original_ary = str.split.map!( &:to_i ) # 各要素は整数型
hash = original_ary.each_with_object( { } ) { | num, h | h[ num ] = true }
sorted_ary = hash.sort # キーでソートする
#=> [[-7, true], [-6, true], [3, true], [5, true], [9, true]]
# Enumerator#with_index(offset = 0)
sorted_hash = sorted_ary.each.with_index( 1 ) { | elem, idx | elem[ 1 ] = idx }.to_h
# p sorted_ary
#=> [[-7, 1], [-6, 2], [3, 3], [5, 4], [9, 5]]
# p sorted_hash
#=> {-7=>1, -6=>2, 3=>3, 5=>4, 9=>5}
results = original_ary.map{ | num | sorted_hash[ num ] }
puts results.join( " " ) #=> 2 3 5 4 3 1
- 86 :
- >>70-71
アンカーが多すぎると投稿できないのです、ただそれだけです
- 87 :
- >>73
>おだてれば猿も木に登るタイプだとみた。
痛いところを突きますね…
- 88 :
- >2 3 5 4 3 1
これが、
2 3 6 5 3 1
みたいに、4 が無くなる・飛ばされるランキングだと、もっとややこしい!w
- 89 :
- 前スレの920 Ruby
def f(a)
b={}
a .dup.sort.each{|v|b[v]=b.size+1 if not b.key v}
a.map{|v|b[v]}
end
p f([-6,3,9,5,3,-7])
[2, 3, 5, 4, 3, 1]
- 90 :
- >>34
>>79
一休さんみたいなトンチの効いた回答で、それはそれで楽しめました。
改めて問題を書き直します。
各桁を足し合わせたら引数で与えられた数になる数の集合全体から小さい順に(可能なら=0対策)5個返す関数を作れ。
例:
sumnum 12
> [39,48,57,66,75] <- 3 + 9 = 12, 4 + 8 = 12, 5 + 7 = 12, 6 + 6 = 12, 7 + 5 = 12
- 91 :
- >>34は>>15の間違い
- 92 :
- 苗字で漢字の「口」を「くち」ではなく「ぐち」と読むのは
井口、矢口、田口の3つだけ
これマメな
- 93 :
- >>92
川口
ハイ論破
- 94 :
- ただの荒らし 、蒸し蒸し by 山口
- 95 :
- >>90 OCaml
https://ideone.com/kvm79F
- 96 :
- >>90
Haskell
import Data.Char要らんかった。
take 5も問題と違うけど外に追い出した方が応用効きそう。
main = (print.take 5.sumnum) 12
sumnum 0 = [0]
sumnum n |n < 0 = error "Please n >= 0 number"
sumnum n = [x | x <- [1..], n == sum [read [a]| a <- show x]]
>>95
OCamlで無限リスト処理どうすんだろと疑問だったので、後で精読させて頂きますm(_ _)m
- 97 :
- >>92
谷口
関口
合口・相口・藍口・青口・赤口・秋口・明口… https://name.sijisuru.com/Fname/search?option=1&moji=%E5%8F%A3&pages=0&kanjilen=0&kanalen=0&romalen=0
- 98 :
- >>97 もう相手にすんな。お題にするなら、
その9つの名前の読み仮名のあいうえお順に並べよ。
谷口・関口・合口・相口・藍口・青口・赤口・秋口・明口
読み仮名を持ってくるのが難しそうだけどな。
- 99 :
- aを要素の型がIntである長さNの配列、k、cを型がIntである変数とする。
{P}a[a[k]]=c;{a[a[k]]!=c}
Hoare tripleが成立するためのなるべく弱いPを示せ
- 100 :
- >>99
教えてください
P は何ですか?
{ } とは何を表しているのですか?
>{P}a[a[k]]=c;{a[a[k]]!=c}
- 101 :
- >>100
https://i.imgur.com/CRuu9do.jpg
https://i.imgur.com/DKfpAvB.jpg
- 102 :
- sumnum、引数に10000とか与えたら答え返ってこなさそう
引数に1億とかは文字列長が千万とかになるから無理でも仕方ないけど、1万位は対応したいね
- 103 :
- >>102
下位桁に9が並ぶだけじゃね?
- 104 :
- >>103 知らない言語ばかりでよく読めてないんだが、今までの提出って1から順に試してね?
それだと当然結果が返ってこないが
違ったらすまん
- 105 :
- QZは相変わらず頭が悪い癖にプライドだけは高いな
- 106 :
- >>92は「必ずレスがもらえるレス」として有名な文らしいな
案の定わんさかレスの付いてること
- 107 :
- >>99 何語?
- 108 :
- >>11 閑話休題 凸包
https://i.imgur.com/rMEhakE.jpg
- 109 :
- >>108 この凸包図を眺めてると、正解の正方形は 左辺の一番長い線を1辺とした正方形になりそうだが、それをどうやって求めるのか。
How to find the minimum-area-rectangle (MAR) fitted on the given points?
https://gis.stackexchange.com/questions/22895/finding-minimum-area-rectangle-for-given-points
最初に書いた人は、凸包を求めて重心を中心として1度ずつ回転させるやり方を考えたらしいが、下の方で良い解法のコメントが付いてた。
https://i.stack.imgur.com/ExZl3.png
少しずつ回転させるのではなくて、長方形の1辺は必ず凸包の辺のどれかと重なってるはずだから、凸包の辺の角度だけをとって試せば良いとのこと。
これなら重心を求める必要もないし、時間はかからない。
長方形が求まったら、座標系の中に入る正方形にすれば良いがはみ出してたら、参考解かな。
このアルゴリズムは、
The algorithm you are looking for is known in polygon generalisation as "smallest surrounding rectangle".
凸包最小長方形の解法とでも言えば良いのかな。
- 110 :
- >>109
正方形を求める場合で凸包がひし形の場合、その方法はうまくいかないきがす?
- 111 :
- 今回のアルゴリズムは、最小の正方形を求める方法だけじゃなくて、グラフの境界との交差判定もあるから
最小の求め方だけではなく、2番め以降についても正しく判定できないといけない上に、回答が一つに定まらない可能性もあるんだよね
- 112 :
- 与えられた点を全て含む凸包全体からなる集合の濃度は明らかに連続体濃度なんだから2番目なんて存在しないぞ
- 113 :
- あ、凸包じゃなくて凸多角形な
- 114 :
- >>112
書いててあれ?と思てったけど、たしかにそうだ。
俺では解けなさそうだ。
- 115 :
- >>111 1辺から正方形を作る場合は、その正方形が全ての凸包の頂点を全て含むような大きさでなければならない。
この場合6辺あるから、そのような6つの正方形を作ってその中の最小のものを求めることになる。
面倒なのはそれが座標系に入らないといけないから場合によっては辺に平行移動しないといけないかも知れない。
すると、>>112 の言うように正方形の位置は変わるかもしれないけど、辺の長さが合ってれば正解だろうね。
(この場合は座標系に入るだろうからとりあえずは平行移動は考えないでも良いかも)
- 116 :
- >>110 どんな凸包体でも求まるよ。 1辺の長さが凸包体の辺の長さと一致させるわけじゃないよ。
全ての頂点を含む直方体を作る。 この求め方も工夫が必要そう。
1辺を伸ばした直線上に全ての頂点から垂線を引いて、一番外の距離を直方体の1辺とするんだろうな。
同じように他辺も求める。
- 117 :
- >>116
雑な書き殴りですまん
https://i.imgur.com/v8rWTSf.png
さらにややこしいのは、凸包の頂点が正方形の辺上に位置して、
頂点に存在しないことのほうが多いのも難くする要因の一つ
- 118 :
- >>117 あ、そうか。
- 119 :
- >>11 色々見たけど、画像認識の境界を探す為にある程度人気のある話題みたいだが、完全を求めるのではなく、だいたいで良いからスピードの速いのが良いとしてるみたいだね。 境界自体があやふやなものだし。
厳密にやるとしても、長方形と正方形ではかなり条件が違う。
全ての点が正方形に入るのなら、一つの候補は凸包の対角上の点が一番離れているところを正方形の対角とした正方形が一つの候補ではないだろうか。
直交正方形が最大だからそこまでを調べれば良いけど、それだけをしらみつぶしに調べてどれだけ時間がかかるかだな。
それをはみ出る点がある場合にどうゴニョゴニョするかだけど、条件が絞れればスピードは速くなる。
一般的にはポイント数は膨大な数だから、条件を絞り込む方法が重要になりそう。
しかし、こんな例題はどこにでもありそうで殆どサンプルがないのは時間がかかりすぎて簡単に試せないのかな、今回はポイント数が少ないからそれほどではないとは思うけど。
- 120 :
- >>119 文章が変な順になっててごめん。
全ての点が正方形に入るのなら、一つの候補は凸包の対角上の点が一番離れているところを正方形の対角とした正方形が一つの候補ではないだろうか。
それをはみ出る点がある場合にどうゴニョゴニョするかだけど、条件が絞れればスピードは速くなる。
直交正方形が最大だからそこまでを調べれば良いけど、それだけをしらみつぶしに調べてどれだけ時間がかかるかだな。
- 121 :
- 計算両を優先するなら、座標軸を基準にとって大雑把に取るべきじゃないのかな
これなら、ゲームのコリジョン検出で使われる方法そのままだし
- 122 :
- 点の数は関係なくね?
任意の3点を選んでその内部にある点は無いものとして考えても同じなんだから
- 123 :
- いや、関係あるか
頂点のめちゃくちゃ多い凸多角形になったら計算量明らかに増えるもんな
- 124 :
- >>11 なんかかなりの難問に思えてきたな。 解法への足がかりが見えない。 凸包までは比較的簡単にたどり着いたけどそれからが闇の中。
凸包の重心が何か使えるだろうか?
最小包含円 という言葉もあるようだが、少なくとも 正方形の辺はこの円の直径以下。
- 125 :
- >>124 取り敢えずこの問題を 『凸包正方形 』
とでも呼びますか。
- 126 :
- 三角形に分解してみる?
- 127 :
- >>112
連続体濃度でかつ二番目に小さな値のある集合
{0, 1} ∪ (2, ∞)
- 128 :
- >>11
ポイントが(136,577), (110,927)の2つだけならどうなる?
- 129 :
- >>128
それ対角線の正方形しかないやろ
- 130 :
- 以下はオレなりに考えた仮説
1)2点で正方形の内側に接するのは何らかの平べったい形、対角にて頂点が接するので45°
2)3点で接するのは、細長い三角形あるいはそれに準じた形、角度の計算は…?不明
または凸包の一辺が正方形の辺に接する形
3)4点で接するのは、細長い三角形あるいはそれに準じた形、角度の計算は…?不明
または凸包の一辺が正方形の辺に接する形
4)5点以上で接する場合は、凸包の一辺が正方形の辺に接する
「対角にて頂点が接する形の角度は45°」
「凸包の一辺が正方形の辺に接する形は凸包の辺の角度」
これらは角度が分かるので回転変化・逆変換を使って
外側の最小の斜め正方形の候補を探索することは可能だが、
角度が良く分からない形の解法が、まだ見出せていない
- 131 :
- 凸包の一辺が正方形の辺に接するおよび二点が対角に接する場合に限った解法
なら難しくないんだがな…
- 132 :
- >>129
それは正方形が(0,0)-(999,999)からはみでてまうな
- 133 :
- >>11 外側の正方形 Perl5、但し>>130>>131の「凸包の一辺が正方形の辺に接する」または「細い菱形のような形が
正方形の対角2点で接する」場合について求てみた。凸包を求める処理は略し、二点間の辺を総当りで計算している。
use List::Util qw{min max pairkeys pairvalues};
@s=qw{136 577 110 927 472 199 157 808 388 598 94 31 388 157 325 409 787 897 850 598};
@X = pairkeys @s; @Y = pairvalues @s;
sub sp {$_[0]*$_[2] + $_[1]*$_[3]}
sub rt {
@e = (cos $th, -sin $th); @f = (sin $th, cos $th);
my @x = map{sp @e, $X[$_], $Y[$_]} 0..$#X;
my @y = map{sp @f, $X[$_], $Y[$_]} 0..$#Y;
@x = (min(@x), max(@x)); @y = (min(@y), max(@y));
$h = (max $x[1] - $x[0], $y[1] - $y[0]) / 2;
$cx = ($x[1] + $x[0]) / 2; $cy = ($y[1] + $y[0]) / 2;
@x = ($cx - $h, $cx + $h); @y = ($cy - $h, $cy + $h);
($e[1], $f[0]) = (-$e[1], -$f[0]);
@x = map{sp @e, $x[$_], $y[$_]} 0..1;
@y = map{sp @f, $x[$_], $y[$_]} 0..1;
@x = (min(@x), max(@x)); @y = (min(@y), max(@y));
(\@x, \@y, 2*$h) }
for $i (0..@X-2) { for $j ($i+1..$#X) {
($dx, $dy) = ($X[$j] - $X[$i], $Y[$j] - $Y[$i]);
($dx, $dy) = (-$dx, -$dy) if $dx < 0;
$l = sqrt($dx*$dx + $dy*$dy);
$th = $dx > abs($dy) ? -atan2($dy, $dx) : atan2($dx, $dy);
($X, $Y, $w) = &rt;
push @t, +{i,$i,j,$j,dx,$dx,dy,$dy,l,$l,th,$th,X,$X,Y,$Y,w,$w};
$th += 3.14159265358979/4; ($X, $Y, $w) = &rt;
push @t, +{i,$i,j,$j,dx,$dx,dy,$dy,l,$l,th,$th,X,$X,Y,$Y,w,$w};
} }
@t = sort{$a->{w}<=>$b->{w}} grep{0<=$_->{X}[0]and$_->{X}[1]<=999 and 0<=$_->{Y}[0]and$_->{Y}[1]<=999} @t;
do {@x = @{$t[$_]->{X}}; @y = @{$t[$_]->{Y}};
printf"%d: (%7.3f, %7.3f)-(%7.3f, %7.3f): w=%3.3f\n",$_+1,$x[0],$y[0],$x[1],$y[1],$t[$_]->{w}} for 0..5;
- 134 :
- >>133 の実行例
~ $ perl 14_11.pl
1: ( 48.607, 27.043)-(863.062, 983.177): w=891.576
2: ( 45.920, 20.484)-(869.713, 849.356): w=892.353
3: ( 32.627, 29.170)-(901.066, 949.457): w=895.142
4: ( 24.000, 31.000)-(920.000, 927.000): w=896.000
5: ( 24.000, 31.000)-(920.000, 927.000): w=896.000
6: ( 14.845, 32.823)-(931.567, 907.397): w=896.130
検算してないので、もしバグっていたらゴメンチャイ、(ゝω・) テヘペロ
- 135 :
- >>133 スマソ、「正方形の4点の座標を示せ」と書かれていたので、出力処理を少し修正
use List::Util qw{min max pairkeys pairvalues};
@s=qw{136 577 110 927 472 199 157 808 388 598 94 31 388 157 325 409 787 897 850 598};
@X = pairkeys @s; @Y = pairvalues @s;
sub sp {$_[0]*$_[2] + $_[1]*$_[3]}
sub rt {
@e = (cos $th, -sin $th); @f = (sin $th, cos $th);
my @x = map{sp @e, $X[$_], $Y[$_]} 0..$#X;
my @y = map{sp @f, $X[$_], $Y[$_]} 0..$#Y;
@x = (min(@x), max(@x)); @y = (min(@y), max(@y));
$h = (max $x[1] - $x[0], $y[1] - $y[0]) / 2;
$cx = ($x[1] + $x[0]) / 2; $cy = ($y[1] + $y[0]) / 2;
@x = ($cx - $h, $cx + $h); @y = ($cy - $h, $cy + $h);
($e[1], $f[0]) = (-$e[1], -$f[0]);
@x = map{sp @e, $x[$_], $y[$_]} 0..1;
@y = map{sp @f, $x[$_], $y[$_]} 0..1;
@x = (min(@x), max(@x)); @y = (min(@y), max(@y));
(\@x, \@y, 2*$h) }
for $i (0..@X-2) { for $j ($i+1..$#X) {
($dx, $dy) = ($X[$j] - $X[$i], $Y[$j] - $Y[$i]);
($dx, $dy) = (-$dx, -$dy) if $dx < 0;
$l = sqrt($dx*$dx + $dy*$dy);
$th = $dx > abs($dy) ? -atan2($dy, $dx) : atan2($dx, $dy);
($X, $Y, $w) = &rt;
push @t, +{i,$i,j,$j,dx,$dx,dy,$dy,l,$l,th,$th,X,$X,Y,$Y,w,$w};
$th += 3.14159265358979/4; ($X, $Y, $w) = &rt;
push @t, +{i,$i,j,$j,dx,$dx,dy,$dy,l,$l,th,$th,X,$X,Y,$Y,w,$w};
} }
@t = sort{$a->{w}<=>$b->{w}} grep{0<=$_->{X}[0]and$_->{X}[1]<=999 and 0<=$_->{Y}[0]and$_->{Y}[1]<=999} @t;
do {@x = @{$t[$_]->{X}}; @y = @{$t[$_]->{Y}};
printf"%d: (%6.3f, %6.3f), (%7.3f, %6.3f), (%6.3f, %7.3f), (%7.3f, %7.3f): w=%3.3f\n",
$_+1,$x[0],$y[0],$x[1],$y[0],$x[0],$y[1],$x[1],$y[1],$t[$_]->{w}} for 0..5;
- 136 :
- >>135 実行結果
~ $ perl 14_11.pl
1: (48.607, 27.043), (863.062, 27.043), (48.607, 983.177), (863.062, 983.177): w=891.576
2: (45.920, 20.484), (869.713, 20.484), (45.920, 849.356), (869.713, 849.356): w=892.353
3: (32.627, 29.170), (901.066, 29.170), (32.627, 949.457), (901.066, 949.457): w=895.142
4: (24.000, 31.000), (920.000, 31.000), (24.000, 927.000), (920.000, 927.000): w=896.000
5: (24.000, 31.000), (920.000, 31.000), (24.000, 927.000), (920.000, 927.000): w=896.000
6: (14.845, 32.823), (931.567, 32.823), (14.845, 907.397), (931.567, 907.397): w=896.130
検算してないので、もしバグっていたらゴメンチャイ、(ゝω・) テヘペロ
- 137 :
- >>136
なんか変、バグってるスマソ、直すことが出来たら書き込みます
- 138 :
- >>11 外側の正方形 Perl5 凸包の辺が正方形の辺に接するまたは対角二点で接する場合、>>135の露骨なバグ一個修正
use List::Util qw{min max pairkeys pairvalues};
@s=qw{136 577 110 927 472 199 157 808 388 598 94 31 388 157 325 409 787 897 850 598};
@X = pairkeys @s; @Y = pairvalues @s;
sub sp {$_[0]*$_[2] + $_[1]*$_[3]}
sub rt {
@e = (cos $th, -sin $th); @f = (sin $th, cos $th);
my @x = map{sp @e, $X[$_], $Y[$_]} 0..$#X;
my @y = map{sp @f, $X[$_], $Y[$_]} 0..$#Y;
@x = (min(@x), max(@x)); @y = (min(@y), max(@y));
$h = (max $x[1] - $x[0], $y[1] - $y[0]) / 2;
$cx = ($x[1] + $x[0]) / 2; $cy = ($y[1] + $y[0]) / 2;
@x = ($cx - $h, $cx + $h, $cx - $h, $cx + $h);
@y = ($cy - $h, $cy - $h, $cy + $h, $cy + $h);
($e[1], $f[0]) = (-$e[1], -$f[0]);
@x = map{sp @e, $x[$_], $y[$_]} 0..3;
@y = map{sp @f, $x[$_], $y[$_]} 0..3;
(\@x, \@y, 2*$h) }
for $i (0..@X-2) { for $j ($i+1..$#X) {
($dx, $dy) = ($X[$j] - $X[$i], $Y[$j] - $Y[$i]);
($dx, $dy) = (-$dx, -$dy) if $dx < 0;
$l = sqrt($dx*$dx + $dy*$dy);
$th = $dx > abs($dy) ? -atan2($dy, $dx) : atan2($dx, $dy);
($X, $Y, $w) = &rt;
push @t, +{i,$i,j,$j,dx,$dx,dy,$dy,l,$l,th,$th,X,$X,Y,$Y,w,$w};
$th += 3.14159265358979/4; ($X, $Y, $w) = &rt;
push @t, +{i,$i,j,$j,dx,$dx,dy,$dy,l,$l,th,$th,X,$X,Y,$Y,w,$w};
} }
@t = sort{$$a{w}<=>$$b{w}} grep{0<=min@{$_->{X}}and max@{$_->{X}}<=999 and 0<=min@{$_->{Y}}and max@{$_->{Y}}<=999} @t;
do {@x = @{$t[$_]{X}}; @y = @{$t[$_]{Y}};
printf"%d: (%7.3f,%7.3f), (%7.3f,%7.3f), (%7.3f,%7.3f), (%7.3f,%7.3f): w=%7.3f, th=%7.3f°\n",
$_+1,$x[0],$y[0],$x[1],$y[1],$x[2],$y[2],$x[3],$y[3],$t[$_]{w},$t[$_]{th}*180/3.14159265358979} for 0..4;
- 139 :
- >>138 実行例
~ $ perl 14_11.pl
1: ( 32.627, 29.170), (927.382, 55.475), ( 6.310,923.152), (901.066,949.457): w=895.142, th= -1.685°
2: (920.000,927.000), ( 24.000,927.000), (920.000, 31.000), ( 24.000, 31.000): w=896.000, th=180.000°
3: ( 24.000, 31.000), (920.000, 31.000), ( 24.000,927.000), (920.000,927.000): w=896.000, th= 0.000°
4: ( 14.845, 32.823), (910.733, 11.994), ( 35.680,928.226), (931.567,907.397): w=896.130, th= 1.332°
5: ( 18.819, 32.332), (914.819, 16.335), ( 34.819,928.046), (930.819,912.049): w=896.143, th= 1.023°
ちゃんと検算してないので、もしまだバグがいたらゴメンチャイ、(ゝω・) テヘペロ
検算方法考えた方がいいのかも。ちなみにwは正方形の幅、thは回転各[deg]
>>11 の内側の正方形についてはまだ考えていない。
- 140 :
- >>11 おもろいな、初級問題だと文法の練習としてそれなりに勉強になる。
こう言うのはそれを超えていろんなパッケージ/ライブラリを駆使することになるから一皮剥けて勉強になる。
解けるか解けないか判らないけど楽しんでる。
勿論こう言うのは、言語の問題ではなく、ロジックの問題だと解っているんだが、ヒントとなる数字を出せるのは言語の力にもよるからそれはそれなりに面白い。
図形は直感的に推論が正しいかどうか判るから面白い。
https://i.imgur.com/cCazfFe.jpg
凸包の重心は使えなさそうだな。
>>139 なんとなく変に感じるんだが。
https://i.imgur.com/3ioZWjZ.jpg
この場合の正方形の一辺は、左側の凸包の線そのものになると思うんだけど。
つまり、左下端が、( 94,31 )、上端が(110,927) にならないかな?
- 141 :
- >>140 ごめん、同じ画像を二つ上げてしまった。
- 142 :
- >>11
まずは「斜めは考えない」 https://ideone.com/0ho1Fr
>>48
解が一致しました
- 143 :
- お題と回答
>>5 : 6 10 32 36 44
>>9 : 15 34 35 79
>>11 : 48 (78) 138-139
>>19 :
>>50, https://mevius.2ch.sc/test/read.cgi/tech/1549160513/920 : 4 85 89
https://mevius.2ch.sc/test/read.cgi/tech/1549160513/988 : 59 61
>>90 : 95 96
>>99 :
- 144 :
- >>140 図をありがとう
scriptを(94, 31) - (110, 927)の辺に傾けてこの角度における最小の正方形だけを計算するようなおして
計算したら
5: ( 18.819, 32.332), (914.819, 16.335), ( 34.819,928.046), (930.819,912.049): w=896.143, th= 1.023°
になりました。
- 145 :
- >>144 それはおかしい。 直行正方形の辺の長さが896だから、896以下にならなければならない。
- 146 :
- >>11 1)のみ やってみた。
図 https://codepen.io/dokokade/full/WBzgrZ
※ 途中で完全にJavaScriptのお遊びになってしまった。
(計算は別プログラムで、そのログを図にした)
一辺 = 890.70993168302
四点
x: [ 0.8027676391, 82.9114960624, 969.828819782, 887.7200913596]
y: [916.8907759982, 29.9734522778, 112.082180701, 998.9995044215]
- 147 :
- >>146 多分正解だね。 おめでとう。
- 148 :
- >>146 あ、でも 右上の頂点は y = 998.9995044215 となってるけど、
正確には y=999 とぶつからなければいけないよね。 少し誤差が大きすぎるような気がするけどこんなもの?
- 149 :
- >>140
この図の(388,157)は(388,598)の誤記?
- 150 :
- >>149 間違っていないでしょ。
両方あるよ。
xys [[136 577]
[110 927]
[472 199]
[157 808]
[388 598] ***
[ 94 31]
[388 157] ***
[325 409]
[787 897]
[850 598]]
https://i.imgur.com/9emHzzD.jpg
- 151 :
- >>145 凸包の一辺(94,31)-(110,927)のみに着目し、この辺が垂直となる様に座標を1.023°回転して
から点郡を囲む矩形領域を求め、その長方形を正方形になるように短い辺を伸ばす処理は省いて
長方形のまま元の座標系に逆変換し4頂点座標を見たところ、
use List::Util qw{min max};
use Math::Trig;
@X = qw{94 110}; # 787 850 472 388};
@Y = qw{31 927}; # 897 598 199 598};
sub sp {$_[0]*$_[2] + $_[1]*$_[3]}
for $i (0..@X-2) { for $j ($i+1..$#X) {
($dx, $dy) = ($X[$j] - $X[$i], $Y[$j] - $Y[$i]);
($dx, $dy) = (-$dx, -$dy) if $dx < 0;
$th = $dx > abs($dy) ? -atan2($dy, $dx) : atan2($dx, $dy);
@e = (cos $th, -sin $th); @f = (sin $th, cos $th);
my @x = map{sp @e, $X[$_], $Y[$_]} 0..$#X;
my @y = map{sp @f, $X[$_], $Y[$_]} 0..$#Y;
@x = (min(@x), max @x); @y = (min(@y), max @y);
$w = max($x[1] - $x[0], $y[1] - $y[0]);
($e[1], $f[0]) = (-$e[1], -$f[0]);
@x = map{sp @e, $x[$_], $y[$_]} 0,1,0,1;
@y = map{sp @f, $x[$_], $y[$_]} 0,0,1,1;
#next if min@x<0 or 999<max@x or min@y<0 or 999<max@y;
push @t, +{i,$i,j,$j,dx,$dx,dy,$dy,th,$th,X,[@x],Y,[@y],w,$w} } }
@t = sort{$$a{w}<=>$$b{w}} @t;
do {@x = @{$_->{X}}; @y = @{$_->{Y}};
printf"%d: (%7.3f,%7.3f), (%7.3f,%7.3f), (%7.3f,%7.3f), (%7.3f,%7.3f): w=%7.3f, th=%7.3f°\n",
++$k,$x[0],$y[0],$x[1],$y[1],$x[2],$y[2],$x[3],$y[3],$$_{w},rad2deg $$_{th}} for @t;
~ $ perl 14_11_2.pl
1: ( 94.000, 30.990), (110.000, 30.990), ( 94.000,926.704), (110.000,926.704): w=896.143, th= 1.023°
となったので、今のところ計算は合っていると思う。おかしく感じたのは長方形を正方形になるように短い辺を伸ばした座標の
シフトによるものだと思う。しかし、この長方形⇒正方形補正が曲者で、より小さい正方形であるにもかかわらず長方形の
短辺を両側に均等に伸ばすと頂点が0〜999の範囲をこえてしまうものがあるらしく、不均等に伸ばすようにすれば
より小さい正方形を見出せるかもしれない。
- 152 :
- >>150
そうだね、ゴメン
- 153 :
- >>150 外接円を描いてみたけど、利用方法を見つけられなかった。
むしろ [ 94 31] [787 897] の対角を直径とする最小包含円 からかな?
- 154 :
- 以下は試作実験programと結果
@凸包の辺の角度にのみ傾ける(それ以外の角度は略) A長方形⇒正方形補正は略 B頂点座標が0〜999の範囲外も出力
use List::Util qw{min max}; use Math::Trig;
@X = qw{94 110 787 850 472 388}; @Y = qw{31 927 897 598 199 157};
sub sp {$_[0]*$_[2] + $_[1]*$_[3]}
for $i (0..@X-2) { for $j ($i+1..$#X) {
($dx, $dy) = ($X[$j] - $X[$i], $Y[$j] - $Y[$i]);
($dx, $dy) = (-$dx, -$dy) if $dx < 0;
$th = $dx > abs($dy) ? -atan2($dy, $dx) : atan2($dx, $dy);
@e = (cos $th, -sin $th); @f = (sin $th, cos $th);
my @x = map{sp @e, $X[$_], $Y[$_]} 0..$#X;
my @y = map{sp @f, $X[$_], $Y[$_]} 0..$#Y;
@x = (min(@x), max @x); @y = (min(@y), max @y);
$w = max($x[1] - $x[0], $y[1] - $y[0]);
($e[1], $f[0]) = (-$e[1], -$f[0]);
@x = map{sp @e, $x[$_], $y[$_]} 0,1,0,1;
@y = map{sp @f, $x[$_], $y[$_]} 0,0,1,1;
#next if min@x<0 or 999<max@x or min@y<0 or 999<max@y;
push @t, +{i,$i,j,$j,dx,$dx,dy,$dy,th,$th,X,[@x],Y,[@y],w,$w} } }
@t = sort{$$a{w}<=>$$b{w}} @t;
do {@x = @{$_->{X}}; @y = @{$_->{Y}};
printf"%d: (%7.3f,%7.3f), (%7.3f,%7.3f), (%7.3f,%7.3f), (%7.3f,%7.3f): w=%7.3f, th=%7.3f°\n",
++$k,$x[0],$y[0],$x[1],$y[1],$x[2],$y[2],$x[3],$y[3],$$_{w},rad2deg $$_{th}} for @t[0..4];
1: (752.170,710.324), ( 94.000,710.324), (752.170, -8.662), ( 94.000, -8.662): w=873.451, th=168.102°
2: ( 70.342, 31.983), (863.100, 31.983), ( 70.342,891.839), (863.100,891.839): w=895.830, th= 2.537°
3: ( 94.000, 30.990), (855.637, 30.990), ( 94.000,913.391), (855.637,913.391): w=896.143, th= 1.023°
4: (699.348,547.478), ( 94.000,547.478), (699.348,-34.520), ( 94.000,-34.520): w=945.899, th=160.148°
5: ( 94.000, 29.184), (671.086, 29.184), ( 94.000,1007.681), (671.086,1007.681): w=978.102, th=-23.199°
真の極小解は中途半端な角度にあるのか…
- 155 :
- >>148
146は、ヒュースリックス解だから、まだ小さくなると思う。
でも、あと1くらいだと思う
( これが厳密解を求めるやる気が、無くなる原因)
少しずるして、この問題に過剰最適化させて、
890.7003209442369にした。
図 https://codepen.io/dokokade/full/WBzgrZ
- 156 :
- >>154
これ、凸包の辺の角度にのみ傾けてない、凸包の全頂点の組み合わせエッジの角度に傾けている。
まいいや、大差ない
- 157 :
- >>125 >>11 の問題1 に名前を与えるならさしずめ、最小包含正方形 かな。
- 158 :
- >>155 無理を言ってごめん、答えの誤差をなくすために、最終座標は整数の xy 座標に出来るかな。 中心からの距離を切り上げて整数にする感じになると思うけど。
- 159 :
- こういう問題って、極小・最小解にいたる連続的な解空間形成してなけりゃ収束計算もできないし
かといって解析的あるいはロジカルな求解法が見出せなけりゃ、最後はヒューリスティックあるいはランダムwalk
あるいはRISMみたいな外挿的に探索するしかないのだろうか…
ないんだろうなたぶん。そんなきがす
- 160 :
- >>159 現実の世界でも、求める解は整数にすることが多いと思う。
画面のドット精度、工作機械の精度など整数と考えた方が良い。
現実的には整数解が求められないと、角を切り落としたりしかねない。
(許容誤差を加えた範囲を求めるのでも良いけど)
整数解にした方が、試行錯誤の時間も少なくなると思うからより現実的だと思う。 答えが一律に決まるし。
- 161 :
- https://mevius.2ch.sc/test/read.cgi/tech/1549160513/920
前スレの920の、ランク付けの問題で、
入力データ
-6 3 9 5 3 -7
出力・ランク
2 3 5 4 3 1
2 3 6 5 3 1
下のように、同値の場合は、同じランクにして、次のランクの間隔を空ける場合、
ランク3 が2つあるから、4が無くなって、次は、5に飛ぶ場合は、難しい!
- 162 :
- >>161
uniqしないだけ
- 163 :
- >>153 このケースの場合の最小包含円は外接円と一致するんだな。
- 164 :
- 素因数分解する関数を作れ。
ただし2より小さい数は空のリスト(又は配列)を返す事とする。
例: factorization 150
>[2,3,5,5]
- 165 :
- はい、次のお題どうぞ
- 166 :
- >>164
== https://mevius.2ch.sc/test/read.cgi/tech/1549160513/988 == >>56 >>59 >>61
- 167 :
- >>164 Perl5、>>59 で書いたroutineを流用しています。
sub prime {
$h = int $n/2;
for ($i=2; $i<=$h; $i++) {
$s[$i] = 1 unless exists $s[$i];
do {$s[$i*$_] = 0 for 2..int $h/$i} if $s[$i];
}
@p = grep{$s[$_]} 2..$h;
}
sub factorization {
my $i = shift;
my $h = int $i/2;
for $j (grep{$_ <= $h} @p) {
return ($j, factorization($i/$j)) if 0 == $i % $j;
}
1 < $i ? $i : ();
}
$"=',';
for $n ((0, 1, 2, 150)) {
prime;
@f = factorization $n;
print"$n => [@f]\n";
}
実行結果
~ $ perl 14_164.pl
0 => []
1 => []
2 => [2]
150 => [2,3,5,5]
- 168 :
- >>166
すでに既出だったとは。。。orz
- 169 :
- >>164
一応Haskell載せときます。
main = (print.factorization) 150
factorization n | n < 2 = []
factorization n = f n primes
where
f n (x:_) |n == x = [x]
f n (x:xs)|n `mod` x == 0 = x:f (n `div` x) (x:xs)
f n (_:xs) = f n xs
primes = sieve [2..]
where sieve (p:xs) = p:sieve [x | x <- xs, x `mod` p /= 0]
- 170 :
- 既に既出
馬から落馬
歌を歌う
舞を舞う
ダンスをダンスる
- 171 :
- ヤフーでググる
- 172 :
- お題: sin, cos を用いてお題を作成せよ
- 173 :
- eをネイピア数とした時
e^(iθ) ≠ cosθ + i sinθ
となる事を証明せよ
- 174 :
- ん~、じゃあ
sin, cos を実装せよ
- 175 :
- >>173
オイラーの公式なめてんの?
- 176 :
- >>175
exp(iθ)=cosθ+isinθだけど(2.71828...)^(iθ)は多値関数だよ
- 177 :
- >>176
多値じゃなくて多価
- 178 :
- ^はxorだからな。そりゃ違うさ。
- 179 :
- お題:テーブル方式でcos/sin関数をテキトーに自作セヨ。
- 180 :
- >>179
cos := (1 0)(round abs fdivmod 2 * $a Math.PI) * (sgn $a);
sin := (0 1)(round abs fdivmod 2 * $a Math.PI) * (sgn $a);
- 181 :
- ああこりゃ多価関数の意味を知らないバカだな
- 182 :
- 複素数の指数関数や対数関数は多価関数だろ
馬鹿はお前だ
- 183 :
- 指数関数は多価じゃないよ、何言ってんの
- 184 :
- >>183
寝言はねえから言えよクズ
z^w := exp(w * log(z))
log(z) が多価関数なんだから一般にz^wも多価関数だっつーの
Rよ雑魚が
https://en.wikipedia.org/wiki/Exponential_function
> We can then define a more general exponentiation:
>
> {\displaystyle z^{w}=e^{w\log z}} z^{w}=e^{w\log z}
> for all complex numbers z and w. This is also a MULTIVALUED function, even when z is real.
- 185 :
- >>184
出典がwikiとかありえねーよwww
wikiにそう書いてあるからってそれが正しいとは限んねえだろバーカ
- 186 :
- >>184
第一の意味での指数関数、つまり f′(z) = f(z), f(0)=1 を満たす f(z) = exp(z) は当然多価関数じゃない。
第二の意味での「指数関数」、つまり複素数の複素数乗 f(z, w) = z^w は、引用してくれたとおり exp の「逆関数」 log を使って f(z, w) = exp(w log z) と定義するけど、
log は主値を取るものとして(つまり定義域を制限した exp の真の意味での逆関数として)定義すれば log w も f(z, w) もちゃんとした関数になる。そうでなければどちらも多価関数になる。
多価関数って要は関数じゃない(写像ではない)から、少なくとも一般的な計算には使わないよね。多価の asin x や多価の √x なんて使わないでしょ?
- 187 :
- >>186
主値を取る場合はLogなりp.v. fなりきちんと明示するのが少なくとも解析屋の間ではルールだよ
他の分野の人は知らないけど
- 188 :
- >>170
> 歌を歌う
歌うには「歌を」と言う意味は含まれてないから歌を歌うと言うのは別におかしくないよ
> 舞を舞う
も同様
- 189 :
- >>164 Python sympy
from sympy import *
print(factorint(150))
#{2: 1, 3: 1, 5: 2} 2*3*5**2 を示す
- 190 :
- >>188
和語として語源同一なんだけど。
意外なものでは「くさい」と「くそ」「明かり」と「開ける」も同一語源。
- 191 :
- 数学の問題なんて、センター入試問題でも解いてこいよ。 手を抜きすぎだぞ。 もっと面白くひねれよ。
- 192 :
- >>164
Haskellを元にPython。
素数じゃ無いと判定した時点でループ抜けるとかしたら、そこそこ速くなった。
https://ideone.com/3L1N23
- 193 :
- センターなんて数学じゃなくて算数でしょ
- 194 :
- 面白いお題がないかと文句を言う前に
進んで面白いお題を書きましょう
- 195 :
- >>192 python sympy
from sympy import *
import time
time_sta = time.perf_counter()
ans=factorint(13999)
time_end = time.perf_counter()
print(ans,'{:.7f}ms'.format((time_end-time_sta)*1000))
#{13999: 1} 0.0283330ms
同じpython でも餅は餅屋なんだろうな。
因みに、13999**2 を求めると
#{13999: 2} 0.4635000ms
iPhone Xs Max Pythonista3.2 Python3.6.5 sympy 0.4.7.1
- 196 :
- >>192 は >>164向けの回答としては問題ない。
しかし、一般的な素因数分解としては問題が。
大きな素数が対象のとき、実行時間がひどい結果になっている。
たとえば有名な素数1000000007(10億7)をやると....
(前スレ988の制約範囲内くらい、普通にできる形が望ましい)
pythonで手を抜いた一般的な素因数分解でも
10^12くらいは1秒以内に出る。(10^12+39が近場の素数)
- 197 :
- >>196 python sympy
{1000000007: 1} 0.2255000ms
- 198 :
- >>196 同一環境での比較。
n= 13999 ans= {13999: 1} time=0.0135830ms
>>192 を実行
n= 13999 ans= [13999] time=152.4304170ms
- 199 :
- >>198
192の解が一般解としてはひどいすぎるってことでしょ。
10億7どころか、百万台の素数もキツイ。
- 200 :
- お題:↓の画像のようにコンソール画面に雨を降らせなさい
https://i.imgur.com/wR1mNu5.gif
- 201 :
- >>164 pythonわかってない俺がpythonで
https://ideone.com/7j8Gz8
- 202 :
- >>164
Kotlin
https://paiza.io/projects/65lAktSm6rjmcVdxSlaLSQ
ただループ回すだけじゃ芸がないと思って素数を返すイテレータのクラス作ってやってみた。
(素数をバッファリングもすればもっと無駄がなかったなとは思ったがそれはやってない)。
- 203 :
- >>185
Wikiが正しいとは限らないからと言って、wikiが間違っている前提で反論するバカの見本
- 204 :
- >>201 jupyter で測ってみた。結構早い。
[1000000007]
CPU times: user 2.28 ms, sys: 0 ns, total: 2.28 ms
Wall time: 2.25 ms
[1000000000039]
CPU times: user 99.8 ms, sys: 0 ns, total: 99.8 ms
Wall time: 107 ms
[2, 3, 3, 5, 7, 11, 13, 17, 29]
CPU times: user 76 µs, sys: 0 ns, total: 76 µs
Wall time: 78.7 µs
[2, 3, 3, 5, 7, 11, 13, 17, 29, 1000000007]
CPU times: user 3.53 ms, sys: 0 ns, total: 3.53 ms
Wall time: 3.54 ms
- 205 :
- 素数は、平方根までの素数で割って、割り切れなければ素数だろ
[2,3,5,7,11,13...] みたいに、素数表に追加していく途中で、
例えば、103 なら、11 までの素数で割って、割り切れなければ素数
13以降の素数で割る必要はない
もし13で割り切れるなら、13 * n = 103
となり、n は、√103 よりも、小さくなるから、既に割り切れているはず!
- 206 :
- >>205
例のRubyバカはこのスレにも出没するのか
- 207 :
- 誰もRubyの話なんてしてないやろ
- 208 :
- 日頃の行いがなぁ…
- 209 :
- >>185
間違いとも限らない。
書かれていることを鵜呑みにするのは間違いだが見もしないで頭ごなしに間違いと決めつけるのも間違い。
- 210 :
- >>205
なるほど。暇があったらそれも考慮しよう。
- 211 :
- 【速報】金券五百円分とすかいらーく優侍券をすぐもらえる
https://pbs.twimg.com/media/D8I_lOtVUAE8t0O.jpg
@ スマホでたいむばんくを入手
A 会員登録を済ませる
B マイページへ移動する
C 招待コード→招待コードを入力する [Rirz Tu](スペース抜き)
今なら更に4日18時までの登録で2倍の600円の紹介金を入手
クオカードとすかいらーく優待券を両方ゲットできます。
かんたんに入手できますのでご利用下さい
- 212 :
- >>211
あとで一万円の請求が来るらしい
- 213 :
- >>211
バラまきキャンペーン乙。
- 214 :
- >>200 Ruby
# エスケープシーケンスが有効な環境
print "\e[1;1;H\e2" # "\ec"
while true
print 79.times.inject(''){|s| s += (rand(20) >= 19)? '|' : ' ' }, "\n\e[1T\eM"
sleep 0.1
end
- 215 :
- お題:2次元関数を図示したとき網目状になる関数を示せ。
- 216 :
- 網目状になったら普通それは関数とは言わないんですが
- 217 :
- >>200
https://light.dotup.org/uploda/light.dotup.org593450.gif
エスケープシーケンスのコードが行方不明だったので書き直した。
C++で書いたけど、ベターCですなぁ。
- 218 :
- >>215
それは数学のお題では?関数の方を求めるんでしょ?図を画面に出すとかではなく。
- 219 :
- >>200 Ruby
# 水はねを追加
require 'io/console'
Crow, Ccol = STDOUT.winsize
print "\e[0;0H"
lines = []
while true
line = ' ' * Ccol
rand(Ccol).div(8).times{ line[rand(Ccol)] = '|' }
lines << line
print "\e[0;0H#{line}\n\e[0;0H"
if lines.size >= Crow
line = lines.shift.tr('|','w')
print "\e[#{Crow};0H#{line}\e[0;0H"
end
sleep 0.1
print "\e[0;0H\eM"
end
- 220 :
- お題
1/x + 1/2y + 1/3z = 4/3
を満たす、整数( x, y, z )の組み合わせを求めろ
ただし、x, y, z の範囲は、1 <= x, y, z <= 4 とする
答え
[ 1, 2, 4 ], [ 1, 3, 2 ], [ 2, 1, 1 ]
- 221 :
- また数学か
- 222 :
- これは数学と言うより、コンピュータの問題じゃないかな。
IEEE754の理解が必要になると思う。
- 223 :
- 有理数・Rational クラスを使えば?
式を6倍しても良いけど
- 224 :
- というか知的障害者でも64回回せば終わる問題だよな
- 225 :
- 上位大学の入試見てると問題作りってセンス出るよな
- 226 :
- >>222
> IEEE754の理解が必要になると思う。
釣りか?
- 227 :
- >>215
sin(x + y)*sin(x - y)=0
- 228 :
- >>226
誤差収束しないといけないからだと思う。
コンピュータは1/3を計算するとき工夫がいる。
- 229 :
- >>228 馬鹿だろ。 6倍してみろ
- 230 :
- >>228
> コンピュータは1/3を計算するとき工夫がいる。
だからその工夫が>>223の言う
> 有理数・Rational クラスを使えば?
とか
> 式を6倍しても良いけど
だろ
数学的な問題は実数使っても解けないことが多いぞ
- 231 :
- あぁ、すまん。
暇なので愚直に解いてくるわ。
- 232 :
- https://ideone.com/0kIloe
愚直に解いたのでは出ないので、有理数クラスが必要だ。という話になりました。(愚鈍)
- 233 :
- 等式を6xyz倍して、4の3乗通りの整数の組み合わせを代入して単純に比較するだけの話だよね
- 234 :
- >>233
まあそう言うことだわな
> 1/x + 1/2y + 1/3z = 4/3
6yz + 3xz + 2xy = 8xyz
整数演算だけでいい
- 235 :
- お題:相異なる25個の英大文字が与えられるので、足りない1個を出力せよ
BCDEFGHIJKLMNOPQRSTUVWXYZ -> A
YIZFOADLMWCRUTGSVQKJEHNBP -> X
- 236 :
- >>235 ruby
$><<([?A..?Z]-gets.split(''))
- 237 :
- typo
>>235 ruby
$><<([*?A..?Z]-gets.split(''))
- 238 :
- >>235 Perl5
for $s (BCDEFGHIJKLMNOPQRSTUVWXYZ, YIZFOADLMWCRUTGSVQKJEHNBP) {
@a = grep{0>index$s,$_} A..Z;
print "$s -> @a\n";
}
$ perl 14_235.pl
BCDEFGHIJKLMNOPQRSTUVWXYZ -> A
YIZFOADLMWCRUTGSVQKJEHNBP -> X
- 239 :
- >>238 Pler5 >>238 よりもう少しコンパクトでsimpleに書けた
for $s (BCDEFGHIJKLMNOPQRSTUVWXYZ, YIZFOADLMWCRUTGSVQKJEHNBP) {
print "$s -> ", grep{0>index$s,$_} A..Z, "\n";
}
- 240 :
- >>220
kotlinc
6倍して計算
>>> (1..4).forEach { x -> (1..4).forEach { y -> (1..4).forEach { z -> if (6.0/x+3*y+2*z==8.0) println("[$x, $y, $z]") }}}
[2, 1, 1]
>>>
答え一つだけのようだが、>>220の下に書いてある答えはなんだ?
- 241 :
- >>240
スペース無しの1/2yを1/2*yって解釈する人間を初めて見たわ
悪意か?
- 242 :
- >>223
>式を6倍しても良いけど
間違い!
6xyz 倍する
x, 2y, 3z が、分母です!
- 243 :
- 最初から曖昧な式を書いてる出題者が最大の悪意だろ
もう無視しろよこんなサイコパス
- 244 :
- えぇ……どこが曖昧なんだよ
無知だからって開き直るのは格好悪いわ
- 245 :
- >>241
悪意と言うより6.0/xとか見る限りちょっと抜けてるんだと思う
- 246 :
- お前らでも他人の悪口言うもんなんだな
- 247 :
- >>235 Pharo/Squeak Smalltalk
| alphabet |
alphabet := Character alphabet asUppercase.
alphabet difference: 'BCDEFGHIJKLMNOPQRSTUVWXYZ'. "=> 'A' "
alphabet difference: 'YIZFOADLMWCRUTGSVQKJEHNBP'. "=> 'X' "
- 248 :
- >>220 Pharo/Squeak Smalltalk
| set exp |
set := Set new.
(1 to: 4) asDigitsToPower: 3 do: [:combi |
combi permutationsDo: [:permu | set add: permu copy]
].
exp := [:x :y :z | 1/x + (1/(2*y)) + (1/(3*z))].
set select: [:permu | (exp valueWithArguments: permu) = (4/3)]
"=> a Set(#(2 1 1) #(1 3 2) #(1 2 4)) "
- 249 :
- >>235 python
import string
A26 = set(string.ascii_uppercase)
print(A26.difference(set('BCDEFGHIJKLMNOPQRSTUVWXYZ')).pop()) #-> A
print(A26.difference(set('YIZFOADLMWCRUTGSVQKJEHNBP')).pop()) #-> X
- 250 :
- >>241
え?なんで?括弧なしで続けて書いたらそういう解釈にしかならんと思うが?
そうでないならその部分どう解釈するのが正解なの?
- 251 :
- >>245
全体を6倍しているからだが?
- 252 :
- >>242
それが分母ならちゃんと括弧書けよ。
- 253 :
- 周りの人に同情するわ…w
- 254 :
- ID:gCLo3iII ガチのガイジやんけ
- 255 :
- ワラタwww
- 256 :
- https://ideone.com/IFCJVe
3個でないよ?(愚鈍)
- 257 :
- >>241
>>232のリンク先もそのようになっているようだが、見ていなかったか。
- 258 :
- >>235
AからZの文字コードの数値の総和から入力文字列の各文字の文字コードの総和を引けばいいね
- 259 :
- >>238
https://ideone.com/ztrBf9
わかってやってみた。ソートすんなとは書いてなかった。今は反省している。
- 260 :
- あ、間違えた。>>259 => >>235
ネタ振ったときにこれだよ。。。
- 261 :
- むしろプログラマの世界で数式を書くなら、
1/(2*y) だろうな。
1/2y と書けば、普通は、(1/2) * y だろ。
- 262 :
- 数学習った時も掛け算記号は省略できるとか習った覚えが。
あと、割り算と掛け算混ぜたときの結果は項の順番によらないかった覚えが。
寝る。
- 263 :
- >>261
コード書いたわけじゃなくて普通の数式やがな
それをコードに直すのがプログラマ
- 264 :
- >>263
数式でも人が紙に書いたかのような表現が使えず1行に無理に押し込める形式にするのならそれなりの工夫が必要だ
- 265 :
- まず普通の人はあの表記を見ても迷わない
一京歩譲ったとして仮に迷ったとしても与えられた答えを代入すれば猿でも分かる
つまりいちゃもんつけてるのは猿未満
- 266 :
- 自演乙
- 267 :
- 人じゃないけど、参考に
wolframalpha、
https://www.wolframalpha.com/input/?i=1%2Fx%2B1%2F2y%2B1%2F3z%3D4%2F3
https://www.wolframalpha.com/input/?i=1%2Fx%2B1%2F%282y%29%2B1%2F%283z%29%3D4%2F3
google
https://www.google.com/search?q=y%3D1%2F3x
https://www.google.com/search?q=y%3D1%2F%283x%29
- 268 :
- >>220
Ruby で、
ary = ( 1..4 ).to_a
# 直積・3重ループ
p ary.product( ary, ary ).select { |( x, y, z )|
Rational( 1, x ) + Rational( 1, 2 * y ) + Rational( 1, 3 * z ) == 4/3r }
#=> [[1, 2, 4], [1, 3, 2], [2, 1, 1]]
- 269 :
- >>263 >コード書いたわけじゃなくて普通の数式やがな
普通の数式ってどこの世界での普通なんだ? 普通の数式ならそんな書き方はしないからな。
1/2y を普通の数式として解釈すれば、(1/2) * y が普通の解釈だろ。 左から順に演算されるのが普通(と言うかルール)だからな。
- 270 :
- 左からやって普通は1割る2yだろ
普通の数式で1÷2yってあってそう解釈するか?
割る記号の変わりだろ/は
プログラムのコードじゃないぞ
一個目の1/xがないならまだわからんでもないけど
- 271 :
- >>270 お前の普通の根拠を示してみろや。
記号が書かれてれば掛ける記号が略されてるとみなすのが普通
1/2y は1/2*y と等価 1割る2は、0.5 これが普通。
- 272 :
- >>270 お前の異常なところは、2y が優先演算されると思い込んでいるところ。
そこが大きな間違い。
- 273 :
- 中学の文字式の問題といてみたらいいんじゃないかな
- 274 :
- 教養のない(1/2)派が暴れてて最高に笑えるわ
馬鹿は馬鹿らしく謙虚でいろよ
- 275 :
- 普通とかほざくゴミまで出てきたってことは一番最初の出題者はやっぱりサイコパスだろ
解釈の分れる書き方をワザとしてんだよ
- 276 :
- いや馬鹿以外は一通りにしか解釈してねえだろ
- 277 :
- >>273 だからお前の言う普通の文字式が書かれてるところを示してみろよ。
最も中学では、1/2のような書き方はしないから、そんな問題はないと思うが。
兎に角プログラミングスレで、
1/2x と書けば、(1/2)*x という解釈しかありえない。
もう一度 >>267 を見てこい。
- 278 :
- ID:OSjRKT39 こいつ、仕事もできねえんだろうな
同情するわ……こいつの同僚にw
- 279 :
- >>278
具体例も挙げてきちんと論証してるじゃん
- 280 :
- まあ理系なら数式見慣れてるし、数式だと 2x でセットと見るから
2x/3y を (2*x*y)/3 と解釈するアホはいないと思う
- 281 :
- >>280
https://www.wolframalpha.com/input/?i=2x%2F3y
うーん?
- 282 :
- >>279
お前は論証という言葉をまず辞書で引け
- 283 :
- 理系じゃない人にもやさしい世界の方がよくない?
- 284 :
- 理系以外にも優しくするのはいいとして馬鹿に優しくする必要は無いだろ
無能な猿が思い上がるだけ
- 285 :
- キチガイを一人召喚してるな
- 286 :
- >>282
仕事もできねえ、馬鹿、アホという人格否定で自分を正しく見せようという
幼稚な人より100倍マシだと思いましたよ
- 287 :
- >>286
たとい俺より百万倍マシだったとしてもお前がクズな現実は変わらない
- 288 :
- >>284
一般的な例を挙げて論証する人を馬鹿だとは思わないなあ
むしろ相手の人格を貶めることばかりに終始してる君のほうが・・・
- 289 :
- 面白いなこいつ
叩けば音が鳴るおもちゃやん
- 290 :
- >>287
罵詈雑言を言ったら
- 291 :
- 自分が賢くなるとでも?
- 292 :
- >>280 理系ならwolfram ( mathematica ) を知らないわけないだろ。
>>281 をよく見ろ。 世界中の数学者はこう計算するというのが数学の世界なんだぞ。
お前は世界中の数学者をアホ呼ばわりするのか?
- 293 :
- で、結局論証ってなんのこと?
どこに論理的な推論があったわけ。
- 294 :
- >>293
一般的で具体的な例を上げて説明してたよ
- 295 :
- >>292
はいストローマン論法
- 296 :
- 君たちは理系なの?
- 297 :
- >>294
一般的で具体的な例を上げて説明することは「論証」とは言いません
そんな的はずれな事言ってたらヴィトゲンシュタインが泣きますよ
- 298 :
- >>297
立派な論証だよ
ウィトゲンシュタインもうなずいてるよ
- 299 :
- >>293 論証じゃなくて、wolfram やgoogle の計算の実証を挙げてるのに全くそんなのを無視しておいて何を今更。
なんにせよ、プログラマスレではプログラマとして動け。 問題としては落第。
- 300 :
- wolframやgoogleでのレクシコンが今の議論に一体何の関係があるのだらうか!?
全くの荒唐無稽だと言っておきませうせうせう
- 301 :
- >>300
一般的にどう解釈されるかを示す具体例として挙げられてるよ
どうして歴史的仮名遣いなのさ!?
- 302 :
- >>301
君はいい人そうだから強く生きていきませう
- 303 :
- >>302
どうして歴史的仮名遣いなの?
君の思う論証ってどういうもの?
他人の発言を的外れとまで言ったんだからきちんと説明していただきたい
- 304 :
- >>300 自分の論証はどこに有る? 例を出せと言ってるのに出せないんだろ?
- 305 :
- >>304
兄貴、俺たちの勝ちっすね
- 306 :
- おいお前ら、俺たちのバックにはグーグルがいるんだぞ
- 307 :
- 物理などの世界では並置優先ルールが有る。
1/ab は、1(a*b) 1/2yは1/(2y)
しかし一般的なプログラミング(コンピュータ)の世界では、並置は存在しないから並置優先ルールもない。
ab は、a、b とは別変数となる。
プログラミングのお題としては、プログラミングルールに従った出し方にすべき。
- 308 :
- 1.出題者が複数の解釈のできる曖昧な書き方(1/2y)をした。
2.多くの回答者は曖昧さを理解した上で自然に取れる解釈(1/(2y))をした。
3.一部の回答者はプログラミングや数学的な記法の厳密な解釈として((1/2)y)であるべきとした。
4.3と3を煽る奴らのどうでもいい喧嘩←今ここ
- 309 :
- お題をみてそれにあわせたコードをかくのがプログラミングだろ
お題は文章なり数式でプログラミングのルールにのっとる必要はないじゃん
表現が曖昧で複数にとれるようなものは出題者に確認するだけの話だと思うけど
- 310 :
- ゴミみたいな書き方する出題者がそもそも悪いでしょ
そういうヤツは除外しなきゃ
叩いて叩いて叩きまくればいいんだよ
- 311 :
- 誤解を生まないように書けば良いのにな。
- 312 :
- お題と回答
>>5 : 6 10 32 36 44
>>9 : 15 34 35 79
>>11 : 48 (78) 138-139 (140) 142 146 151 154
>>19 :
>>50, https://mevius.2ch.sc/test/read.cgi/tech/1549160513/920 : 4 85 89
https://mevius.2ch.sc/test/read.cgi/tech/1549160513/988 == >>164 : 59 61 167 169 189 192 201 202
>>90 : 95 96
>>99 :
>>200 : 214 219
>>215 : 227
>>220 : 232 240 248 256 268
>>235 : 236 237 238 239 247 249 259
- 313 :
- >>307
> 物理などの世界では並置優先ルールが有る。
そういうルールを知らなかった奴が引っ込みつかなくなってるだけでしょ
- 314 :
- >>308
> 2.多くの回答者は曖昧さを理解した上で自然に取れる解釈(1/(2y))をした。
多く?そもそも回答者がほとんどいないのでは?
それでもどちらかの解釈で回答した人は居るが、その回答はどちらの解釈が多かった?
- 315 :
- >>307
それならばそのようなルールで書くと断りを入れてから書くべきだな。
- 316 :
- >>313 並置優先ルールがない世界に、並置優先ルールが有るものだと言う前提で問題を出せば混乱するに決まってる。
そんな仕様書を書いたら即座に首だろ。
(唯一の救いはこの場合答えがあるから、確認することはできたが、確認せずに回答した人がいることも忘れてはならない)
プログラムの世界は、1点の曇りもあってはならない。
- 317 :
- 曖昧さも糞も無いだろ
答えまで書かれてたんだからそれで確認するのが正常な頭脳の持ち主
数学できない阿呆が噛み付いてるだけ
惨めだからもうやめときな
- 318 :
- 単なる匿名掲示板で仕様書ガーとかw
バカにされて悔しいのはわかるけど流石にそろそろアキラメロン
- 319 :
- 激しい自演と正当化
- 320 :
- お題:Hello, World!を二進数で出力せよ
- 321 :
- >>320 Perl5
print map{sprintf'%b ',ord}split'','Hello, World!';
実行
~ $ perl 14_320.pl
1001000 1100101 1101100 1101100 1101111 101100 100000 1010111 1101111 1110010 1101100 1100100 100001
- 322 :
- お題
x=1から始めて一度のステップで
・xに1を足す
・xを2倍する
のいずれかを行うことができます。
正の整数Nが与えられるので、
x=Nに到達するのに必要な最小ステップ数を求めなさい。
N=34
=> 6 (1 -> 2 -> 4 -> 8 -> 16 -> 17 -> 34)
N=1
=> 0
N=10000
=> 17
- 323 :
- >>320
https://ideone.com/WlBY5N
括弧強い!
- 324 :
- >>322
シフト回数と1足した回数調べりゃいいんじゃないの
10000 (10) = 10011100010000 (2)
34 (10) = 100010 (2)
- 325 :
- >>324
なるほどね!
VB
https://paiza.io/projects/RU2L7bgni8qwq8dSAWGlKA
- 326 :
- >>325
桃白白改めミスターポポ改めピラフ改めピッコロさんには少し難しかったかな
- 327 :
- >>320 Python
print( ['{:08b}'.format(ord(s) ) for s in 'Hello, World!' ] )
# ['01001000', '01100101', '01101100', '01101100', '01101111', '00101100', '00100000', '01010111', '01101111', '01110010', '01101100', '01100100', '00100001']
- 328 :
- >>322 Ruby
f=->n{n.digits(2).sum+n.bit_length-2}
p f[34] # => 6
p f[1] # => 0
p f[10000] # => 17
- 329 :
- # >>322 Python 取り敢えずオーソドックスに
def step(n):
for cnt , _ in enumerate( range(n ) ):
if n == 1 : break
n = n//2 if n%2 == 0 else n-1
return cnt
print(step(34)) #6
print(step(10000)) #17
print(step(1)) #0
- 330 :
- >>320
Java
https://paiza.io/projects/zA8YxDpbM7SdnR-ghzkqrA?language=java
- 331 :
- >>322 Python >>328を真似して
f = lambda n: bin(n).count('1') + n.bit_length()-2
print(f(34)) #6
print(f(10000)) #17
print(f(1)) #0
- 332 :
- >>322 Squeak Smalltalk
| fn |
fn := [:n | n bitCount + (n numberOfDigitsInBase: 2) - 2].
fn value: 34. "=> 6 "
fn value: 1. "=> 0 "
fn value: 10000. "=> 17 "
- 333 :
- >>322
以下みたいに、すべてのステップ数を記録する、表を作っていくのか?
0 step : 1
1 : 2
2 : 3, 4
3 : 4, 6 | 5, 8 => 4, 5, 6, 8
4 : 5, 8 | 6, 10 | 7, 12 | 9, 16 => 5, 6, 7, 8, 9, 10, 12, 16
- 334 :
- 表を作らなくても、これで良いのか
1. 偶数なら、2で割る
2. 奇数なら、1を引いてから、1へ行く
- 335 :
- >>334 少し前すら読んでいないんだな。
その考え方で解いたのが。>>329
さらなるアイデアが、>>328 >>331 >>332
- 336 :
- >>335
そいついつも人の話を聞かない奴だからスルーしとけばいいよ
- 337 :
- 最小ステップの証明は?
- 338 :
- >>337 1足す2が3であることを証明しろと言うのか?
まあいいや、最小ステップは2倍が最大回数になればよいだけの話。
- 339 :
- >>322
kotlinスクリプト
>>> fun f(n: Int) = println("N=$n\n=> ${n.toString(2).map { it - '0' + 1 }.sum() - 2}")
>>> f(34)
N=34
=> 6
>>> f(1)
N=1
=> 0
>>> f(10000)
N=10000
=> 17
- 340 :
- >>320
Kotlin
https://paiza.io/projects/w4z9UaR7KG9qv6Zmc7KE_Q
文字コードを2進数で出すのでは簡単過ぎるので・・・
- 341 :
- >>322
Ruby で、
def f( n )
n_2 = n.to_s( 2 ) # 2進数
# 2進数の桁数 + 1の個数 - 2
n_2.length + n_2.count( "1" ) - 2
end
p [ 1, 34, 10_000 ].map { |n| f( n ) }
#=> [0, 6, 17]
- 342 :
- >>235 Io
f := method(s,
((65+90)*26/2 - s sum)asCharacter
)
Io> f("BCDEFGHIJKLMNOPQRSTUVWXYZ")
==> "A"
- 343 :
- 何かと思ったら'A'から'Z'の総和か、その求め方は草
- 344 :
- お題:特定ドライブ配下の*.jpgファイルを削除し、そのjpgファイルが格納されていたフォルダも削除する
- 345 :
- 質問スレへどうぞ。
- 346 :
- >>344
rm -rf /
- 347 :
- >>346
ありがとうございます。試してみます。
- 348 :
- 面白いことになりそうだな、ワクワク
- 349 :
- 最近のrmはそれじゃ実行できないとマジレス
- 350 :
- 何にせよ良い子は、>>344 なんてお題は無視するように。
いろんな人間がいるのに、ファイルを削除とかディレクトリを削除とか言う問題は危険すぎる。
せめてrename で済ませるべき。
経験のある人間でも、テストでいきなり削除なんてしないぞ。 怖くてできるわけがない。
>>344 の問題は却下。
- 351 :
- >>350
回答という形での投票行動がもっとも自然な見解なのでは?
- 352 :
- Ruby には、FileUtils::DryRun みたいに、
実際には実行されなくて、どうなるかだけを見るモードがある
PowerShell の、-WhatIf もそう
>>346
は、あちこちで、rm -rf /
を書いてる荒らしだから、実行しないように!
- 353 :
- >>235
Kotlin
https://paiza.io/projects/e1tMs1B9gF4m-AWN-z-Gyg
Set に全て入れて'A'..'Z'のSetから引くやり方で足りない文字は全て出すようにした。
- 354 :
- >>352 dry run はいろんなツールにもあるけど、良い子の皆がそんな事に気付く訳ないじゃないか。
危険なものには近づかないのが一番。
>>344 は、単にアホな問題というだけ。 無視虫蒸し
- 355 :
- >>344
Linux や UNIX 系 OS で良く使われる find コマンドの場合は次のようにできる。
find '対象のディレクトリ' \( -type f -name '*.dir' -o -type d \) -delete
-delete が使えない find の場合は
find '対象のディレクトリ' -depth -type f -name '*.jpg' -exec rm {} \; -o -type d -exec rmdir {} \;
但し *.jpg 以外のファイルがあったら削除されないのでそのディレクトリの削除はできない。
Windows の場合でも WSL の Linux 環境か、Cygwin環境等では同じやり方が使える。
素の Windows だと find.exe という同名の全く違う動きをするコマンドがあるので同じやり方はできない。
- 356 :
- >>352
あれだけ周りから荒らし認定されても全く態度を改めないお前が、他人を荒らしだなどとよく言えるな。
- 357 :
- >>355
「jpegファイルが入っていたディレクトリの」削除になっていないですよ
- 358 :
- >>322
Haskellでオーソドックスに。
main = mapM_ (print.f) [1,34,10000,0]
f = length.f'
where
f' n | n < 1 = error "Please n > 0 number."
f' 1 = []
f' n | even n = n:f' (n `div` 2)
f' n = n:f' (n - 1)
Out:
0
6
17
Program error: Please n > 0 number.
- 359 :
- >>235
Haskellで正規表現知らん奴が。。。
import Data.List
main = mapM_ (print.f) ["BCDEFGHIJKLMNOPQRSTUVWXYZ", "YIZFOADLMWCRUTGSVQKJEHNBP"]
f = f' ['A'..'Z']
where
f' [x] _ = x
f' az (x:xs) = f' (delete x az) xs
Out:
'A'
'X'
- 360 :
- >>357
ああ。入ってなくても空だと消されるか。
じゃあもう一捻り必要だな。
- 361 :
- 良問ですな
- 362 :
- お題
実行すると1から6までの数字のどれか1つを返すサイコロのプログラム
表示可能なら以下の文字列を使っても良い
⚀⚁⚂⚃⚄⚅
- 363 :
- ⚀ しか出さないものでもいいのけ?w
- 364 :
- >>362 PHP
1
- 365 :
- >>362 javascript
'⚀'
- 366 :
- >>362 Ruby
p$.
- 367 :
- >>362 Ruby
def dice
n = [0, 0, 0, 0, 0, 0]
1000000.times do n[(0...6).to_a.sample] += 1 end
p n
n.rindex(n.max) + 1
end
puts dice
- 368 :
- お題: トランプのハートの1〜mとダイヤの1〜mの合計2m枚(1≦m≦9)を使って神経衰弱ゲームをするプレーヤーを実装し、n人のプレーヤーで神経衰弱ゲームをシミュレーションせよ。
カードは横一列に並べられる。最初は全て裏面でランダムな並びとする。
プレーヤーはカード番号の並びを文字列として読み取ることができる(裏面はゼロと見なす)。
- 369 :
- >>362
Bash
https://paiza.io/projects/1Rp_TQc1ZZJTYLnPpC-kLg?language=bash
- 370 :
- >>362 Pharo/Squeak Smalltalk
#('⚀' '⚁' '⚂' '⚃' '⚄' '⚅') atRandom. "=> '⚁' "
- 371 :
- >>362
puts Time.now.sec % 6 + 1
- 372 :
- >>368
出力例。
000000
プレーヤー1が開きました。
100200
不一致。閉じます。
000000
プレーヤー2が開きました。
110000
一致。プレーヤー2は計2枚獲得。
プレーヤー2が開きました。
110202
一致。プレーヤー2は計4枚獲得。
プレーヤー2が開きました。
113232
一致。プレーヤー2は計6枚獲得。
プレーヤー2の勝ち。
- 373 :
- >>368
補足。文字列でも配列でもいい。
一枚ずつでも二枚ずつでもいい。
プレーヤーは
- 374 :
- >>362
Kotlin スクリプト
Unicode の DIE FACE-1 〜 6 を使う場合はこれ。
println((0x2680 + kotlin.random.Random.nextInt(6)).toChar())
ASCII の数字(所謂半角の数字)にしたい場合はこれ。
println(('0' + kotlin.random.Random.nextInt(6)).toChar())
漢数字にしたければこれ。(これにサイコロの文字を割り当てても良い)
println("一二三四五六"[kotlin.random.Random.nextInt(6)])
- 375 :
- あ、ASCII の場合は何も考えずに1足してただ出力すれば良いだけだった。
まあいか。
- 376 :
- >>362 なんでそんなの出すんだよ。、問題になってないじゃないか。
解答 ⚄
- 377 :
- ダイスってトライグラフじゃねーか!!
色々変換かけないと出せなくて苦しい。@C++。
ちなみにトライグラフの仕様は削除されました。
- 378 :
- >>371
イカサマ賽じゃねーか
- 379 :
- https://ideone.com/HU8OdB
>>362 C++
メモリ上に持つことはできてデバッガでも表示されるが、iostreamが認識なくて数字になる。
wchar_tのように組み込み型になってないみたい。@VC++
にわかにはここまでしかできない。Orz
- 380 :
- >>362 R
cat(sample(1:6,1))
- 381 :
- >>362 Python
import random
for _ in range(10) : print(random.choice("⚀⚁⚂⚃⚄⚅"), end=' ')
# ⚅ ⚅ ⚁ ⚃ ⚀ ⚃ ⚁ ⚄ ⚂ ⚀
- 382 :
- もふもふ
- 383 :
- 神経衰弱を作っていたが、VC2019が仮想関数をうまく扱ってくれない感じで大爆死。
- 384 :
- https://dotup.org/uploda/dotup.org1873815.zip
ここまで作ってデバッグしようとしたらシェアードポインタが継承扱ってくれない感じになった。
- 385 :
- >>384 前の方からの VC++ の人かな?
なんでそんなに苦労してるのかが理解できない。
使った事ないから知らないけど。
でも、貼るんだったらzip は辞めようよ。 怖くて開けない。 ソースだけなら動かなくてもideon に張り付ければ良いじゃん。
- 386 :
- >>385
ソースが2分割されててまとめたほうがいいかと思ったけど。
ZIPって脆弱性あるの?
張りなおすわ。
- 387 :
- https://ideone.com/mqLP90
C++。開発中だが、頓挫したので挙げておく。
面倒なことしてるとは言うけど、プレイヤー分けたほうがそれっぽいかと思って分けてある。
あまり深い意味はないよ。
- 388 :
- お題:
a, b, c, d, e, f, g, h, i, j, x は正の整数で
a^3 - b^3 = c^3 - d^3 = e^3 - f^3 = g^3 - h^3 = i^3 - j^3 = x
を満たす.
条件を満たす最小x と対応する a, b, c, d, e, f, g, h, i, j を求めよ
- 389 :
- >>387
仮想関数名前違うじゃん
- 390 :
- https://ideone.com/StMJSA
>>神経衰弱。
一応、ランダムプレイヤーで終了まで走ったのでアップ。おしまい。
いい暇つぶしになった。
>>389
あぁ、別スレにも投げたんだが、即反応があって赤っ恥だよ。
直したところ、通ったので適当にデバッグが可能になった。
- 391 :
- NervousBreakdown って名前はユーモアでそうしてるだけ?
カードゲームの神経衰弱って、(一部の)日本人しか連想できなさそうな名前だけど
- 392 :
- 俺は英語に詳しいんだ
- 393 :
- >>391
グーグルで翻訳かけたらそれが出たので脳死で採用。
英語下手なんだ。
- 394 :
- ゲーム名とかは翻訳に掛けるんじゃなくてwikipediaとかで調べればいいと思うよw
- 395 :
- >>393
concentration または memory ではないかな。
- 396 :
- >>395
ウィキペディアには、前者が書いてあった。
ローカルの直しておくかな。
イデオンは編集可能期限が過ぎてる。
- 397 :
- >>388
条件を追加します、a, b, c, d, e, f, g, h, i, j は互いに異なる正の整数です
試算では
x = 1412774811
になりました
- 398 :
- 数学の宿題解いてくださいスレ立てれば
- 399 :
- >>398
どうして、あるいはどういう点によって、これは宿題だと思ったのですか?
- 400 :
- お題: 入力からC言語の整数リテラルもしくは浮動小数点数リテラルを読み取り、型の種類、実際の値の十進表現、そして型のバイトサイズを出力するプログラム。
入力が不正な場合はERRORと出力せよ。
前後の空白は読み飛ばすこと。
- 401 :
- https://ideone.com/tSqKkb
>>400
ベターC。今流行りのTrueパーサーというやつです、はい。
怒られるヤツです、はい。
ローレベルは苦手だ。
- 402 :
- >>397
数字が異なるモノであることをチェックするのが面倒だなぁ。字数多くて。
- 403 :
- >>388,397
俺も適当に回したもので1412774811が出たが、
それが正しいかどうか調べるのは21701までの総当たりで1412774811より小さい条件を満たすものが無けりゃええんよな?
21702^3 - 21701^3が1412865307になって1412774811を超えるけーの
- 404 :
- https://ideone.com/yqze0k
>>388 >>397
総当たり(予定)
概算書いてあるから簡単かと思ったら、リリースでも終わらないでござる。
よく考えたら、15ビットの10乗だったので死ぬわ。でござる。
- 405 :
- https://ideone.com/LROfLu
>>404 の おまけ。
ハッシュにしてみたら、面倒なチェック落とせるんじゃね?と思い、物故んでみたところ。
メモリ限界に達して死にました。南無。
- 406 :
- >>368 Squeak/Pharo Smalltalk
| m scores turn cards mask print |
m := 3.
scores := #(0 0).
cards := ((1 to: m), (1 to: m)) shuffled.
Transcript open; clear.
(print := [:val | Transcript cr; show: val]) value: cards * (mask := Array new: m*2 withAll: 0).
turn := 1.
[mask includes: 0] whileTrue: [
| player choice prevMask pair |
player := turn - 1 \\ 2 + 1.
choice := (mask negated + 1 * (1 to: m * 2) copyWithout: 0) shuffled first: 2.
prevMask := mask copy.
pair := choice collect: [:pos | mask at: pos put: 1. cards at: pos].
print value: 'プレーヤー', player asString, 'が開きました。'; value: cards * mask.
pair asSet size caseOf: {
[2] -> [print value: '不一致。閉じます。'; value: (mask := prevMask) * cards. turn := turn + 1].
[1] -> [print value: ('一致。プレーヤー{1}は計{2}枚獲得。' format: {player. scores at: player incrementBy: 2})]
}
].
print value: (scores asSet size = 1
ifTrue: ['引き分け。']
ifFalse: ['プレーヤー', (scores indexOf: scores max) asString, 'の勝ち。'])
- 407 :
- >>397 >>388
お、なんか簡単に出来なさそうだから、やってみるかな。 たまたま記号計算の勉強中だから、やってみるがそっちの勉強の方が難しすぎて答えまでたどり着けるかどうかわからんが、良い練習問題になる。
- 408 :
- お題: あなたは完全予約制の映画館の運営責任者だ。映画館にある10x10席について予約アプリを作ることになった。
仕様:
2桁の座席番号で空いてる席を予約できる。
「おまかせ」ボタンで席を決めてくれる。
席が決まったら、整理券を発券する。
「印刷」ボタンで予約状況を印刷できる。
「売上」ボタンで売上を計算できる。
- 409 :
- >>402
問題文が悪いようですね、ごめんなさい
言いたいことは
任意の正の整数 a, b, の三乗差 a^3 - b^3 で表される整数について、これが 5 通りの三乗差で表現できる最小の整数を求めよ
のつもりだったのです
4通りの三乗差で表現できる最小の数は
165^3-93^3=162^3-111^3=178^3-63^3=678^3-3^3=4118877
です。
>>403
最悪 (10進4桁)^3 でなんとかなると思っていましたが…
- 410 :
- >>409
こちらで書いた試行プログラムにバグが見つかりました
4通りの三乗差で表現できる最小数は
165^3-72^3=162^3-51^3=178^3-115^3=678^3-675^3=4118877
20年ぶりにバグ出ししてしまった…てへぺろ
- 411 :
- いっっっつも問題修正してるじゃん。
雑なんだよ。センスも能力も無いのでは?
- 412 :
- >>411
はい、能力もセンスもありませんので、こちらで胸を借りようかと(宿題スレもあわせて)10年くらい書き続けてこの様だったりするのです…
- 413 :
- >>411
あれ?
直前の私のお題は
https://mevius.2ch.sc/test/read.cgi/tech/1524570314/795,796
https://mevius.2ch.sc/test/read.cgi/tech/1480579110/891
でしたが、「いっつも」と言われるほど問題を修正しまくっていましたっけ?
- 414 :
- >>362 なでしこ
(6 の 乱数) + 1 を 表示
- 415 :
- >>408
なんのアプリ?
- 416 :
- プログラム板にキチガイ降臨中!botに一晩も反応する異常さ
一般人(学校恩師)に殺害予告をしているのでスレ建て通報してください。
https://mevius.2ch.sc/test/read.cgi/tech/1559872586/
142 名前:a4 ◆700L1Efzuv 投稿日:2019/06/18(火) 05:29:55 ID://qVkzO
>>141
名古屋の人な 俺ね、君の問題を大橋先生と混ぜないことにする。つまりね、
片桐孝洋のことをボコろうと思う。普通に顎の骨を折る。これくらいで警察来るか?
一般市民とかさ、普通にさ、俺らの秘密なんだけどさ、日本人なんて復活ねーから。
- 417 :
- お題:あからさまなループ(再帰、goto等も含む)を使わずに1から100までを表示するコードを書いてください。
参考(ネタバレ注意)
https://www.quora.com/How-can-I-print-1-to-100-in-C%2B%2B-without-a-loop-goto-or-recursion
- 418 :
- >>417 Squeak/Pharo Smalltalk
1000 / 999 squared asScaledDecimal: 300
"=> 0.001002003004005006007008009010
011012013014015016017018019020
<snip>
081082083084085086087088089090
091092093094095096097098099100s300 "
- 419 :
- >>417
Kotlin スクリプト
こういうのアリか?
println((1..100).joinToString())
- 420 :
- >>417
pythonなら超簡単に書けそう。
俺は書かないけど。
- 421 :
- >>417 Common Lisp
https://ideone.com/R6x9iB
- 422 :
- >>417 そもそもなんのためにこんな小汚いコーディングしてるのか理解不能。 >>417 の出題者の目的はなんだ?
Python for loop 無しというルールがわからん
これはループしてないだろ?
print( [i for i in range(1,101) ] )
- 423 :
- パズルとか頓智とかゴルフとかそういう系統でしょ
あなたにはおそらく今後5年間は理解できそうにないからわざわざ首を突っ込まなくていいんじゃない?
それとそのコードだとforを使ってることになるからダメだよ
「なんでダメなの?」と聞かれてもその手の遊びを本当に理解できない物体がいるのでコミュニケーション不可能だから答える必要はない
- 424 :
- printで1から100まで出力したらダメですかw
- 425 :
- >>424
別にいいけど、受けないとわかってるギャグを言う時と同じくらい恥ずかしいと感じるんじゃないかな
- 426 :
- >>423 ま、いいけどさ、for という言葉が嫌いなら
>>417 Python
print(list(range(1,101)))
結果
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]
- 427 :
- rangeもダメです
- 428 :
- >>397
2分46秒で答えが出た。このくらいで答えが出るはいいお題。
- 429 :
- >>427 何なら良いんだよ。まさかgoto 文以外はダメだとか言わないだろうな。
もう一度聞くが、for と range 以外なら良いのか?
- 430 :
- >>429
じゃあrangeは良いです
- 431 :
- >>417 >>427 >>419 kotlin と、>>421 commonLisp もダメなんだな?
とにかく自動生成される数列は許さないんだろ?
かつループも、再帰コールも、goto も使うなと。
やーめた。
- 432 :
- >>417 Perl5
print "@{[1..100]}\n";
実行結果
$ perl 14_417.pl
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
89 90 91 92 93 94 95 96 97 98 99 100
- 433 :
- https://ideone.com/sjWw95
>>417
見よ、この土方力を。
趣旨からしてこういうことだよね。
汎用性つらぽよ。
- 434 :
- 言い訳するんやったら、ループじゃなくて、掛け算です。
と、言ってみる。
- 435 :
- >>431
ダメってことはないけど「お!」って思わせる意外さや面白さはないよね?
>>417は「およそ誰もが最初に思いつく方法(つまりループ等)以外で
1から100までを表示するコードをひねくり出してみてください」
という知性やユーモアを問うゲーム
- 436 :
- >>417 R
cat(1:100)
- 437 :
- クソ問出しといて面白い回答でオレ様を感心させろとか言う厚顔無恥なクズ
- 438 :
- >>417
bash
echo {1..100}
- 439 :
- だから言ったじゃん
その手のユーモアを全く理解できない物体がいて、そいつらとはコミュニケーション不可能だ、って
わざわざ首を突っ込んできてクソ呼ばわり、害悪そのものだ
「理解不可能」「出題者の目的」「ルールが分からん」と三拍子揃ってるからコミュニケーション不可能の異質な生物だと思った方がいい
for rangeのを出して来て「ループしてないだろ?」と聞く時点でもはやコミュニケーション不可能、価値感が根本から違う
表面だけは人間の姿形をしてるが中身は全然違う物体で、そいつらとはコミュニケーションや意志疎通は出来ない
絶望的に話が合わないし価値感も全く違うので、人語を解するコミュニケーション不可能な人型生物、程度に見ておいた方がいい
- 440 :
- おだいじに
- 441 :
- >>415
好きな端末でいいよ。
- 442 :
- >>417 Brainfuck
https://ideone.com/AOy5TP
あからさまなコピペ
- 443 :
- >>417 javascript
console.log(Array.from({length:100},(_,i)=>i+1).join`\n`)
- 444 :
- >>408
一席いくら?
- 445 :
- >>444
200円(税込)
- 446 :
- >>417
Java
https://paiza.io/projects/S3ZKNQZ3Qf7Ga24YCGTJrQ
- 447 :
- >>388
a^n-b^nの因数分解を眺めていたらnが素数の時はa-bの項しかないようだ。そして項数が素数になっている。
- 448 :
- >>446
再帰…
- 449 :
- Javaって言語は、一体何のために作られたのか…
- 450 :
- >>433
そのコードを見て1から100までを表示するプログラムだと
仕様を解釈するのは困難、
何のためにコードを書いてるのか意義が…
ドカタから脱却しなよ
- 451 :
- >>417
Kotlin
https://paiza.io/projects/KZhyXLlN2KP7UUVWCPOcwA
ループはしていない。
- 452 :
- >>417 phi
print(oneToHundredSeparatedBySpace())
- 453 :
- >>417 PHP
1
0999999999988888888887777777777666666666655555555554444444444333333333322222222221111111111
0987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654354321
縦書きなので右から左へ。
- 454 :
- >>450
何のためにって、お題に対して面白い解き方をするコードを挙げているのだから、コードから仕様を解釈するのが困難だなんて指摘は的外れだろうよ
- 455 :
- >>450
ドカタはお前やwww
- 456 :
- >>417
スクリプトか、それに準ずる文法持ってる言語有利やな。
Haskell
main = print [1..100]
それは1ー100のリストやろ言うなら
main = mapM print [1..100]
とか改行無しなら
main = mapM (putStr.show) [1..100]
“,”で区切れデコ助野郎言うなら
main = (putStrLn.init.concat.map ((++ ",").show)) [1..100]
- 457 :
- mapは実質ループ処理やろ…
- 458 :
- mapはダメです
- 459 :
- >>450
書いた人間だけど。
5個表示するのが5個あったら25個表示出来て、それを4個並べて100個!
完璧な作戦じゃないですか!!!!遂行するのが不可能ということもない。
5*5*4=100!!
- 460 :
- >>417 はループ禁止とか言いながら、プログラムの外でループしてるだけのプログラムじゃないか。
プログラムにループかなくて繰り返しなんてあり得ない事がわからないバカなんだろうな。
- 461 :
- 屁理屈の応酬が見たかったんだろうけどね。
- 462 :
- そういう意味ではソフトから見て最小単位であるアセンブラのブロック転送命令もマイクロコードでループしてるわね。
と言う訳で、解なしが正解かな?
- 463 :
- あからさまなループ禁止でループ完全な禁止じゃないでしょそもそも
- 464 :
- こんなドカタの力仕事の訓練しても何にもならない、こんなので楽しめるなんて ドM だろ。
綺麗なプログラムは許さない。できるだけ小汚いプログラムしかダメ。 いかに小汚くプログラム出来るかのコンテストです。
>>463 屁理屈だな。map や range などは明らかなループじゃないだろ。 明らかなループってなんだ?
1行で書かれた綺麗なプログラムは許しませんと言えよ。
- 465 :
- 人の持つ適度さっていうのを裁量してるともとれるし。
- 466 :
- mapだめって言ってるのが出題者どうかもわかんねえじゃん
あと解きたくないなら解きたくないでいいしほっとけばいい
曖昧だと思うなら質問すればいい
あと訓練するためのスレでもない
- 467 :
- じゃあmapは良いです
- 468 :
- >>464
ドカタはダメです
- 469 :
- クソ問。
- 470 :
- >>466 出題者は聞いたって答えないじゃんか。 ま、クソ問題でしかない。
- 471 :
- >>457
あからさまの定義は何?
map内部でループ使ってるからダメってなら、printf内部でループ使ってたらダメって言ってるのと一緒じゃん。
Haskell
main = sequence_ [print x | x <- [1..100]]
- 472 :
- >>471 1行で書けるものは嫌いなんだってさ。
[1..100] なんて大っ嫌いだってさ。 自動生成される数字は全て反則だって。
- 473 :
- 一応、どの辺がプリミティブかっていうのはあると思うぞ。
オブジェクト指向と手続き型と関数型で均質なプリミティブとはいったい・・・。
ごごご・・・...,,,
- 474 :
- >>417 Common Lisp
https://ideone.com/s6cgBp
こちらからの移植
http://blog.practical-scheme.net/shiro/20190620-print-100
- 475 :
- >>474 よう解らんけど、それらはループの塊らしいよ。
要はプログラムの中で完結してる解は、全てループが入ってるはず。
- 476 :
- プログラムの外でループさせろという趣旨の問題じゃないのかな?
- 477 :
- >>428
試算プログラムでは40秒でした
個人的には ideone で実行結果まで出るくらいには高速化したいと思っています、ある程度高速化した上でのこの要求はかなり厳しいです
- 478 :
- >>475
ん、そんなことは誰もいっとらんとおもうけど?
shiroさんの解、良いじゃないか!
rangeはさておき、rangeをmapしてたらそれはもうループ処理だろう…
- 479 :
- お題:犬作りましょう。(自由回答)
サンプル:https://ideone.com/jimp7B
人口無能・ドッグを作りましょう。
どこまで作りこむかはあなた次第。
なるべくビジュアライズして見せられるようにすると高得点です。
おひとついかがですか?
- 480 :
- >>417 JavaScript
var n=1,t=setInterval(function(){console.log(n++);if(n>100){clearInterval(t);}},0);
>>451をJavaScriptで書き換えてみたけど明らかにループでしょこれ
- 481 :
- >>474 がループだとか難癖つけてる土方は
このコードが何やってんのか理解出来てんの?
- 482 :
- >>417
Java
https://paiza.io/projects/j6GOkwedFZ350XHeow1w-w
- 483 :
- >>481 出題者がループの定義をしていないんだから解らんよ。
format もループといえばループだろ。 繰り返しが入ってるものは全てループ。
- 484 :
- いやいやformatはループじゃないだろ、頭湧いてるのか
- 485 :
- 出題者か外野か知らないけど、ループの定義に拘ってこれはループだとかいうのはほっとけばいいんじゃないか?
そいつらの解釈なんか気にするより、他の誰かが見て感心や納得させられるような物を思い付いたら挙げてみた方が面白い。
- 486 :
- >>483
やっていることを理解できているかを問われているのにそれじゃ答えになってないよ
それともformatしかわからなかったという敗北宣言?
- 487 :
- >>388,397,477 Java
https://ideone.com/6VdAiU
あー、適当に分割しながら探索したらideone余裕だったわ
6通りは無理だがw
- 488 :
- >>428
制約論理プログラムやデーモン型ソルバー使うと短く書けて面白い。
QR = (CSint **)malloc(STP * sizeof(CSint *));
for(i = 0; i < STP; i++){
QR[i] = cs_createCSint(1, DMIN);
}
xcost = cs_createCSint(1, XMAX);
CSint *sub[STP/2], *add[STP/2], *add1[STP/2];
for(i = 0; i < STP/2; i++) {
sub[i] = cs_Sub(QR[2*i], QR[2*i+1]);
add[i] = cs_Add(QR[2*i], QR[2*i+1]);
add1[i] = cs_Sub(cs_Mul(add[i], add[i]), cs_Mul(QR[2*i], QR[2*i+1]));
cs_Eq(cs_Mul(sub[i], add1[i]), xcost);
cs_GT(sub[i], 0);
}
for(i = 0; i < STP/2 - 1; i++) {
cs_Gt(sub[i], sub[i+1]);
cs_Lt(add1[i], add1[i+1]);
}
cs_AllNeq(&QR[0], STP);
cs_minimize(&QR[0], STP, cs_findFreeVarNbElements, xcost, cost_printSolution);
- 489 :
- >>417
Java
https://paiza.io/projects/Sb2icsTDEFMvTmepiS26Iw
- 490 :
- >>417
書き込み制限で途中改行入れたが、もうこれが正解で良いんじゃね?
prinft("1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 "
"51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100");
- 491 :
- それも正解でしょ
書くのめんどくさいだけで
- 492 :
- >>417 Common Lisp
https://code.hackerearth.com/24a420r
- 493 :
- >書くのめんどくさい
え?
- 494 :
- 写経のように一文字一文字手で入力する事が大切なのです。
- 495 :
- >>417
再帰、ループ、ループ代わりに使う関数使用禁止だと、
副作用前提なのでファイルやGUI部品(テキストボックスなど)とやり取りするしかない。
Haskell
import System.Exit
import System.Process
-- Windows ver. is String "notloop"(compile source file "notloop.hs)
main = f >> system "./notloop"
f = readFile "count.txt" >>= f'
where
f' "101" = exitWith ExitSuccess
f' n | n == "1\n" = putStr n >> wf n
f' n = putStrLn n >> wf n
wf = writeFile "count.txt".show.(+1).read
ただ、そうなると外と内で相互再帰してるみたいな感覚を覚える。
main = f1 1
f1 101 = return ()
f1 n = print n >> f2 (n + 1)
f2 n = print n >> f1 (n + 1)
- 496 :
- モナドはダメです
- 497 :
- #!/bin/sh
echo '1から100まで入力してください。'
read n
echo $n
- 498 :
- >>417
屁理屈ではあるが、自分自身を呼び出すのでは無く、
別の関数の引数に渡しているので厳密には再帰では無い。
かと言って相互再帰でも無い。
Haskell
main = f 1
f = fa f
fa _ 101 = return ()
fa fb n = print n >> fb (n + 1)
- 499 :
- >>492
姑息な!(褒め
- 500 :
- >>498
何にしてもインクリメントしてる時点でループ的な繰り返しを期待しているわけだから
まあ負けだよね(負けでも面白くはできる。為念)
- 501 :
- >>500 兄ちゃん、それ言っちゃ終しめーよ。
- 502 :
- >>500
>>417のネタバレ見ても6個中5個はインクリメントかデクリメント使ってるんだが。。。
・再帰は使ってない
・関数faも、fa (print.even) 1とすると
1
True(2は偶数なのでTrue)
と表示して終わるだけなので、それ単体ではmapの様なループの代わりの関数では無い
・ループ命令はHaskellにそもそも無い
十分条件は充してる。
- 503 :
- 必死だなでも負けは負けだそして何より面白さが皆無なのが致命的
厳密には再帰ではないが実質再帰と同じ効果を狙ってんだろ
それ以前に自身も屁理屈だといっちゃってる時点で、語るに落ちてるよ
- 504 :
- ここでは何か戦いが行われていたのか?
- 505 :
- 日本語が読めない人との戦いが長らく続いてる
- 506 :
- >>417
#!/bin/sh
echo '1から100まで'
- 507 :
- >>506 正解
- 508 :
- やられた
- 509 :
- くだらない
- 510 :
- くだらない
- 511 :
- 出題からしてくだらない
- 512 :
- お題:プログラミングのお題が与えられるので、それに対する解答を回答するプログラ厶を作りなさい。
- 513 :
- >>512 Perl5
%h = ('プログラミングのお題' => 'それに対する解答');
while (<>) {
chomp;
$a = $h{$_};
print $a ? "$a\n" : "しらんがな…(´・ω・`)ショボーン\n";
}
実行例
$ echo プログラミングのお題 | perl 14_512.pl
それに対する解答
~ $ echo たわけ | perl 14_512.pl
しらんがな…(´・ω・`)ショボーン
~ $ echo たいがいにせいよ | perl 14_512.pl
しらんがな…(´・ω・`)ショボーン
~ $
- 514 :
- (出題者側、回答者側のいずれに問題があるにせよ)
題意が汲み取れずくだらないお題だと思うのなら
回答せずにスルーすればいいやんというのがここのルール
回答した以上は特に題意を汲み取っていない的外れな回答の場合、
相応の批判にさらされることはある程度覚悟しないと
- 515 :
- しらんがな…(´・ω・`)ショボーン
- 516 :
- お題: パソコンの中で猫をひげダンスさせよ。
- 517 :
- >>514 出題者が質問に答えずに、出題の意味も説明できずに罵声を浴びせるだけと言う態度は問題だと思うけどな。
- 518 :
- 出題者かどうかわからんのが問題だしトリでもつけとけばいいんちゃう
- 519 :
- >>516
「ひげダンス」と聞いて調べずすぐにわかる人がここに何人いるかなあ・・・
- 520 :
- >>507>>508
「このはし渡るべからず」を見た時の一休さんの気持ちが少しわかった。
- 521 :
- お題と回答
>>5 : 6 10 32 36 44
>>9 : 15 34 35 79
>>11 : 48 (78) 138-139 (140) 142 146 151 154
>>19 :
>>50, https://mevius.2ch.sc/test/read.cgi/tech/1549160513/920 : 4 85 89
https://mevius.2ch.sc/test/read.cgi/tech/1549160513/988 == >>164 : 59 61 167 169 189 192 201 202
>>90 : 95 96
>>99 :
>>200 : 214 219
>>215 : 227
>>220 : 232 240 248 256 268
>>235 : 236 237 238 239 247 249 259 342 353
>>320 : 321 323 327 330 340
>>322 : 325 328 329 331 332 339 341 358 359
>>362 : 367 369 370 371 374 379 380 382 414
- 522 :
- >>368 : 390
>>388 : 487 (488)
>>400 : 401
>>408 :
>>417 : 418 419 421 426 432 433 436 438 442 446 451 452 456 471 474 480 482 489 492 495 498
>>479 :
- 523 :
- >>417
#pragma INTERRUPT int00
static int i = 0;
void int00(void)
{
if( i <= 100 ){
printf("%d\n", i++ );
}
}
あとは割り込みのテーブルに登録するだけ
- 524 :
- >>514
> 回答せずにスルーすればいいやんというのがここのルール
勝手にルールを作るな。
- 525 :
- >>524
別にいいやんか
- 526 :
- >>524
基本的なルールも知らん新参者はしばらくロムってろとw
- 527 :
- part6くらいからこのスレ見てるけどそんな不文律知らんぞ
- 528 :
- >>417
数値に(+1)の代わりに次の値を求めるsuccに変えるだけじゃインクリメントと同じになるので、
文字列でインクリメント相当の処理を実現してみた。
(succ 1 = 2, succ 'a' = 'b', succ False = True)
リストが全部'9'か見るのにand関数使った方が行数減らせるが、
and関数も再帰と見做せるので使わなかった。
('9'と同じ数だけ'0'を用意する処理も、リスト内包表記やlength関数が再帰やループに当たる)
Haskell
main = f "1"
f = fa f
― f n = fa f n を部分適用で見掛け上の変数を減らした
fa _ "101" = return ()
fa fb "9" = putStrLn "9" >> fb "10"
fa fb "99" = putStrLn "99" >> fb "100"
fa fb "100" = putStrLn "100" >> fb "101"
fa fb [x,'9'] = putStrLn [x,'9'] >> fb [succ x,'0']
fa fb [x,y] = putStrLn [x,y] >> fb [x,succ y]
fa fb [y] = putStrLn [y] >> fb [succ y]
- 529 :
- >>527
でまかせ
- 530 :
- >>417
bb=1;echo $bb >/tmp/gg; watch -n 0.5 "bb=\`cat /tmp/gg\`; echo \$bb; if [ \$bb -eq 100 ]; then exit; fi; bb=\$((bb+1)); echo \$bb >/tmp/gg; "
- 531 :
- >>527
では君はいままで自分がわからない問題が出題されたときは
問題にケチをつけてたのかね? そういうのやめてくれないかね
ちなみに僕はPart0のころからいるいわばこのスレの主だ
- 532 :
- >>531 自分で無視しろと言っておいて人の投稿に難癖つけるのも同じだろ。 無視してろよ。
- 533 :
- >>532
同じじゃないよ
何でもかんでも一緒にするんじゃない
ケツを出せお尻ペンペンだ!
- 534 :
- 議論を整理しよう
主の意見
・問題がわからなかったら問題が悪いと言うんじゃなくて無視しよう
木偶の坊の回答者の意見
・問題がわからなかったら問題に文句言うんだ <= これがダメ
- 535 :
- >>530
ループやな
- 536 :
- >>531
桃白白改めミスターポポ改めピラフ改めピッコロさん、いい加減にしろ
- 537 :
- >>535
あからさまではないからええんやで
- 538 :
- いいや、あからさまや
- 539 :
- >>534 問題が解らなければ出題者に聞くのがまず第一だろ。 そして出題者は質問に答える義務がある。
- 540 :
- >>537
じゃあこれはあからさま?
var n=1,t=setInterval(()=>{if(n<=100){console.log(n);n++;}else{clearInterval(t);}},0);
- 541 :
- >>540 どうでもいいんじゃない? 自分がこれで良いと思えば良いんだよ。
誰にもあからさまと言う基準は作れない。 プログラムの中のループと言えばそうなるけどな。
ただ、サンプルの中でもイベントを使う方法は載ってたからOK なんじゃないのかな。
もうどうでも良いよ。
- 542 :
- >>538
あからさまではないんや!!
>>540
それもあからさまにループしてない良いコードと言えます
- 543 :
- >>539
義務なんてない
会話の裁量はケースバイケースや
- 544 :
- >>542 何で出題者でもないお前が仕切ってるんだよ。
それともお前が出題者?
- 545 :
- >>544
我スレの神なり
- 546 :
- 議長として議論を執行する
- 547 :
- >>540
あらかさまじゃねーけど>>523の二番煎じはつまらない
- 548 :
- >>547
>>540は>>480を書き換えたコード、オリジナルは>>451、>>523の方が後なんだけど
- 549 :
- 全部のコードをいちいち見てないし、二番煎じということを指摘するには十分だろ
- 550 :
- >>545
桃白白改めミスターポポ改めピラフ改めピッコロさん、いい加減にしろ
- 551 :
- ID:PuD19qMM は多分クソみたいな出題してボロカスに叩かれたことがあるんでしょ
叩かれたこと無いって多分レスすると思うけど、きっとあるんでしょ
- 552 :
- はい、この議論今日まで〜
- 553 :
- >>388,397,409
https://mevius.2ch.sc/test/read.cgi/tech/1434079972/59
出題者想定の試算プログラムを公開します。
>>487
とっても早いですね…
- 554 :
- >>531
> ちなみに僕はPart0のころからいるいわばこのスレの主だ
明記しとけ
つかスレの主ちがうじゃん
- 555 :
- お題: サインカーブを描画せよ。
- 556 :
- >>555
VB
https://paiza.io/projects/b6D3kpi6vjqOzZl1KAH-Pw
- 557 :
- お題
1) √2 を小数点以下 1000 桁算出せよ
2) n ∈Z, 1 <= n <= 100 を与えたとき√n を小数点以下1000 桁算出せよ
- 558 :
- >>555 Squeak Smalltalk
(PolygonMorph
shapeFromPen: [:pen |
| factor |
factor := Float pi / 100.
pen place: 0@0.
0 to: 200 do: [:x | pen goto: x @ ((x * factor) sin / factor)]]
color: Color transparent
borderWidth: 2
borderColor: Color red) makeOpen; position: Display center; openInWorld
- 559 :
- >>388 Java
https://ideone.com/9d18x4
>>553
分割荒くしたらもっと早くなったよ
x=13194120658951(=2097151^3-2097150^3)以下に6通り見つからなかったが
- 560 :
- >>557 Pharo/Squeak Smalltalk
| sqrt |
sqrt := [:n :m |
| a b nDigits intDigits str |
a := 5 * n. b := 5.
nDigits := m + (intDigits := (n sqrt log + 1) asInteger )+ 1.
[:exit | [
a >= b ifTrue: [a := a - b. b := b + 10] ifFalse: [
b log > nDigits ifTrue: [exit value] ifFalse: [
a := a * 100. b := b // 10 * 100 + (b \\ 10)
]
]
] repeat] valueWithExit.
((str := b asString) first: intDigits), '.', ((str allButFirst: intDigits) first: m)
].
((1 to: 100) collect: [:n | n -> ((sqrt value: n value: 1000) contractTo: 30)]) asStringWithCr
"=> 1->'1.000000000000...0000000000000'
2->'1.414213562373...8229518488472'
3->'1.732050807568...8363954959381'
4->'2.000000000000...0000000000000'
5->'2.236067977499...0407072278724'
6->'2.449489742783...7009535324726'
7->'2.645751311064...4698120004300'
<snip>
97->'9.848857801796...5854929396030'
98->'9.899494936611...7606629419304'
99->'9.949874371066...6373124778344'
100->'10.00000000000...0000000000000' "
- 561 :
- >>553 あのさ、何か言いたいのはわかるけど、リンクくらいまともに貼ろうよ、
カンマで区切られたスレなんて俺のブラウザでは辿れないし、リンク先のページもどれがなんなのかわからないし、自分が勝手に思ってても人には伝わらないよ。
よくそんなのでプログラムの世界で生きてるね。 クビにならないことを祈るよ。
- 562 :
- >>557
bc
scale=1000
sqrt(2)
for (n = 1; n <= 100; n++) sqrt(n)
- 563 :
- >>555 Lua
prrint("∿")
- 564 :
- >>555 Python sympy
from sympy import Symbol, sin , plot
x = Symbol('x')
plot(sin(x),(x,0,10))
- 565 :
- >>555 Python numpy , matplotlib
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 100)
y = np.sin(x)
plt.plot(x, y)
- 566 :
- >>564 出力画像
https://imgur.com/D5WDUTF
- 567 :
- こっちの方が良いね
https://i.imgur.com/D5WDUTF.jpg
- 568 :
- https://light.dotup.org/uploda/light.dotup.org596741.png
>>555
C++で書いてみたよ。
画像生成は自作コード。
面クラス作ってwindows bitmap 用に書き込みした。
趣味で色キチにしてある。
- 569 :
- >>555
ChromeのURLバーに叩き込む
javascript:document.innerHTML='<svg><path d="M0 50 C 40 10 60 10 100 50 C 140 90 160 90 200 50 Z">'
スクショ
https://i.imgur.com/4jf1NdV.png
- 570 :
- だんだん難しくなるよ。
お題: 8の字曲線を描画せよ。
- 571 :
- >>570 そんな似たような問題飽きるよ。
- 572 :
- console.log('8')
- 573 :
- お題: ベルトコンベヤで左から右へチーズケーキが不定期に断続的に供給される。Aさん、Bさん、Cさんは右から順番にチーズケーキを食べる。
ただし、AさんはBさんより食べる速度が早い。BさんはCさんより食べる速度が早い。お腹一杯になるとしばらく食べられない。
これをマルチスレッドで再現せよ。
- 574 :
- >>570 Squeak Smalltalk
(PolygonMorph
shapeFromPen: [:pen |
| lemniscate factor |
lemniscate := [:θ | θ cos / (1 + θ sin squared) @ (θ sin * θ cos / (1 + θ sin squared))].
factor := 100.
pen up.
0 to: 360 do: [:deg | pen goto: (lemniscate value: deg degreesToRadians) * factor; down]]
color: Color transparent
borderWidth: 2
borderColor: Color red) position: Display center; openInWorld
"=> https://i.imgur.com/CiUeI8I.png "
- 575 :
- お題: あなたは宇宙時代の靴屋さんだ。宇宙人の足底の形状データが二次元多角形ベクトルデータとして与えられる。多角形が円に収まるように円形の靴の底を設計せよ。
- 576 :
- >>561
>自分が勝手に思ってても人には伝わらないよ。
ほう、私の記述が不十分というわけですか?
しかし、
>カンマで区切られたスレなんて俺のブラウザでは辿れないし
これは特に「アンカー」というのですよ。「アンカー」、この単語をご存知なかったのですか?
>カンマで区切られたスレなんて俺のブラウザでは辿れないし
私の専用ブラウザでは十分にたどれますよ、おま環でしょう、おま環、おま環(爆笑)
>リンク先のページもどれがなんなのかわからないし、
QZ 専用スレのことですか
そもそも専用スレを持っているということ自体が特筆に値するでしょう
あなたも専用スレを作ってみたらいい、一発で削除されますよ
それに、そこでは私は、私が何を目的に何を書いたのか一目瞭然ですね
必要にして十分とはまさにこのことでしょう
過去ログはお布施をすれば自由に取り込めます、おま環、おま環(爆笑)
>よくそんなのでプログラムの世界で生きてるね。 クビにならないことを祈るよ。
あなたが2ch で不自由な制約のもとにあるのはよくわかりました、ひとことでいってお布施が足りない、まずはお布施をすることですね
私は職業プログラマでないので、すでにプログラムの世界ではクビになっています、ついでに現在の職業もクビになりそうです…いや、ラプラス変換の部分分数展開の計算が合わなくて苦労しているのですよ
部分分数展開については、近いうちにこのスレのお題にしますよ、乞うご期待!
- 577 :
- >>570 Python sympy
from sympy import symbols , sin
from sympy.plotting import plot_parametric
t = symbols('t')
x=sin(t); y=sin(2*t)
p = plot_parametric(x, y, autoscale=True, title='8 Graph', show=False)
p.show()
https://i.imgur.com/ACefMnx.jpg
- 578 :
- ヒント: まずはど真ん中を求めよう。
- 579 :
- お題: 辞書のように頭文字を何文字か入力すると該当する単語の意味を調べられるようなシステムのことを「辞書型エキスパートシステム」と言います。
あなたの得意分野に関する辞書型エキスパートシステムを作りなさい。
例) HTML辞書システム
- 580 :
- し、式がわからねー。算数の限界。。。 グフッ。
- 581 :
- >>577
お?リサージュ使ったのか、やるなお主。
- 582 :
- 面白いシューティングゲーム作るなら、数式とグラフの知識は必須だからな。
x→yという対応によるx-yグラフがあれば、
時刻t→(x, y)という対応によるグラフもある。多分高校で習うから安心しろ。
- 583 :
- >>576 やはり思った通りの人物像だったな。 自分の勝手な思い込みで人に伝わると思ってる。
そりゃどんな所に勤めても長続きしないだろうな。 相手の事を思いながら会話しないとダメなんだよ。
自分は何も悪くない、悪いのは相手だと言うのが最大の欠点。 多分病気だと思うから一度病院に行ってみたら?
ラプラス変換なんて持ち出せば相手は黙るだろうとか思ってる馬鹿さ加減。
あんな簡単な物で躓いてるのは多分高校の数学で落ちこぼれてたんだろうな。 いや中学の算数が解っていないのかも。
計算を楽にするためにラプラス変換があるのに。
- 584 :
- トリップ付けてる人にまともな人なんているわけがないじゃないか
- 585 :
- >>583
>多分病気だと思うから一度病院に行ってみたら?
すでにして飲んでるお薬は
https://en.wikipedia.org/wiki/Chlorpromazine#/media/File:Thorazine_advert.jpg
>計算を楽にするためにラプラス変換があるのに。
浅はかな理解ですね、計算のためにラプラス変換?
馬鹿もここまでくると気の毒に思えてきます
そんな人のために次のページが構築されつつあります、誰が書いてるのかは私はしらないけど
https://ja.wikibooks.org/wiki/%E5%88%B6%E5%BE%A1%E3%81%A8%E6%8C%AF%E5%8B%95%E3%81%AE%E6%95%B0%E5%AD%A6/%E7%AC%AC%E4%B8%80%E9%A1%9E
- 586 :
- https://light.dotup.org/uploda/light.dotup.org596781.png
ギリギリ8?これ、屁理屈だわー。
- 587 :
- >>586
創意工夫はあってよし。一応合格。
- 588 :
- うえーい。
- 589 :
- あ、どっとうp死んだ。。。
- 590 :
- >>585 悪かった、本物とはさすがに思わなかった。 お大事に。
むしろこんな所にも出入りしない方が良いと思うけどな。
所で今 2ch サーバーがおかしいね。
- 591 :
- >>590
浅はかな理解ですね、そもそもここに出入りしている時点で重大な問題を孕んでいることに気がつかないとでもいうのですか?
- 592 :
- あーQZはまともに相手しないで放置すればいいよ
こいつ複素解析も知らない癖に留数定理がどうのこうのとか騙ってて
突っ込まれると「全然知りません」と開き直るような奴だからな
それに日本人じゃないらしい
- 593 :
- おそらくこいつはラプラス変換も知らない馬鹿だ
- 594 :
- >>592
懐かしいな
以前、複素数にまで拡張された指数関数が一般に多価関数になるということが解らなくて
わざわざ他の板まで行って醜態を晒してたなこいつ
- 595 :
- >>592
それは記憶違いでは?
当時「計算練習として複素関数論をやればいいのでは?」という意見に対して「留数定理は忘れた」と発言しただけですよ、実際もう忘れましたし、それにしても昔のことをよく覚えていますよね、この執念はいったいなんなんでしょうか?
>>594
このスレのお題「e^z = -1 たる z ∈C を求めよ」にてずいぶんと勉強させていただきましたが、それもこのスレだけの話で、わざわざ他のスレや他の板に行った覚えはありませんね、証拠を出せますか?
>>593
ラプラス変換の教科書に当時メモ書きした式変形ですら、もう自分でも理解できなくなっているのは認めましょう…
- 596 :
- >>595
確か数学板で聞いてただろお前
そのリンクをこのスレに貼ってたはずだから気になるなら自分で調べろ
- 597 :
- >>596
数学板でまともに質問したのは「頂を踏む」の一節
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13170327928
だけですよ、数学板に書かないわけではありませんけれどもね
- 598 :
- 知恵袋やってて草
後で通報しとくわ
- 599 :
- >>555
echo '〜'
- 600 :
- お題
7月中の、3人の空いている日のリストがあります。
3人の内、2人以上が空いている日と、名前を求めよ
A
2019/07/05
2019/07/10
2019/07/15
2019/07/20
B
2019/07/08
2019/07/10
2019/07/20
C
2019/07/15
2019/07/20
2019/07/25
- 601 :
- 日付と名前の区別ってどうすんの?
- 602 :
- 書式は、どうでも良い。
こんな感じで
2019/07/10 A B
2019/07/10, A, B
- 603 :
- Hash使うとすごく簡単にできると思うが、Hashへの値のセットをプログラム中に書こうとすると、それがそのまま答えになってしまいそうな予感w
- 604 :
- >>573 Python3.6 ideonのpython は3.5で動かないが、下の方に出力サンプルを張り付けてあるからそれを見てください。
https://ideone.com/JqcYMA
出力サンプルを少しだけここに張り付け
開店時間= 0.0
Aの取皿開始 speed=0.7 kosu=0 時刻は 0.0
Bの取皿開始 speed=1.0 kosu=0 時刻は 0.01
Cの取皿開始 speed=1.4 kosu=0 時刻は 0.02
★★マグロ が出来た時刻=0.03 作成間隔 t=0.30
Cがマグロを食った 作成時刻=0.03
★★カッパ が出来た時刻=0.33 作成間隔 t=0.10
Aがカッパを食った 作成時刻=0.33
★★ウニ が出来た時刻=0.43 作成間隔 t=0.10
★★上トロ が出来た時刻=0.53 作成間隔 t=0.10
Cがウニを食った 作成時刻=0.43
Cが満腹 休むよ 時刻=0.63
Aが上トロを食った 作成時刻=0.53
★★エンガワ が出来た時刻=0.64 作成間隔 t=0.10
★★マグロ が出来た時刻=0.74 作成間隔 t=0.10
Bがエンガワを食った 作成時刻=0.64
Bがマグロを食った 作成時刻=0.74
★★マグロ が出来た時刻=0.74 作成間隔 t=0.10
Bがエンガワを食った 作成時刻=0.64Bがマグロを食った 作成時刻=0.74
★★カッパ が出来た時刻=0.84 作成間隔 t=0.10
★★ウニ が出来た時刻=0.94 作成間隔 t=0.10
★★上トロ が出来た時刻=1.04 作成間隔 t=0.10
Aの取皿開始 speed=0.7 kosu=1 時刻は 1.11
Aがカッパを食った 作成時刻=0.84
★★エンガワ
- 605 :
- >>600 Pharo/Squeak Smalltalk
| data dic |
data := {
#A -> #('2019/07/05' '2019/07/10' '2019/07/15' '2019/07/20').
#B -> #('2019/07/08' '2019/07/10' '2019/07/20').
#C -> #('2019/07/15' '2019/07/20' '2019/07/25')
}.
dic := Dictionary new.
data do: [:assoc |
assoc value do: [:date | (dic at: date ifAbsentPut: [OrderedCollection new]) add: assoc key].
].
dic associations sort
select: [:assoc | assoc value size >= 2]
thenCollect: [:assoc | assoc value: assoc value asArray]
"=> {'2019/07/10'->#(#A #B) . '2019/07/15'->#(#A #C) . '2019/07/20'->#(#A #B #C)} "
- 606 :
- >>575
テストデータ(各自で用意すること): 長方形、星形、ハート形
- 607 :
- #!/usr/bin/env perl
use List::MoreUtils;
@A = qw( 2019/07/05 2019/07/10 2019/07/15 2019/07/20);
%A = map {$_, 1} @A;
@B = qw( 2019/07/08 2019/07/10 2019/07/20);
%B = map {$_, 1} @B;
@C = qw( 2019/07/15 2019/07/20 2019/07/25);
%C = map {$_, 1} @C;
SEARCH:
for ( List::MoreUtils::uniq (@A, @B, @C) ){
if ($A{$_} && $B{$_} && $C{$_}){
print "everyone is free at $_\n";
next SEARCH;
}
if ($A{$_} && $B{$_} ){
print "A and B is free at $_\n";
}
if ($B{$_} && $C{$_}){
print "B and C is free at $_\n";
}
if ($A{$_} && $C{$_}){
print "A and C is free at $_\n";
}
}
- 608 :
- >>605
やはり辞書型がくみこまれてる言語は綺麗だね
数が増えたときでも問題ないかんじ
- 609 :
- ハート型って多角形だったのかー
こらノーベル賞ものの発見だな!
- 610 :
- タイポ
辞書型ではなく 集合型だ
- 611 :
- >>600
>607はあまりにも酷かったので、修正
#!/usr/bin/env perl
use List::MoreUtils;
@A = qw( 2019/07/05 2019/07/10 2019/07/15 2019/07/20 );
%A = map {$_, A} @A;
@B = qw( 2019/07/08 2019/07/10 2019/07/20 );
%B = map {$_, B} @B;
@C = qw( 2019/07/15 2019/07/20 2019/07/25 );
%C = map {$_, C} @C;
for $date ( List::MoreUtils::uniq (@A, @B, @C) ){
for $someone_is_free_at (\%A, \%B, \%C){
push(@free_men, $$someone_is_free_at{$date}) if $$someone_is_free_at{$date};
}
print "@free_men are free at $date\n" if (@free_men > 1);
@free_men = ();
}
出力
A B are free at 2019/07/10
A C are free at 2019/07/15
A B C are free at 2019/07/20
- 612 :
- ユーチューブのおかげで誰でも動画を投稿してお金を稼げる時代になった。
自分のアイデアをvisualizeし、面白い動画にして投稿すれば、収益化できる。
プログラミングをマルチメディアやGUIに対応させることは当たり前。
あなたもテック系ユーチューバーになろう。
動画は変化する静止画の連続であり、スクリーンショットで一枚一枚画像を撮ってテキトーなツールでつなげれば動画に出来る。
- 613 :
- >>600
https://ideone.com/wTvm0s
C++。オレ、あほになってるなぁ。それとDataTime欲しい。
- 614 :
- >>612
手頃で簡単な動画コンテナ知らない?
AVIのフォーマット調べたらRIFF吐かないといけなくて、そこからかよ!って感じだった。
- 615 :
- お題: あみだくじを解け。n本の縦線を上下に平行に引き、上から順番に二つの縦線を結ぶ形でいくつかm本の横線を引く。下側の縦線の端の一つにゴールを設定するとき、あみだくじの
ルールに従ってゴールに到達する縦線の端のスタート地点を求めよ。
- 616 :
- >>614
連番でビットマップ吐けばフリーソフトでつなげられるだろよ。
- 617 :
- >>616
そうなるか。ふむふむ。
- 618 :
- >>616 おいこら、出題ペースが早すぎるぞ。解答もほとんど出ていない状態で次のなんて出すなよ。
- 619 :
- >>611
日付に対する前置詞はonだぞ
- 620 :
- >>619
thanks
- 621 :
- 面白い動画たーくさん作って早く労働者階級を卒業しよっぜ。
- 622 :
- >>573 Pharo Smalltalk
http://ws.stfx.eu/FWYMKVTGYK60
- 623 :
- 多角形の問題は、最小包含円問題というらしい。
- 624 :
- >>575 >>623 それって、>>11 の入口問題だな。 俺も>>11 関連で知ったが、最小包含円って言葉は、このスレで何度か出てきてるぞ、
具体的な宇宙人の足跡データが、>>11 として最小包含円を求めよとした方がより具体的だな。 いくつか答えが出てるけど。
具体的なデーターを示さないと答えがバラバラになるぞ。 蟻人間の問題ってあやふやなのが多いな。
- 625 :
- >>600 Perl5
@a = map{sprintf"2019/07/%02d",$_} 1..31;
$h{$_}{A}=1 for qw{2019/07/05 2019/07/10 2019/07/15 2019/07/20};
$h{$_}{B}=1 for qw{2019/07/08 2019/07/10 2019/07/20};
$h{$_}{C}=1 for qw{2019/07/15 2019/07/20 2019/07/25};
@b = grep{1<keys %{$h{$_}}} @a;
print "$_ @{[keys %h{$_}]}\n" for @b;
実行結果
~ $ perl 14_600.pl
keys on reference is experimental at 14_600.pl line 6.
2019/07/10 B A
2019/07/15 C A
2019/07/20 B A C
- 626 :
- >>615
n=3
m=5
として横線は
(0, 1)
(1, 2)
(1, 2)
(0, 1)
(1, 2)
としよう。
- 627 :
- >>625 スマソ「keys on reference is experimental at 14_600.pl line 6.」が出ちゃってた…orz
>>600 Perl5 チョット修正
@a = map{sprintf"2019/07/%02d",$_} 1..31;
$h{$_}{A}=1 for qw{2019/07/05 2019/07/10 2019/07/15 2019/07/20};
$h{$_}{B}=1 for qw{2019/07/08 2019/07/10 2019/07/20};
$h{$_}{C}=1 for qw{2019/07/15 2019/07/20 2019/07/25};
@b = grep{1<keys %{$h{$_}}} @a;
print "$_ @{[keys %{$h{$_}}]}\n" for @b;
実行結果
~ $ perl 14_600.pl
2019/07/10 B A
2019/07/15 A C
2019/07/20 B C A
- 628 :
- 日本とゐう国は労使から朽ちていつたんだなあ。
- 629 :
- >>628
旧仮名なら「日本と云(い)ふ」だろボケカス
- 630 :
- >>555 Lua
prrint("ん")
- 631 :
- >>555
さて、そろそろわしの出番のようぢゃな。
#!/bin/sh
echo 'サインカーブ'
- 632 :
- 整数が複数与えられて、そのうちの5つの積が最大になるものってどうやって選べばいいの?
絶対数でソートしても、負数が奇数個だとマイナスだし頭がこんがらがる
- 633 :
- 正数の大きい方から5個
正数の大きい方から3個と負数の絶対数の大きい方から2個
正数の大きい方から1個と負数の絶対数の大きい方から4個
で比較すれば?
- 634 :
- 別に正数とか負数とか気にしないでも良いか
ソートして、上から5個 上から3個と下から2個 上から1個と下から4個 の中で最大のものを選べば
- 635 :
- >>634
全て負の値の場合は?
それと気になるのが0。
- 636 :
- 古典的スタートレックゲーム
言語はなんでもよし
- 637 :
- >>632
思考停止して全パターン出して最大値を取る。
あえて5個以下だとエラー。
対策するなら関数fで長さが5個以下か判定すれば良い。
昔、似た様な問題でリスト内包表記と再帰を組み合わせて、
スマートな方法を誰か書いてたの見たけど忘れた。
Haskell
main = f [(-1),4,(-2),1,3,2]
f xs = maximum [product [a,b,c,d,e]|
a <- xs, b <- xs, c <- xs, d <- xs, e <- xs,
a /= b, a /= c, a /= d, a /= e, b /= c, b/= d, b /= e, c /= d, c /= e, d /= e]
- 638 :
- >>637 おいおい、いくつの中から5個取り出すかわからないんだぞ。 100000個の中から5個取り出すと結構な時間がかかるだろ。
どんだけの組み合わせになるんだよ。
- 639 :
- >>638
だから思考停止っって書いてるんよ^^;
- 640 :
- >>632
Listモジュールに関数あった。。。
Haskell
import Data.List
main = print $ f [(-1),4,(-2),1,3,2]
f = maximum.map product.permutations
- 641 :
- 全部負なら、必ず答えも負になるんだから選ぶのは上から5個で良くないか
つまり634で合ってると思う
0も問題無いな、どこにあっても網羅されてる
- 642 :
- >>600
perl5 ワンライナー
perl -ne 'if(/^(.*?),(.*)$/){$d{$2}{$1}=1}END{for(sort keys%d){if(keys%{$d{$_}}>=2){print"$_ ".join(",",sort keys%{$d{$_}})."\n"}}}'
入力
A,2019/07/05
A,2019/07/10
A,2019/07/15
A,2019/07/20
B,2019/07/08
B,2019/07/10
B,2019/07/20
C,2019/07/15
C,2019/07/20
C,2019/07/25
出力
2019/07/10 A,B
2019/07/15 A,C
2019/07/20 A,B,C
- 643 :
- >>635
oh...全て負の場合は数値が大きい方(絶対値が小さい方)から5個だな
- 644 :
- と、それは上から5個か…寝起き死んでるww
- 645 :
- >>637
試した限りじゃ上手く動いてる。
もっとスマートな書き方出来ないものか。。。
Haskell
import Data.List
main = (print.f) [9,(-5),3,2,1,8,(-4)]
f xs |(odd.length) b && (length.filter (<0)) xs > 1 =
promax
((map snd.f') a ++ (map snd.take (5 - (length.f') a)) b')
((map snd.take 5.abslst) xs)
where
a = (filter ((>=0).snd).take 5.abslst) xs
a' = (filter ((>=0).snd).abslst) xs
b = (filter ((< 0).snd).take 5.abslst) xs
b' = (filter ((< 0).snd).abslst) xs
f' xs |length a > length b = init xs
f' _ = (take (5 - (length.init) b)) a'
f xs = promax ((take 5.reverse.sort) xs) ((map snd.take 5.abslst) xs)
promax xs ys |product xs > product ys = xs
promax _ ys = ys
abslst xs = reverse.sort $ zip (map abs xs) xs
- 646 :
- promax xs ys |product xs > product ys = xs
promax _ ys = ys
abslst xs = reverse.sort $ zip (map abs xs) xs
- 647 :
- だれかあみだくじ解けない?
- 648 :
- I can, but I won't.
- 649 :
- >>632 Sqeueak Smalltalk
| data stream selection set numNegs |
data := #(9 -5 -3 2 1 8 -4).
stream := ((data copyWithout: 0) sortBy: #abs descending) readStream.
set := Set with: (selection := (stream next: 5) asArray).
numNegs := selection count: #negative.
(numNegs > 0 and: [numNegs odd]) ifTrue: [
| nextNeg nextPos lastPosIdx lastNegIdx |
nextNeg := nextPos := nil.
lastPosIdx := selection findLast: #positive.
lastNegIdx := selection findLast: #negative.
[(nextNeg isNil or: [nextPos isNil]) and: [stream atEnd not]] whileTrue: [
| next |
next := stream next.
(lastPosIdx > 0 and: [nextNeg isNil] and: [next negative])
ifTrue: [set add: (selection copyWithoutIndex: lastPosIdx), {nextNeg := next}].
(lastNegIdx > 0 and: [nextPos isNil] and: [next positive])
ifTrue: [set add: (selection copyWithoutIndex: lastNegIdx), {nextPos :=next}]
].
].
set detectMax: [:xs | xs reduce: #*]
"=> #(9 8 -5 -4 2) "
Pharo Smalltalk版 → http://ws.stfx.eu/OK6PHG96QEY8
- 650 :
- >>632 haskell
import Data.List
f xs = if length xs < 5 then undefined else (maximumBy(\ x y ->compare(product x)(product y))$zipWith(++)(reverse.inits.(take 5).reverse.sort$xs)(inits.(take 5).sort$xs))
f [9,-5,-3,2,1,8,-4]
-- > [9,8,2,-5,-4]
- 651 :
- お題: Hello, World!が入力されるのでHelloとWorldを入れ替えて表示せよ
- 652 :
- あまりにも簡単すぎる問題は控えて欲しいな、たまになら休憩として良いけど。
- 653 :
- printed("World, Hello!");
- 654 :
- >>651 Perl5 簡単だけれども、解いてみた
<>=~/(\w+)(\W+)(\w+)(\W+)/;
print "$3$2$1$4\n";
実行結果
~ $ echo 'Hello, World!' | perl 14_651.pl
World, Hello!
※英単語部は任意です
- 655 :
- お題:全単射を満足する最小桁数を求める
任意の整数域(-10000..10000とか)を引数とする単調増加/減少関数f(x)に対して、
その計算結果を有効数字n桁で丸めたものをy=round(f(x), n)とする。
xとyの関係が全単射になる(異なるxに対して、同じyにならない事)
最小のnを求めよ。
ttps://ja.wikipedia.org/wiki/%E5%85%A8%E5%8D%98%E5%B0%84
xの値域及びf(x)は回答者が適切と思われるものでよい。
- 656 :
- fは2^N → Rでいいの?
2^Nは自然数の冪集合ね
てか括弧内で全射が無視されてんのが謎
- 657 :
- echo Hello, World! | perl -pe 's/ (\w+) , \N{SPACE} (\w+) ! /$2, $1!/x'
World, Hello!
- 658 :
- イプシロン間際。
- 659 :
- >>656
f(x)=x/1e4+42 但し xは整数で x∈[-10000, 10000]
とかの、もっと単純なヤツです(この例だとn=6)。
f(x)=10^x
とかだと、n=1なのは自明だし、
f(x)=c 但し cは任意の実定数
とかだと解は存在しないので、これらは除外して下さい。
- 660 :
- >>659
任意の整数域を定義域とする関数に、なんで整数渡してんの?
- 661 :
- お題
与えられた画像ファイルを
適当なサイズに縮小・拡大
しモノクローム画像に変換
しアスキーアートに変換す
る
- 662 :
- ss = "Hello, World!".split(', ')
print( f'{ss[1]}, {ss[0]}' )
# World!, Hello
- 663 :
- split のたぐいだと ! の位置がおかしなことになるんだよな
- 664 :
- >>663 おかしいかどうか知らんよ。 問題が細かな事を言っていないんだから。
- 665 :
- >>664 悪い悪い、問題を読み直したら、単語の入れ替えだけで記号の位置はそのままというような感じだな。
- 666 :
- >>664
はあ?
> HelloとWorldを入れ替えて表示せよ
余計なことしちゃだめだろ
- 667 :
- お題と回答
>>5 : 6 10 32 36 44
>>9 : 15 34 35 79
>>11=>>575 : 48 (78) 138-139 (140) 142 146 151 154
>>19 :
>>50, https://mevius.2ch.sc/test/read.cgi/tech/1549160513/920 : 4 85 89
https://mevius.2ch.sc/test/read.cgi/tech/1549160513/988 == >>164 : 59 61 167 169 189 192 201 202
>>90 : 95 96
>>99 :
>>200 : 214 219
>>215 : 227
>>220 : 232 240 248 256 268
>>235 : 236 237 238 239 247 249 259 342 353
>>320 : 321 323 327 330 340
>>322 : 325 328 329 331 332 339 341 358 359
- 668 :
- >>362 : 367 369 370 371 374 379 380 382 414
>>368 : 390
>>388 : 487 (488) 553 559
>>400 : 401
>>408 :
>>417 : 418 419 421 426 432 433 436 438 442 446 451 452 456 471 474 480 482 489 492 495 498 528 530 540
>>479 :
>>555 : 556 558 564 565
>>557 : 560 562 568 569
>>570 : 574 577
>>573 : 604 622
>>600 : 605 607 611 613 627
>>615,626 :
>>632 : 637 640 645 649 650
- 669 :
- >>651 : 654 657 662
>>656 :
>>661 :
- 670 :
- >>669
ごめん迷惑だからそれやめて
- 671 :
- >>669 安静にしてた方が良いと思うよ。 反発のない世界で触れ合うのは良いと思うけど、2ch/2ch みたいなところに出てくると、傷つくのは目に見えてる。
みるのが楽しければ、みるだけにとどめるとか。
- 672 :
- w3m https://mevius.2ch.sc/test/read.cgi/tech/1558168409/ \
|perl -ne 'if (/^1/m){++$body};if (/^ ? \d+コメント$/m){$body=0} ; print if ($body)'\
| ./select_word_and_ancher.pl お題 \
| less
perl はこれ
https://paste.fedoraproject.org/paste/6R~aAhHAd3dYBSH0R8Dfhw
出力はこんなかんじだ
お題のレスが見れて、それにアンカしたレスが続くのを1フィールドとして
全部のお題に大してループする
https://i.imgur.com/WVCFus7.jpg
- 673 :
- 1 のテンプレを順守してればこのコードの漏れはなくなる
- 674 :
- >>667
お前個人の備忘録なんてホントにチラシの裏にでも書いとけよ
- 675 :
- >>651のお題は
> お題: Hello, World!が入力されるのでHelloとWorldを入れ替えて表示せよ
なので、Hello, World!以外が入力されたら無視するかエラーを出すのが正しいのでは?w
- 676 :
- >>675
それは過剰な設計では?
Hello, World! 以外が入力されたときにどう振舞うべきかについて >>651 には何らの記載がないので、何ら拘束されることがない
言い換えると、入力が Hello, World! 以外の場合には「どうふるまってもいい」と解釈するのが、論理学的に妥当…@だと思います
@:論理式「偽→真」=真、「偽→偽」=真からの類推です
- 677 :
- >>675
>>651は>>653で答えが出ちゃったね
- 678 :
- >>677
> お題: Hello, World!が入力されるので
とあるから入力されるまで待つ処理がない>>653は失格
- 679 :
- >>677 Lua
a,b,c,d=io.read(5,2,5,1)
print (c..b..a..d)
- 680 :
- >>679
アンカー間違えました
>>651 Lua
でした
- 681 :
- >>678
アホかお前
勝手にオリジナルルール作るなよ
- 682 :
- >>651 Common Lisp
https://ideone.com/gR5ISR
- 683 :
- お題
#1234→◆gdyb21LQTc
#abcd→◆4vxxTEcn7p
#あいうえお→◆rXz1zlMT-L
左のトリップキーから右のトリップを返すアルゴリズムを探せ
- 684 :
- >>683
$ head text hash.sedscr
==> text <==
#1234→◆gdyb21LQTc
#abcd→◆4vxxTEcn7p
#あいうえお→◆rXz1zlMT-L
左のトリップキーから右のトリップを返すアルゴリズムを探せ
==> hash.sedscr <==
s/#1234/◆gdyb21LQTc/
s/#abcd/◆4vxxTEcn7p/
s/#あいうえお/◆rXz1zlMT-L/
$ cat text | sed -f hash.sedscr
◆gdyb21LQTc→◆gdyb21LQTc
◆4vxxTEcn7p→◆4vxxTEcn7p
◆rXz1zlMT-L→◆rXz1zlMT-L
左のトリップキーから右のトリップを返すアルゴリズムを探せ
- 685 :
- >>683 Java
https://ideone.com/ulBeVb
digestは一回、charsetは二回目で当たった
- 686 :
- >>685
Magnificent !!
- 687 :
- ts
- 688 :
- >>678 Perl5(組合せ計算のモジュールはCPANにあるが言語処理系に標準で含まれるCOREモジュールではないので使わずに実装した)
@a=sort{$b<=>$a} qw{9 -5 -3 2 1 8 0 -4 -1 4 -2 1 3 2};
@b=splice @a,0,5;
splice @a,0,-4;
@c=(@b, @a); # 大きい方から5個と小さい方から4個,計最長9個
sub combi { # 組合せ
my @s;
if (my $n = shift) {
while ($n <= @_) {
my $t = shift;
push @s, map{[$t, @$_]} combi($n - 1, @_);
}
} else {
@s = ([]);
}
@s
}
@d = combi(5, @c); # 126個
use List::Util 'product';
@e = sort{$$b[0]<=>$$a[0]} map{[product(@$_), $_]} @d;
print "@{$e[0][1]} => $e[0][0]\n";
実行結果
~ $ perl 14_632.pl
9 8 4 -4 -5 => 5760
- 689 :
- >>684
アンカー間違えた >>632 宛だった…Orz
- 690 :
- >>632 Perl5 (CPANのMath::Combinatoricsモジュール使用)
use Math::Combinatorics;
use List::Util 'product';
@a=sort{$b<=>$a} qw{9 -5 -3 2 1 8 0 -4 -1 4 -2 1 3 2};
@b=splice @a,0,5;
splice @a,0,-4;
@c=(@b, @a);
@d=combine 5, @c;
@e=sort{$$b[0]<=>$$a[0]} map{[product(@$_), $_]} @d;
実行結果
~ $ perl 14_632_2.pl
9 4 8 -5 -4 => 5760
- 691 :
- >>690
最後のstatement
print "@{$e[0][1]} => $e[0][0]\n";
が抜けてた…Orz
- 692 :
- >>600
Ruby で、
require 'date'
ary_A = %w(2019/07/05 2019/07/10 2019/07/15 2019/07/20)
ary_B = %w(2019/07/08 2019/07/10 2019/07/20)
ary_C = %w(2019/07/15 2019/07/20 2019/07/25)
# 文字列の配列から、ハッシュを作る。Date#jd は、ユリウス日。整数型
def make_hash( ary, name )
ary.each_with_object( { } ) {
| str, h | h[ Date.parse( str ).jd ] = [ str, name ] }
end
# ハッシュをマージする。h_1 を上書きする。slice で、位置1 から、1つだけ
def merge_hash( h_1, h_2 )
h_1.merge!( h_2 ) { |key, v_1, v_2| v_1 + v_2.slice( 1, 1 ) }
end
hash_A = make_hash( ary_A, "A" )
hash_B = make_hash( ary_B, "B" )
hash_C = make_hash( ary_C, "C" )
merge_hash( hash_A, hash_B )
merge_hash( hash_A, hash_C )
hash_A.select { |k, v| v.length >= 3 }.sort.each { |elem|
puts elem.last.join( ", " ) }
- 693 :
- 乙
- 694 :
- >>570 Lua
prrint("(X)")
- 695 :
- >>570
exho 八
- 696 :
- お題
直線状の(配列を使った)ライフゲームがある。ルールは、
1. 両隣が生きていれば、暑苦しいので死ぬ
2. 両隣が死んでいれば、寂しいので死ぬ
3. 両隣の内、片方だけが生きていれば、生きる
4. 両端の2つについては、隣が生きていれば生きるし、隣が死んでいれば死ぬ
5. すべてのマスの状態の変更は、同時にすること
下の初期値(1 ターン目)から初めて、状態が変わらなくなるのは、何ターン目か?
nターン目と、( n + 1 )ターン目が同じなら、nターン目を答える
ただし、漏れは検証していないので、100ターンを超えたら、終了してくださいw
* は生、. は死を表す
.*...**.*.***..
- 697 :
- >>696 Pharo/Squeak Smalltalk
| map next turn |
map := '.*...**.*.***..' asArray collect: [:x | (x = $*) asBit].
next := [map allButFirst, {0} + ({0}, map allButLast) collect: [:x | (x = 1) asBit]].
turn := 1.
[map = (map := next value) or: [(turn := turn + 1) >= 100]] whileFalse.
^turn "=> 13 "
- 698 :
- >>696
https://ideone.com/Rj3O0W
C++。即死したんだけど、まちがてる?
- 699 :
- プログラムしてないけど、そういう結果になると思う。
- 700 :
- 増える条件ナインかこれ
- 701 :
- LifeGameなら生まれる条件つけないと。
- 702 :
- >>696 ruby 13ターンで全滅
life = ' .*...**.*.***.. '
puts "%4d %s" % [1, life]
100.times{|gene|
life2 = ' ' * life.size
(life.size-2).times{|i| life2[i+1] = ((life[i] == '*') ^ (life[i+2] == '*'))? '*' : '.' } # rule 1, 2, 3, 4
break if life == life2
puts "%4d %s" % [gene+2, life2]
life = life2 # rule 5
}
- 703 :
- プログラム組むまでもなく3ターンで終わりなんだけど解釈間違ってんのかな
- 704 :
- >>696 Java
https://ideone.com/8cforf
生きるってのが誕生も含める場合13ターン >>697 >>702
生きるってのが生存のみの場合3ターン >>698
ってことだな
- 705 :
- 生きるとは、新たに誕生する場合も、含めてください!
- 706 :
- ジョジョくさいセリフ
- 707 :
- 居ないときは両隣が生きていれば生まれる
(生きているときは 1. に従い死ぬ)
とかの方がいいんじゃない?
- 708 :
- >>696,705
つまりルール90の1次元セルオートマトンってことでいいのかの? (誕生無しの場合ルール18になる)
セル・オートマトン#1次元セル・オートマトン
https://ja.wikipedia.org/wiki/%E3%82%BB%E3%83%AB%E3%83%BB%E3%82%AA%E3%83%BC%E3%83%88%E3%83%9E%E3%83%88%E3%83%B3#1%E6%AC%A1%E5%85%83%E3%82%BB%E3%83%AB%E3%83%BB%E3%82%AA%E3%83%BC%E3%83%88%E3%83%9E%E3%83%88%E3%83%B3
- 709 :
- お題: コマンド「stack」を実装しなさい
stackの仕様
$ stack push hoge
で文字列hogeをスタックにプッシュする
$ stack pop
hoge
でスタックに積んだ文字列をポップする
スタックが空の場合は何も表示しない
- 710 :
- ライフゲームだけど、生まれる話は聞いてないなぁ。
主が生まれる条件書いてねー気がする。
- 711 :
- >>703
手計算したら同じく3手だった
- 712 :
- >>696,705 Perl5
sub f {
@a = map{'*' eq $_} split '', '.*...**.*.***..';
for ($t = 2; $t <= 100; $t++) {
@b = $_[0]->();
$t--, last if "@b" eq "@a";
@a = @b;
}
@a = map{$_ ? '*' : '.'} @b;
}
f(sub{$a[1], (map{$a[$_] and ($a[$_-1] xor $a[$_+1])} 1..$#a-1), $a[$#a-1]});
print "生存のみ $t: ", @a, "\n";
f(sub{$a[1], (map{$a[$_-1] xor $a[$_+1]} 1..$#a-1), $a[$#a-1]});
print "誕生あり $t: ", @a, "\n";
実行結果
~ $ perl 14_695.pl
生存のみ 3: .....**........
誕生含む 13: ...............
- 713 :
- >>712 ゴメン実行結果貼り間違えた
~ $ perl 14_695.pl
生存のみ 3: .....**........
誕生あり 13: ...............
- 714 :
- >>712 たびたびゴメン、微妙に間違えていた、この入力の場合答えは変わらないけど
sub f {
@a = map{'*' eq $_} split '', '.*...**.*.***..';
for ($t = 2; $t <= 100; $t++) {
@b = $_[0]->();
$t--, last if "@b" eq "@a";
@a = @b;
}
@a = map{$_ ? '*' : '.'} @b;
}
f(sub{map{$a[$_] and ($a[$_-1] xor $a[$_+1])} 0..$#a});
print "生存のみ $t: ", @a, "\n";
f(sub{$a[1], (map{$a[$_-1] xor $a[$_+1]} 1..$#a-1), $a[$#a-1]});
print "誕生あり $t: ", @a, "\n";
~ $ perl 14_695.pl
生存のみ 3: .....**........
誕生あり 13: ...............
- 715 :
- 公式サイトが死んで1ヶ月ぐらい立ったけどUWSC
>>696 http://codepad.org/C46guycm
>>709 http://codepad.org/QU38TKOo
- 716 :
- >>696 ruby 13ターンで全滅 (>>702 bit演算化)
life = '.*...**.*.***..'
bord = life.tr('.*','01').to_i(2)
mask = 2 ** life.size - 1
fmt = "%%0%db" % life.size
100.times{|gene|
puts "%5d %s" % [gene+1, (fmt % bord).tr('01','.*')]
bord2 = ((bord<<1)^(bord>>1)) & mask # rule 1, 2, 3, 4
break if bord == bord2
bord = bord2
}
- 717 :
- >>707
>1. 両隣が生きていれば、暑苦しいので死ぬ
これを変形して、
1a. 自マスが生きている場合、両隣が生きていれば、暑苦しいので死ぬ
1b. 自マスが死んでいる場合、両隣が生きていれば、生きる(新たに誕生する)
1c. ただし、両端の2つのマスについては、1a, 1b を適用せず、ルール4 で良い。
4. 両端の2つについては、隣が生きていれば生きるし、隣が死んでいれば死ぬ
つまり、両端の2つについては、そのマスの両隣の内、
存在しないマスを死んでいるものとして扱うと、常に、1a, 1bには該当しない
興味があれば、この変形ルールでも、やってみてください!
ただし、漏れは、どうなるのか知りませんがw
>>708
確かに、ルール90 と同じです
- 718 :
- 【7ピンN枚の河内塔の最短手順問題】
初期状態では帽子はピン0
にあり、ピン6にすべて移す
までの最小手順の回数を求める
例:
N=3 5回
0->4
0->5
0->6
5->6
4->6
- 719 :
- >>717 ruby 63ターン以降2周期ループ(62,63,62,63,,,)
life = '.*...**.*.***..'
bord = life.tr('.*','01').to_i(2)
mask = 2 ** life.size - 1
fmt = "%%0%db" % life.size
bords = {bord=>true}
100.times{|gene|
puts "%5d %s" % [gene+1, (fmt % bord).tr('01','.*')]
bord2 = (bord<<1 ^ bord>>1 | bord<<1 & bord>>1 & ~bord) & mask # rule >>707, >>717
break if bords[bord2]
bord = bord2
bords[bord] = true
}
- 720 :
- >>719
循環しましたか?
循環を発見するには、すべてのターンを記録して照合しないといけないから、大変!
- 721 :
- >>717
3a、3b は?
- 722 :
- >>721
3. 両隣の内、片方だけが生きていれば、生きる
元々、生きるには、誕生する事も含むから、3a, 3b は、必要ない
ただ、
>>707
の提案で、1a, 1b の所だけを変えてみたのが、
>>717
- 723 :
- https://ideone.com/VOwT7u
C++版改。5ターンで止まった。
ライフゲームは、ダブルバッファリング以外で作れる気がしない。
- 724 :
- #>>717 ruby # Rule を配列化。 (L C R) 3bit 0..7 の状態 >>659なら [0,1,0,1,1,0,1,0]
Rule = [0,1,0,1,1,1,1,0] # rule >>707, >>717
life = '.*...**.*.***..'
lifeBit = life.size
bord = life.tr('.*','01').to_i(2)
fmt = "%%0%db" % lifeBit
bords = {bord=>true}
100.times{|gene|
puts "%5d %s" % [gene+1, (fmt % bord).tr('01','.*')]
bord <<= 1
bord2 = 0
lifeBit.times{|bit|
bord2 |= Rule[bord & 7] << bit
bord >>= 1
}
bord = bord2
break if bords[bord]
bords[bord] = true
}
- 725 :
- >>717 Pharo/Squeak Smalltalk
| map next seq start |
map := '.*...**.*.***..' asArray collect: [:x | (x = $*) asBit].
seq := OrderedCollection with: map.
next := [ | acc |
acc := map + (map allButFirst, {0}) + ({0}, map allButLast).
((#(1 2) collect: [:x | acc collect: [:elem | (elem = x) asBit]]) * {map negated + 1. 1}) sum
].
[(start := seq indexOf: (map := next value)) > 0 or: [seq size >= 100]] whileFalse: [seq add: map].
(start = 0 or: [start = seq size]) ifTrue: [seq size] ifFalse: [start to: seq size]
"=> (62 to: 63) "
- 726 :
- >>724
s/>>659なら/>>696なら/
- 727 :
- >>723だけど間違ってたら、教えて。
今みんな何やってるのか把握してない。
- 728 :
- >>717 Perl5、5で止まる。>>721>>722の解釈違い?それともオレのBug?
%s = qw(. 0 * 1);
@a = map{$s{$_}} split '', '.*...**.*.***..';
$t = 1;
%h = ("@a" => $t);
printf "%2d: @a\n", $t;
for ($t = 2; $t <= 100; $t++) {
@b=($a[1] ? $a[0] : 0,
(map{
($a[$_-1] xor $a[$_+1]) ? $a[$_] :
(($a[$_-1] and $a[$_+1]) ? ($a[$_]?0:1) : 0)
} 1..$#a-1),
$a[-2] ? $a[-1] : 0
);
printf "%2d: @b\n", $t;
@a = @b;
$t--, last if exists $h{"@a"};
$h{"@a"} = $t;
}
@c = map{$_ ? '*' : '.'} @a;
printf "%d => @c\n", $t;
実行結果
~ $ perl 14_716.pl
1: 0 1 0 0 0 1 1 0 1 0 1 1 1 0 0
2: 0 0 0 0 0 1 1 1 0 1 1 0 1 0 0
3: 0 0 0 0 0 1 0 1 1 1 1 1 0 0 0
4: 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0
5: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0
6: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0
5 => . . . . . . * * . . . . . . .
- 729 :
- >>728
おぉ、同志。(一方通行
- 730 :
- >>718
問題がわからない。
河内塔って何?
- 731 :
- もしかしてハノイの塔かな
- 732 :
- (- (expt 2 n) 1) ぐらいの手数増加がやばいやつか
たった64枚で移し終えると世界が滅びるらしいぞw
- 733 :
- >>731
色々ググっている内に中国語で書かれたサイトで「河内塔」が見つかった。
中国語がよくわからないので何とも言えないがどうやらハノイの塔のようだ。
「河内塔(Tower of Hanoi)」と書いてある個所があり下の方にある画像は正にその説明になっている。
https://blog.csdn.net/jon_me/article/details/41986461
- 734 :
- >>727-728
>>696の3.が適用されてないんじゃ?
>>727はこんな感じ? https://ideone.com/1VOW38
- 735 :
- ベトナム語で「河内」って書いて「ハノイ」と読むんだな。ベトナムでは今は漢字使ってないけど。
https://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%8E%E3%82%A4
- 736 :
- >>734
えーっと、そのこーどだけど、死んでるセルの隣に生きてるセルがいたら生まれてるんだけどあってる?
- 737 :
- >>734
示唆してくれてありがとう。言い忘れてた。
- 738 :
- >>728
>>717
>確かに、ルール90 と同じです
wikipediaのルール90 を確認してみて
- 739 :
- うん。リンクあったら一発で書けないこともなかった。というわがまま言ってみる。
まぁ、>>734に書いてあるから、俺のタスクはないなぁ。
https://ja.wikipedia.org/wiki/%E3%82%BB%E3%83%AB%E3%83%BB%E3%82%AA%E3%83%BC%E3%83%88%E3%83%9E%E3%83%88%E3%83%B3#ルール90
- 740 :
- >>734 ご指摘ありがとう。 >>722 の
> 3. 両隣の内、片方だけが生きていれば、生きる
> 元々、生きるには、誕生する事も含むから、3a, 3b は、必要ない
を、「3.自マスが死んでいる場合、両隣の何れかでも生きていれば、生まれる。」
と言う意味と捕らえなおして、>>714を書き換えたら、63でloopしたよ。
>>717 に
>1b. 自マスが死んでいる場合、両隣が生きていれば、生きる(新たに誕生する)
と誕生条件が書いてあったので、3の条件は「生まれる」条件も含むとは考えず、
「3.両隣の内、片方だけが生きていれば、自マスが生きていれば生きる(し、死んでいれば死んだまま)。」
と解釈して >>714 を作ったのが63でloopしなかった原因だと分かった。
- 741 :
- >>717,722 Perl5
%s = qw(. 0 * 1);
@a = @a = map{$s{$_}} split '', '.*...**.*.***..';
$t = 1;
%h = ("@a" => $t);
@h = ("@a");
for ($t = 2; $t <= 100; $t++) {
@b=($a[1] ? 1 : 0,
(map{
($a[$_-1] xor $a[$_+1]) ? 1 :
(($a[$_-1] and $a[$_+1]) ? ($a[$_]?0:1) : 0)
} 1..$#a-1),
$a[-2] ? 1 : 0
);
@a = @b;
push @h, "@a";
$t--, last if exists $h{"@a"};
$h{"@a"} = $t;
}
$i = $h{"@a"};
print $_ - 1, ": $h[$_-1]\n" for $i..@h;
実行結果
~ $ perl 14_716_721.pl
61: 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
62: 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
63: 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
- 742 :
- >>717,722 Perl5、ゴメン、結果は0 1じゃなくて.*のstringで表示すべきだったので修正させていただきます
@a = split '', '.*...**.*.***..';
@h = ("@a");
@a = map{'*' eq $_ ? 1 : 0} @a;
$t = 1;
%h = ("@a" => $t);
for ($t = 2; $t <= 100; $t++) {
@b=($a[1] ? 1 : 0,
(map{
($a[$_-1] xor $a[$_+1]) ? 1 :
(($a[$_-1] and $a[$_+1]) ? ($a[$_]?0:1) : 0)
} 1..$#a-1),
$a[-2] ? 1 : 0
);
push @h, join'',map {$_ ? '*' : '.'} @b;
@a = @b;
$t--, last if exists $h{"@a"};
$h{"@a"} = $t;
}
$i = $h{"@a"};
print $_ - 1, ": $h[$_-1]\n" for $i..@h;
実行結果
~ $ perl 14_716_721.pl
61: *.*.*.*.*.*.*.*
62: .*.*.*.*.*.*.*.
63: *.*.*.*.*.*.*.*
- 743 :
- お題と回答
>>5 : 6 10 32 36 44
>>9 : 15 34 35 79
>>11=>>575 : 48 (78) 138-139 (140) 142 146 151 154
>>19 :
>>50, https://mevius.2ch.sc/test/read.cgi/tech/1549160513/920 : 4 85 89
https://mevius.2ch.sc/test/read.cgi/tech/1549160513/988 == >>164 : 59 61 167 169 189 192 201 202
>>90 : 95 96
>>99 :
>>200 : 214 219
>>215 : 227
>>220 : 232 240 248 256 268
>>235 : 236 237 238 239 247 249 259 342 353
>>320 : 321 323 327 330 340
>>322 : 325 328 329 331 332 339 341 358 359
- 744 :
- >>362 : 367 369 370 371 374 379 380 382 414
>>368 : 390
>>388 : 487 (488) 553 559
>>400 : 401
>>408 :
>>417 : 418 419 421 426 432 433 436 438 442 446 451 452 456 471 474 480 482 489 492 495 498 528 530 540
>>479 :
>>555 : 556 558 564 565
>>557 : 560 562 568 569
>>570 : 574 577
>>573 : 604 622
>>600 : 605 607 611 613 627 691
>>615,626 :
>>632 : 637 640 645 649 650 687 689-690
- 745 :
- >>651 : 654 657 662 679 682
>>655 :
>>661 :
>>683 : 685
>>696,705,717,722 : 696 697 701 703 711 713 714 715 718 722 723 724 727 740-741
>>709 : 714
>>718 :
- 746 :
- 消えろ
- 747 :
- ログ汚染が酷い
- 748 :
- だから、誕生という概念を作ると、説明が難しいから、「生死」の状態だけにした。
生死だけなら、前の状態に関係ない、前の状態と切れているから
誕生という概念を使うと、
a. 前の状態が死んでいる時と、
b. 前の状態が生きている時で、
処理が変わってくるから複雑になって、勘違いする人も出てくるから
- 749 :
- >>748
その「だから」は何につながってるのか読めない。
- 750 :
- >>748
状態が関係ないと実装の工夫のしどころが失われて面白みが半減すると思うよ
最初の何ターンかを例として示せば済むはなしだし
手元で実装を試していればなおさら何の苦もないことかと
細かい事を言うと、本当に実装を試さずに出題しているのならそれはルール違反なんだよね
(チューリングの泥沼問題回避や宿題の丸投げ防止)
- 751 :
- >>750
出題者が実装をひとつは持っておく、というのは努力目標でいいんじゃないかな?お題が面白ければ私は許容しますね
まあ自分のお題は面白くないので実装をひとつくらいは持つようにしていますが…
- 752 :
- たしかにくだらないクソ問ばかりだね。
- 753 :
- お題: 生徒の氏名、身長、体重の3つからなる複数のレコードが与えられる。氏名とBMIを左揃えのテキストの表にせよ。
単位はMKS単位系、テキストはASCIIおよび等幅フォントが使われると仮定してよい。
Tanaka Naoki 15kg 2m
Inoue Ken 280g 32cm
Akai Ryusei 1mg 3km
- 754 :
- お題: MKS単位系の単位を変換する関数またはクラスを作れ。
1kg:g
→1000g
2m:cm
→200cm
- 755 :
- 名前はテキトーに思いついたのを書いただけです。
- 756 :
- >>754
C++なら、ユーザー定義リテラルで横着できるんだけど、入力解析が嫌な感じだ。
- 757 :
- 物理シミュレーションが人間の手から離れて自由自在にならなければ、火星への仮想移住もできない。MKS単位系の計算術は重要だ。
- 758 :
- トリップ付きは大学の教養課程の知識すらない阿呆しかいないのかね
- 759 :
- 常識など切り刻むのみ。
- 760 :
- Rや糞コテ
- 761 :
- https://ideone.com/46Q0vU
物理難しすぎた。
Wikipediaを写経しようと思ったら、わからないことが多すぎる。
- 762 :
- 長さの単位、質量の単位、そして時間の単位の3つがある。これにキロ、ミリ、マイクロなどが前に付く。
変換方法は複数あり、何から何への変換方法はデータとして与えられ、それらは追加可能でなければ不便。
- 763 :
- 先生!質問です!
重さの規準は kg ですか?それとも g ですか?え?kg?おっかしーなー?kg の kって単なる接頭辞 prefix なのでは?
- 764 :
- 全部Jで統一しろハゲ共
- 765 :
- 長さ1センチの鼻毛を鉛直方向に1ニュートンの力で引っ張り、抜いたときに感じる痛みは1ハナゲ
- 766 :
- >>764
質量は J に等価交換できても長さや時間は無理なのでは?
- 767 :
- >>766
natural unitも知らねえのか
- 768 :
- タブ区切りの文字列の置換リストがあって、そのとおりにテキストファイルファイルを置換したい
そういうソフトありますか?
見つからないので自作しようとおもったけどここへ書いてみた
置換リスト例
ああああ うううう
aaaaa QQQQQ
- 769 :
- コマンドラインでGREPと置換できるソフトはあるんだけど。
DOSの文字制限と、正規表現の制限で、
置換したい文字の設定がややこしい。あと複数同時にできない。
文字を加工せずできれば便利だなと。
- 770 :
- >>768
スレ違い
- 771 :
- >>768
Perlでも使えば?文字列置換楽だよ。
- 772 :
- >>768
perl5 が最高だとおもうよ
もともとそういう分野に特化した言語だ
- 773 :
- >>767
時間や長さを J で統一することは自然単位系でもできませんね…
- 774 :
- >>768
仕様を正確に記述してください
- 775 :
- 宿題に餌を与えないでください
- 776 :
- Ruby では変換表を使って、置換できる
hash = { 'ab' => 'あ', 'xy' => 'ん' }
p re = Regexp.union( hash.keys ) #=> /ab|xy/
p "9xy9ab9xyx".gsub( re, hash )
#=> 9ん9あ9んx
gsub(pattern, hash) -> String
文字列中の pattern にマッチした部分をキーにして、hash を引いた値で置き換える
hash = {'b'=>'B', 'c'=>'C'}
p "abcabc".gsub(/[bc]/){hash[$&]} #=> "aBCaBC"
p "abcabc".gsub(/[bc]/, hash) #=> "aBCaBC"
- 777 :
- rubyの宣伝とはいえ、宿題に餌やるなら、問われている事柄に応えてやったらどうかと思う。
宣伝意識が前面に出すぎて目的を忘れるなかれ、って感じ。
- 778 :
- | \
| ('A`) ギシギシ
/ ̄ノ( ヘヘ ̄ ̄ アンアン/
- 779 :
- [ 弘前大 ]
和が406 で、最小公倍数が2,660 である、2つの整数を求めよ
答え
14 * 10 = 140
14 * 19 = 266
- 780 :
- 整数問題は脳死でこう叩く
(loop for x from 1 to 1000 do (loop for y from 1 to 1000 when (and (eq (+ x y) 406) (eq (lcm x y) 2660)) do (format t "~a ~a~%" x y)))
140 266
266 140
- 781 :
- 和が406 ですよ
1〜405 を確認すれば十分!
- 782 :
- 大学の入試問題の大半 8割ぐらいは1000までローラーすればいい
だから経験上1000やっちゃうんだよね
最適化してくなら for y from x
とかも効かすけど
3乗算決めるぐらいまでは問題ない速度が出てる(loop x(loop y(loop z
- 783 :
- >>773
完全にアホ
- 784 :
- >>782
和なんだから最適化利かすならyは406からx引けよw
- 785 :
- >>784
たしかに
全然見えてなかったw
- 786 :
- >>783
煽るだけではねえ…時間や長さを J に統一するために自然単位系がどう使えるのか書けるのですか?
- 787 :
- 壮大な話やなぁ。
その時間系に所属する人の仕事量を全部計算するんかいな??
アホだからこんなこと思うわ。
- 788 :
- 私は頭は良いのだが知識がないため君らが何を言っているのかがよくわからない。
- 789 :
- >>779
Ruby で、
require 'prime'
sum = 406 # 和
lcm = 2_660 # 最小公倍数。least common multiple
# 最大公約数。greatest common divisor
gcd = sum.gcd( lcm ) # 14
# 最大公約数で割ったもの
sum_2 = sum / gcd # 29
lcm_2 = lcm / gcd # 190
# 半分(1〜15)まで、ループする。ary は、10
ary = ( 1..( sum_2 + 1 ) / 2 ).each.select {
|num| num * ( sum_2 - num ) == lcm_2 }
# 14 * 10 = 140, 14 * 19 = 266
p gcd * ary.first, gcd * ( sum_2 - ary.first )
- 790 :
- お題、聖光学院中学校入試問題
1〜10 の10枚のカードの内、4枚を取り出して、a〜d に入れて、
下の式を満たす置き方は、何通りあるか?
( a + b ) * ( c + d ) = 100
答え、48通り
- 791 :
- >>790
C++.
総当たりでも解けるくらいの分量だわ〜〜。
https://ideone.com/bXhZp3
- 792 :
- やってから気づいたけど、forで回したほうが早いな。
それと、ネクストコンビネーションがほしいのじゃー。
- 793 :
- >>779
sum := 406, lcm := 2660
c := gcd(sum, lcm)
(c * t_-, c * t_+) = (140, 266) where t_± = (sum ± √(sum^2 -4c * lcm)) / 2c = (29 ± 9) / 2
- 794 :
- >>790
n := 10
(n / 2 - 1)_P_2 * 2^2 = 4_P_2 * 4 = 48
- 795 :
- >>779
http://coliru.stacked-crooked.com/a/b219d162366f5cd8
ワンドボックス先生がシェアを許してくれないので、適当に見繕ってきた
- 796 :
- >>794
なるほど
- 797 :
- >>790
4P4 = 12 がなかったので暗算埋め込みしてしまった
(loop with i = 0 for a from 1 to 10 do (loop for b from (1+ a) to 10 do (loop for c from (1+ b) to 10 do (loop for d from (1+ c) to 10 when (eq 100 (+ (* a b) (* c d))) do (incf i)))) finally (print (* 12 i)))
48
- 798 :
- >>569
遅レスだが
innerHTML はヤメロ
appendChild にしとけ…今回のケースでは問題にならないっちゃならないが…
- 799 :
- >>9 : 15 34 35 79
>>11=>>575 : 48 (78) 138-139 (140) 142 146 151 154
>>19 :
>>50, https://mevius.2ch.sc/test/read.cgi/tech/1549160513/920 : 4 85 89
https://mevius.2ch.sc/test/read.cgi/tech/1549160513/988 == >>164 : 59 61 167 169 189 192 201 202
>>90 : 95 96
>>99 :
>>200 : 214 219
>>215 : 227
>>220 : 232 240 248 256 268
>>235 : 236 237 238 239 247 249 259 342 353
>>320 : 321 323 327 330 340
>>322 : 325 328 329 331 332 339 341 358 359
- 800 :
- >>362 : 367 369 370 371 374 379 380 382 414
>>368 : 390
>>388 : 487 (488) 553 559
>>400 : 401
>>408 :
>>417 : 418 419 421 426 432 433 436 438 442 446 451 452 456 471 474 480 482 489 492 495 498 528 530 540
>>479 :
>>555 : 556 558 564 565
>>557 : 560 562 568 569
>>570 : 574 577
>>573 : 604 622
>>600 : 605 607 611 613 627 691
>>615,626 :
>>632 : 637 640 645 649 650 687 689-690
- 801 :
- >>651 : 654 657 662 679 682
>>655 :
>>661 :
>>683 : 685
>>696,705,717,722 : 696 697 701 703 711 713 714 715 718 722 723 724 727 740-741
>>709 : 714
>>718 :
>>753 :
>>754 : (760)
>>768 : 775
>>779 : 779 788 (792) 794
>>790 : 790 (793)
- 802 :
- まただよ(笑)
- 803 :
- 回答は容易に手繰れるのではっきり言って無用だし迷惑です
どうしてもまとめたいなら
例えば、どんな言語でどのお題に回答しているか整理したものとか付加価値を付けるべきでしょう
- 804 :
- >>803
ご意見ありがとうございます、参考にいたします
- 805 :
- >>804
前に何度も不要だ、邪魔だと指摘されたはずだが一向に改めなかったのはなぜ?
- 806 :
- コテハンだからだろ
- 807 :
- 本当にクズだよな。出す問題もゴミばかり。まるで使用済みティッシュ
- 808 :
- お題
ミニミニなパスカルの三角形を表示する
1
11
121
1331
14641
- 809 :
- 11^0
11^1
11^2
11^3
- 810 :
- >>808 Ruby
pascal = -> n {n > 0 ? [0, *pascal(n-1), 0].each_cons(2).map(&:sum) : [1]}
(0..9).map{|i| puts pascal[i].join(?\ )} # =>
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
- 811 :
- typo
pascal = -> n {n > 0 ? [0, *pascal[n - 1], 0].each_cons(2).map(&:sum) : [1]}
- 812 :
- >>808 Perl5
for (1..5) {
@a = (1, map{$a[$_] + $a[$_+1]} 0..$#a);
print @a,"\n";
}
実行結果
$ perl 14_807.pl
1
11
121
1331
14641
- 813 :
- >>808 python3
#!/usr/bin/python3
fractal_width = 19
xs = [1]
for i in range(1, fractal_width +1):
for x in xs:
print(x, "", end="") #xs sequence
print("")
xs.insert(0, 0)
xs.append(0)
xs = [ (xs[i] + xs[i +1]) for i in range(len(xs) -1)]
- 814 :
- 1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
結果はいいけどコードのほうが酷い
print(x, "", end... あたりが最悪
- 815 :
- >>808 Perl5, 無名関数のtail recursion版
use feature qw'say current_sub';
sub {
say @_;
__SUB__->(1, (map{$_[$_-1] + $_[$_]} 1..$#_), 1) if 5 > @_;
}->(1);
実行結果
$ perl 14_807.pl
1
11
121
1331
14641
※ Y-combinator版はマンドクせーので(ry
- 816 :
- >>808 Squeak Smalltalk
| pascal grow |
pascal := OrderedCollection with: #(1).
grow := [pascal add: {1}, (pascal last overlappingPairsCollect: #+), {1}].
7 timesRepeat: grow.
(pascal collect: [:each | each joinSeparatedBy: ' ']) asStringWithCr
"=>'1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1' "
- 817 :
- >>808
Java
https://paiza.io/projects/PooJUjiQ-5HxS4mEC6lCEA
- 818 :
- 時事通信は中立的でもっとも正確。朝日新聞は若干、旧民主党寄りの予想を出した。産経新聞は若干、自民党寄りの予想を出した。
それでもこの3つの分析には大差がない。東京選挙区はほぼ確定した。
当選者は自民党現職の丸川(台本がないと何を言うかわからないぶっとび女)、
自民党現職の武見(いつものハゲじじいもう5回シコシコ)、
公明党現職の山口公明党代表(誰もやりたがらない創価学会内の仕事を押し付けられているかわいそうな人)、
立憲民主党の塩村(東京で人気のいまでもオカズになるヌける熟女)、
共産党の吉良(共産党の女性アイドル、もう年だがまだまだエロオヤジに人気)、
立憲民主党の山岸(元朝日新聞政治部のメガネ、前頭ハゲ進行中)。
与党側3人当選、野党側3人当選で東京選挙区は与野党引き分け。
落選者で得票数第1位は維新の会の音喜多(東京都北区の区長選で落ちたのは悪口が書かれたせいだとして裁判で争っている最中のクズ、小池百合子都知事の元小間づかい、寄生できそうな政党につく虫)。
以上
- 819 :
- お題
年金AI化をする
設計を考えよ
どの部分を人間にしてどの部分を機械にするか
っていうだけだと思うけど
すごい初級プログラマーでも作れちゃうほど簡単じゃねと気になった
あまりにかんたんで民間年金ですでにありそうだが
- 820 :
- >>819 Ruby
nenkin = 'A PENSION'
puts nenkin.split.tap{|o| o.last.replace(o.last[x.size >> o.first.size])}.join
# => AI
- 821 :
- 入金
銀行データ紹介
入金人数と金額確認 ←入力 新規入力者の確認 人力目視
↓
出金人数と出勤額
みたいなかんじ
- 822 :2019/07/16
- >>808
Kotlin
https://paiza.io/projects/ed7oOf_rIHOgekOlUxGYSQ
うっかり普通にフォーマットして3角に出るようにしてしまった。もっと簡単に出しても良かったんだな。
2chの荒らし報告の書式対応のプログラム
Lisp Scheme Part40
OracleJDKからOpenJDKへ。OracleはJava世界に不要
WPF(.NET4.x, .NET Core) GUIプログラミング Part24
Pythonのお勉強 Part56
推薦図書/必読書のためのスレッド 83
VBScriptについて必死に話し合うスレ
【えっ】Perlに未来はあるのか?【終わり?】
(´・ω・`)人間はプログラムやがな
Prologでまったり Part5
--------------------
肴24444
【ネタスレ】中間管理録シンウチ4【小説スレ】
【GDP捏造、秘密警察】 中国 = 旧ソ連 part9【少数民族弾圧、農奴放置して軍拡】
PS4→累計677万台、Switch→累計430万台後247万台で追いつく現実
【MH4】ローペースな奴専用スレ【遅漏】
2018 F1 GP 第11戦 ドイツGP Lap2
何の影響もないよ ( ^ω^ ) ★94と愉快な仲間たち
機動戦士ガンダムバトルオペレーション2 #1108
【クソBBA】チームゲロpart9【虚言癖源蔵】
ITストラテジスト Part26
【Fラン夜露死苦】関東学院大学part33【DQNの巣窟】
【関東】昭和60年度生まれオフ【1985】
【ID梨】イラッとくる他人の行動や言葉 その57 【ID梨】
どっき!?焼豚だらけの敬老会
ついすて雑談44
【通商】日本人が知らぬ現実、今や世界は米国より中国を支持 「米国第一」のトランプ尻目に「自由貿易の盟主」自任する習近平★2
【FEH】ファイアーエムブレムヒーローズpart3201
B90W62H90、Hカップ肉感ボディが特徴のグラビアアイドル
今期のアニメはSランクがなくてまじでつまらん
名無し草☆ccsSbrg12RA☆〜くさを見る会〜
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼