プログラミングのお題スレ Part14at TECH
プログラミングのお題スレ Part14 - 暇つぶし2ch1:デフォルトの名無しさん
19/05/18 17:33:29.45 BWmpW4IF.net
プログラミングのお題スレです。
【出題と回答例】
1 名前:デフォルトの名無しさん
  お題:お題本文
2 名前:デフォルトの名無しさん
  >>1 使用言語
  回答本文
  結果がある場合はそれも
【ソースコードが長くなったら】 (オンラインでコードを実行できる)
URLリンク(ideone.com)
URLリンク(codepad.org)
URLリンク(compileonline.com)
URLリンク(rextester.com)
URLリンク(runnable.com)
URLリンク(code.hackerearth.com)
URLリンク(melpon.org)
URLリンク(paiza.io)
宿題は宿題スレがあるのでそちらへ。
※前スレ
スレリンク(tech板)

2:デフォルトの名無しさん
19/05/18 21:48:24.46 4Z6EQGT/.net
2get!

3:デフォルトの名無しさん
19/05/19 00:58:10.37 +tXYNnhs.net
#!/bin/sh
echo 1乙

4:デフォルトの名無しさん
19/05/19 01:17:58.03 nN2qvMwg.net
>>1
>>前スレ920
C
URLリンク(ideone.com)

5:デフォルトの名無しさん
19/05/19 08:48:39.78 b1S+2jBu.net
お題
1. URLエンコード
次の文字列をURLエンコード(パーセントエンコーディング)せよ。
但しURLエンコード専用ライブラリだけは使わない事。
‘日 本’
( 全角2文字の間に半角スペースが一つ入ってる.)
元の文字コードはUTF8とする。 この場合は7バイト。
パーセントエンコードとは、バイトの並びについて各バイトを「%XX」(XXは十六進法)という文字列への変換である。 バイト列への変換はライブラリを使っても良い。
正解(アルファベットは小文字も可)
%E6%97%A5%20%E6%9C%AC
2. URLデコード
1でURLエンコードされたものをURLデコードせよ。
URLデコード用ライブラリがあれば使う事。
正解 日 本

6:デフォルトの名無しさん
19/05/19 08:56:45.08 b1S+2jBu.net
>>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:デフォルトの名無しさん
19/05/19 09:25:01.68 c0f8nIXT.net
何も考えないバカはすぐに飛びつくなぁ
これお題に見せかけた課題か宿題だろw

8:デフォルトの名無しさん
19/05/19 10:51:39.18 m8K8ZuW2.net
>>7
出題者本人が回答しているだけだろ。
何も考えない以下略

9:デフォルトの名無しさん
19/05/19 11:02:33.76 zmnHcBRa.net
各桁を足し合わせたら引数で与えられた数になるものを5個返す関数を作れ。
例:
sumnum 12
> [39,48,57,66,75] <- 3 + 9 = 12, 4 + 8 = 12, 5 + 7 = 12, 6 + 6 = 12, 7 + 5 = 12

10:
19/05/19 11:57:55.37 8BTe2vpb.net
>>5
スレリンク(tech板:56番)

11:デフォルトの名無しさん
19/05/19 12:12:27.92 tgogs/mB.net
お題
(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:
19/05/19 12:20:45.20 8BTe2vpb.net
お題と回答
>>5 : >>6 >>10
>>9 :

13:デフォルトの名無しさん
19/05/19 12:21:01.79 sA5/dcdL.net
宿題スレ行けって

14:デフォルトの名無しさん
19/05/19 12:29:21.94 tgogs/mB.net
>>12 おいおい、金儲けにするんかい。 ま、金を払う人がいるなら良いが。 学生の宿題に需要があるかな?
しかしこんなところで宣伝すんな。

15:デフォルトの名無しさん
19/05/19 12:30:23.34 GWUTnTrp.net
>>9 URLリンク(ideone.com)

16:デフォルトの名無しさん
19/05/19 13:00:59.70 tgogs/mB.net
>>15 93 だけは正しいけど他は違うだろと思ったが、0を足しても結果は変わらないから詐欺に近いな。
しかしこう言う指摘は、プログラムには重要。
こう言う考え方をするなら、129 12342 なども該当するな。
あまりにも組み合わせが多すぎるから、条件をつけないとな。
問題の条件として各桁に0は含まないとしたり数字は2桁以内とするとか、答えは一番大きな数字を上から順に5つ示せとか。

17:デフォルトの名無しさん
19/05/19 13:16:39.44 tgogs/mB.net
出題するときには、答えが一意になる様にした方が良い。
回答する方も戸惑うし、正解が何かも判りづらくなる。
出来るだけ正解は少ない方が良い。 理想的には一つ。

18:
19/05/19 14:18:25.76 8BTe2vpb.net
>>14
>>12 のどこに宣伝の文言が記載されているのですか?

19:デフォルトの名無しさん
19/05/19 14:19:46.32 xtBtC84Z.net
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:デフォルトの名無しさん
19/05/19 14:36:55.39 GWUTnTrp.net
詐欺は酷くないか
要件は満たしてるし、何より解が存在する全ての値に対して正しい解を出力するだろ
sumnum 1についても対応しようとしたらこれが綺麗な解法の1つであることは疑いようもない事実のはず

21:デフォルトの名無しさん
19/05/19 14:45:53.44 GWUTnTrp.net
>>20 と思ったが俺が間違ってた
相違なる数と言われてないから、sumnum 0に対しても[0,0,0,0,0]が解を満たすわな、すまんかった

22:
19/05/19 14:47:51.69 8BTe2vpb.net
お題と回答
>>5 : >>6 >>10
>>9 : >>15
>>11:
>>19:

23:デフォルトの名無しさん
19/05/19 14:55:35.26 Ep+P2jjw.net
>>18 リンク先に書いてあるじゃん、金払えと。
>>19 さっぱりわからん。 何のための説明をしてるの? どんな問題に関係してるの?

24:デフォルトの名無しさん
19/05/19 15:06:26.05 dHqS2yoD.net
お題
ペアノの公理、及びペアノに依る加法の定義に従って 128 + 256 を計算せよ。

25:
19/05/19 15:08:58.77 8BTe2vpb.net
>>23
>リンク先に書いてあるじゃん、金払えと
根拠のないデマを流さないでください
>>12 に記載のアンカーの一つ >>10
>>10 に記載のアンカー(リンクの一つ) スレリンク(tech板:56番)
スレリンク(tech板:56番) に記載のリンクは URLリンク(ideone.com) でこれは ideone へのリンク
リンクをたどれるところのどこにも宣伝は記載していません
>>10 に記載のアンカーの一部 スレリンク(tech板)
のうち スレリンク(tech板:1番) には、ビットコインの請求が発生する手順が定義されており
その定義を満たさないものについては、特に「※本フローに従わない回答掲示についてはビットコインの請求は発生しないものとします。」と注記していますね
したがって、そもそも「金払え」とは書いてませんし、あるいは「ビットコインを払え」とすら書いていませんね

26:デフォルトの名無しさん
19/05/19 15:58:31.52 +SzmmtV9.net
>>25 だったら何で金を要求するサイトへのリンクを貼るんだよ。 ビットコインを稼ぎたいための宣伝だろ?
下心がないのなら直接 ideon のリンクを貼れば良いじゃないか。 面倒臭いし。

27:
19/05/19 16:07:32.50 8BTe2vpb.net
>>26
自分の書いたコードを一箇所に固めているだけですよ
これわりと便利で、3年前のコードなんかすっかり忘れてしまっているのを呼び出せるのです、ああ、あのとき N クイーンやったよね、とか
自分のローカルは一つのディレクトリに放り込んでいるだけだから grep でも検索困難…

28:デフォルトの名無しさん
19/05/19 16:17:53.58 +SzmmtV9.net
練習問題のコードなんて使い捨てでいいじゃない。 俺も最初の頃は記録してたけど、もうやめた。
要は必要なときに必要なコードが書けなければそれまでなんだから、最初から勉強し直しても同じ。
昔のコードを見ても自分が理解していないんだから同じ。
沢山練習した方が良い。 基本から見直す事でより理解が深くなる。

29:
19/05/19 16:51:21.34 8BTe2vpb.net
>>28
ええ、まったくの使い捨てでここ十年くらいやってますが、特定のスレに ideone/codepad のリンクを貼っていたのが、十年たってみると、当初は意図していなかった効用をもたらしてくれているんですね

30:デフォルトの名無しさん
19/05/19 18:13:20.80 CS5X1kUk.net
>>23
自己愛性パーソナリティ障害の朝鮮人は相手にすんなよ

31:デフォルトの名無しさん
19/05/19 18:40:48.30 ibH/HNzv.net
ネトウヨの相手もすんなよ

32:デフォルトの名無しさん
19/05/19 19:37:16.01 lXFYvnLZ.net
>>5 Squeak Smalltalk
'日 本' encodeForHTTP "=> '%E6%97%A5%20%E6%9C%AC' "
'%E6%97%A5%20%E6%9C%AC' unescapePercents "=> '日 本' "

33:デフォルトの名無しさん
19/05/19 20:09:21.36 b1S+2jBu.net
>>32 但しURLエンコード専用ライブラリだけは使わない事。

34:デフォルトの名無しさん
19/05/19 20:17:22.66 w9oOtt0P.net
>>9
Python3
URLリンク(ideone.com)

35:デフォルトの名無しさん
19/05/19 20:20:05.14 w9oOtt0P.net
>>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:デフォルトの名無しさん
19/05/19 20:25:29.07 iZGlVtrY.net
>>5
Java
URLリンク(paiza.io)

37:
19/05/19 20:30:36.06 8BTe2vpb.net
>>36
いいことを教えてもらいました、Java って uft-16 だけかとおもっていました…

38:デフォルトの名無しさん
19/05/19 21:30:05.06 GwAz9H1L.net
>>33
組み込みメソッドの使用禁止とかばかげてる

39:
19/05/19 21:53:11.12 8BTe2vpb.net
スレリンク(tech板:779番)
スレリンク(tech板:57番)

40:デフォルトの名無しさん
19/05/19 22:17:12.44 6fg2Xy1G.net
出禁 ID:8BTe2vpb

41:デフォルトの名無しさん
19/05/19 22:26:04.27 iE9NckHD.net
正直言ってここに出てくるお題よりAtCoderのお題の方がレベル高いよね

42:デフォルトの名無しさん
19/05/19 22:53:21.34 nN2qvMwg.net
11がマジで難しいんだけど、だれか取り組んでる?

43:
19/05/20 00:00:59.23 V0YkyU13.net
>>41
小ネタの合間にめんどくさいものがポツポツあるかと >>11 とか

44:デフォルトの名無しさん
19/05/20 02:35:31.92 8xDKheXg.net
>>5
Kotlin
URLリンク(paiza.io)

45:デフォルトの名無しさん
19/05/20 06:02:09.58 poyp5Kqc.net
漏れなんて、書き捨てのRuby のファイルが、100もある
いつも、Windows10 で、WSL, Ubuntu16.04 から、grep してる

46:デフォルトの名無しさん
19/05/20 06:44:50.41 Wdi8QIqr.net
お、ツッコミ待ちか?

47:デフォルトの名無しさん
19/05/20 07:53:09.19 oPixGX3C.net
お題
Excelのカラム名でHELLOからWORLDまで表示する

48:デフォルトの名無しさん
19/05/20 09:16:55.34 m4uUuPD/.net
>>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:デフォルトの名無しさん
19/05/20 13:11:43.52 YvmdLvGf.net
>>11 x,y座標は 0~999までの整数 辺の長さは斜めになった時は整数とは限らない。

50:デフォルトの名無しさん
19/05/20 15:10:01.16 poyp5Kqc.net
プログラミングのお題スレ Part13
スレリンク(tech板:920番)-984
前スレのランク付けの問題は、O(n^2)とかなら簡単なんだが、
ハッシュなどを使って、計算回数を少なくするのに、苦戦してる
入力データ
-6 3 9 5 3 -7
出力・ランク
2 3 5 4 3 1

51:デフォルトの名無しさん
19/05/20 18:09:47.07 paVMwW+F.net
ハッシュを使ってんのがperlのじゃねえの

52:デフォルトの名無しさん
19/05/20 19:35:06.91 SPSZRaeY.net
ランク付けならmap使うと楽、O(NlogN)が想定解

53:デフォルトの名無しさん
19/05/20 19:41:12.77 Nk0f6TzG.net
前スレの場合、みんなハッシュ(set)かソート使ってたじゃん

54:デフォルトの名無しさん
19/05/20 19:53:28.74 GKW/g8qb.net
>>53 コンパクトなコーディングはみんなほぼ同じだったね。
python smalltalk java
なんかプログラミング言語を見直しはじめたよ。
複雑にせずに根本を見つめるコーディングが出来る言語というのは素晴らしい。

55:デフォルトの名無しさん
19/05/20 19:56:03.94 jO4bupva.net
え、JAVA?

56:デフォルトの名無しさん
19/05/20 19:58:48.02 HD7QqTZv.net
>>前スレ988 Perl5
スレリンク(tech板: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:デフォルトの名無しさん
19/05/20 20:01:05.70 oKvxv21R.net
setにぶちこんで重複削除、リストにしてソートしてマップの値の方にインデックス入れて最後にそのマップ使って出して完成

58:デフォルトの名無しさん
19/05/20 20:02:09.53 oKvxv21R.net
ゆっくり書いてたら間にたくさんの書き込みが入った。
俺のことは忘れてくれ。

59:デフォルトの名無しさん
19/05/20 20:08:45.44 HD7QqTZv.net
>>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:
19/05/21 22:06:24.96 vwCWORvF.net
test

61:
19/05/21 22:14:40.60 vwCWORvF.net
>>56
スレリンク(tech板:58番)

62:
19/05/21 22:17:32.24 vwCWORvF.net
お題と回答
>>5 : 6 10 32 36 44
>>9 : 15 34 35
>>11 : 48
>>19 :
>>50, スレリンク(tech板:920番) :
スレリンク(tech板:988番) : 59 61

63:デフォルトの名無しさん
19/05/21 23:09:46.41 Arl7g85c.net
あなたが解けない C/C++/Java/C#/JavaScript の問題を有償で片付けるスレッドです

64:デフォルトの名無しさん
19/05/21 23:10:51.22 Arl7g85c.net
有償で片付けるスレッドに貼り付けるのはよろしくないね
有償で片付けてほしくて出題してるわけじゃないでしょ
問題の窃盗だよ

65:デフォルトの名無しさん
19/05/21 23:21:22.29 GF2ZpO+x.net
>>59
Perlは配列に対するexistsやdefinedは呼び出せるが振る舞いは不明確で「強く」非推奨となっているので
この場合では問題なくとも@pはリストではなく代わりにハッシュ%pを使って実装するべきだった

66:デフォルトの名無しさん
19/05/21 23:33:57.22 GF2ZpO+x.net
>>65
ハッシュにしたほうが良いのは@pじゃなくて@sの方だったわ

67:デフォルトの名無しさん
19/05/21 23:56:06.27 Jac4P34c.net
>>64
バカチョンには何を言っても無駄だと思うよ
聞く耳持たない分からず屋の馬鹿だからバカチョンなんだから

68:デフォルトの名無しさん
19/05/22 00:03:24.91 qz4w5gXY.net
>>64
>>27に理由が書かれていたが、一ヶ所に纏めておくと便利だなんてのは個人の都合であって、他の人にはわざわざ間接参照を強いることになるのだから、ほんとに身勝手な奴だと思う。
>>27
纏めておくのは他所で勝手にやれ、このスレにはコードだけを貼れよ。お前の手間なぞ知ったことではない。

69:デフォルトの名無しさん
19/05/22 00:04:37.78 I/cGK6IK.net
ネトウヨもコテハンもうぜえわ

70:デフォルトの名無しさん
19/05/22 01:11:55.55 BQdyZ7fR.net
>>62 折角まとめるんなら、回答の方も >> でリンクを貼って欲しいな。

71:デフォルトの名無しさん
19/05/22 01:20:05.57 34FbFmyD.net
>>70
それは絶対にやらないんじゃね
奴は自分のことしか考えてないから
だから自己愛
永遠に人から煙たがられる存在

72:デフォルトの名無しさん
19/05/22 01:29:50.95 BQdyZ7fR.net
>>11 は、多角形の中のドットの内外判定問題と言うのが確立されてるみたいね。
色んな方法があるみたいだが、簡単なのは、
Crossing Number Algorithm
らしい、ググってみると結構コンパクトなコード。
他も見てみたが、問題は境界線上にある点は多角形外と判定する事。
だから、そのままのロジックに手を入れないとした場合、使う側としてどう解決したら良いんだろう。
直行正方形を1ドットずつ大きくしてから回転させる?
それとも、多角形の中の多角形問題の方が適してるのかな?
この問題は結構勉強になる。 問題のイメージを掴むために、図形表示までやり始めたよ。 表示するとより楽しくなる。

73:デフォルトの名無しさん
19/05/22 01:32:14.02 BQdyZ7fR.net
>>71 そこまで悪い人間では無さそうだけどな、おだてれば猿も木に登るタイプだとみた。
高い木に登ってもらおう。

74:デフォルトの名無しさん
19/05/22 01:33:07.52 57KmKoFr.net
ググラないで考えようとしていたけど、
ヒントを目にしてしまった気分
いやべつにいいけどさ

75:デフォルトの名無しさん
19/05/22 01:34:42.74 7yGywXQG.net
Q. クソ問題とは何ですか?
A. 問題の解釈を巡って議論や煽り合いが10レス以上続く、バカが投稿した不備のある問題のことです。

76:デフォルトの名無しさん
19/05/22 04:38:05.31 qmHT8WH/.net
>>47 Ruby
("HELLO".."WORLD").each{|v| puts v}

77:デフォルトの名無しさん
19/05/22 07:31:41.79 O8fu6CiE.net
>>62
前スレ920 >>4

78:デフォルトの名無しさん
19/05/22 07:39:53.22 O8fu6CiE.net
>>72
URLリンク(dotup.org)
とりあえず図形表示。
一応内部の点は除去して、凸包を表示するような感じにしてる。
左クリックで頂点追加、右クリックで全削除、中クリックでリセット
操作しながらいろいろ検討してるけど、さっぱり思いつかない。

79:デフォルトの名無しさん
19/05/22 10:43:49.16 qmHT8WH/.net
>>9 Ruby
def sumnum(n)
(0..4).map{|i| ("1"*n +"0"*i).to_i}
end

80:デフォルトの名無しさん
19/05/22 12:02:59.73 75T3S5z+.net
>>78  
Windows じゃないと動かないようだけど見やすいようにideonに張ってみた。
URLリンク(ideone.com)
凸包と言うんだね。
2次元の凸包を求めるアルゴリズムと応用について
URLリンク(matsu7874.hatenablog.com)
凸包(convex hull)とは,与えられた点をすべて包含する最小の凸多角形(凸多面体)のこと.
--------
凸包が求められても難しいね。 凸包内の点を削除して計算時間を削減できる効果はあるかもしれないけど。

81:デフォルトの名無しさん
19/05/22 12:11:47.61 /472uU17.net
凸包が求められれば、頂点の並びも整列するので
形状を分割して余弦定理とかから導けないかなって思ったんだよね

82:デフォルトの名無しさん
19/05/22 12:13:57.61 pwChZnOT.net
>>47
画面の幅が足りなくて表示できません。

83:デフォルトの名無しさん
19/05/22 12:34:28.61 /472uU17.net
ちなみに、最小を求めるだけならある角度から見た凸包の一次元への投影と、直交する角度からの一次元への投影を180度回しながら調べれば出せると思うけど、分割の粒度の問題で、本当に最小が取れる保証はないね

84:デフォルトの名無しさん
19/05/22 13:45:45.60 pwChZnOT.net
>>76
試しに Perl でも 文字列 .. 文字列 をやってみたらできたよ。
こんなことできたとは。知らないまま20年以上使ってたよ。w

85:50
19/05/22 19:14:59.08 1CosvZF6.net
>前スレの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


86:= original_ary.map{ | num | sorted_hash[ num ] } puts results.join( " " ) #=> 2 3 5 4 3 1



87:
19/05/22 19:16:47.93 Kujyr1dD.net
>>70-71
アンカーが多すぎると投稿できないのです、ただそれだけです

88:
19/05/22 19:17:22.29 Kujyr1dD.net
>>73
>おだてれば猿も木に登るタイプだとみた。
痛いところを突きますね…

89:50
19/05/22 19:26:33.00 1CosvZF6.net
>2 3 5 4 3 1
これが、
2 3 6 5 3 1
みたいに、4 が無くなる・飛ばされるランキングだと、もっとややこしい!w

90:デフォルトの名無しさん
19/05/23 09:23:03.57 mvOL8yN3.net
前スレの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]

91:デフォルトの名無しさん
19/05/23 12:32:00.03 vYeVJ6FZ.net
>>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

92:デフォルトの名無しさん
19/05/23 12:33:09.81 vYeVJ6FZ.net
>>34>>15の間違い

93:デフォルトの名無しさん
19/05/23 13:50:07.86 qjdiTxTD.net
苗字で漢字の「口」を「くち」ではなく「ぐち」と読むのは
井口、矢口、田口の3つだけ
これマメな

94:デフォルトの名無しさん
19/05/23 15:16:07.91 j56nuYko.net
>>92
川口
ハイ論破

95:デフォルトの名無しさん
19/05/23 16:02:19.12 4YO7mLFH.net
ただの荒らし 、蒸し蒸し by 山口

96:デフォルトの名無しさん
19/05/23 17:19:50.40 TKS1qOdO.net
>>90 OCaml
URLリンク(ideone.com)

97:デフォルトの名無しさん
19/05/23 18:37:52.11 TjazBdz3.net
>>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

98:
19/05/23 18:40:43.46 QGT5qlDg.net
>>92
谷口
関口
合口・相口・藍口・青口・赤口・秋口・明口… URLリンク(name.sijisuru.com)

99:デフォルトの名無しさん
19/05/23 19:39:17.51 4YO7mLFH.net
>>97 もう相手にすんな。お題にするなら、
その9つの名前の読み仮名のあいうえお順に並べよ。
谷口・関口・合口・相口・藍口・青口・赤口・秋口・明口
読み仮名を持ってくるのが難しそうだけどな。

100:デフォルトの名無しさん
19/05/23 21:02:26.03 W0nkxFNY.net
aを要素の型がIntである長さNの配列、k、cを型がIntである変数とする。
{P}a[a[k]]=c;{a[a[k]]!=c}
Hoare tripleが成立するためのなるべく弱いPを示せ

101:
19/05/23 21:06:01.11 QGT5qlDg.net
>>99
教えてください
P は何ですか?
{ } とは何を表しているのですか?
>{P}a[a[k]]=c;{a[a[k]]!=c}

102:デフォルトの名無しさん
19/05/23 21:17:28.82 W0nkxFNY.net
>>100
URLリンク(i.imgur.com)
URLリンク(i.imgur.com)

103:デフォルトの名無しさん
19/05/23 21:38:26.52 iqEot/XY.net
sumnum、引数に10000とか与えたら答え返ってこなさそう
引数に1億とかは文字列長が千万とかになるから無理でも仕方ないけど、1万位は対応したいね

104:デフォルトの名無しさん
19/05/23 23:35:27.08 +TqLtPkO.net
>>102
下位桁に9が並ぶだけじゃね?

105:デフォルトの名無しさん
19/05/23 23:45:44.19 iqEot/XY.net
>>103 知らない言語ばかりでよく読めてないんだが、今までの提出って1から順に試してね?
それだと当然結果が返ってこないが
違ったらすまん

106:デフォルトの名無しさん
19/05/24 00:19:46.43 25j6Q5My.net
QZは相変わらず頭が悪い癖にプライドだけは高いな

107:デフォルトの名無しさん
19/05/24 00:38:02.83 3viueN7b.net
>>92は「必ずレスがもらえるレス」として有名な文らしいな
案の定わんさかレスの付いてること

108:デフォルトの名無しさん
19/05/24 01:07:12.76 /EuQv4hQ.net
>>99 何語?

109:デフォルトの名無しさん
19/05/24 01:41:24.00 /EuQv4hQ.net
>>11 閑話休題 凸包
URLリンク(i.imgur.com)

110:デフォルトの名無しさん
19/05/24 02:55:43.78 /EuQv4hQ.net
>>108 この凸包図を眺めてると、正解の正方形は 左辺の一番長い線を1辺とした正方形になりそうだが、それをどうやって求めるのか。
How to find the minimum-area-rectangle (MAR) fitted on the given points?
URLリンク(gis.stackexchange.com)
最初に書いた人は、凸包を求めて重心を中心として1度ずつ回転させるやり方を考えたらしいが、下の方で良い解法のコメントが付いてた。
URLリンク(i.stack.imgur.com)
少しずつ回転させるのではなくて、長方形の1辺は必ず凸包の辺のどれかと重なってるはずだから、凸包の辺の角度だけをとって試せば良いとのこと。
これなら重心を求める必要もないし、時間はかからない。
長方形が求まったら、座標系の中に入る正方形にすれば良いがはみ出してたら、参考解かな。
このアルゴリズムは、
The algorithm you are looking for is known in polygon generalisation as "smallest surrounding rectangle".
凸包最小長方形の解法とでも言えば良いのかな。

111:デフォルトの名無しさん
19/05/24 06:39:15.19 UW+Tk6Dp.net
>>109
正方形を求める場合で凸包がひし形の場合、その方法はうまくいかないきがす?

112:デフォルトの名無しさん
19/05/24 09:32:40.58 0g5oPW7D.net
今回のアルゴリズムは、最小の正方形を求める方法だけじゃなくて、グラフの境界との交差判定もあるから
最小の求め方だけではなく、2番め以降についても正しく判定できないといけない上に、回答が一つに定まらない可能性もあるんだよね

113:デフォルトの名無しさん
19/05/24 09:46:10.43 SalRbGaI.net
与えられた点を全て含む凸包全体からなる集合の濃度は明らかに連続体濃度なんだから2番目なんて存在しないぞ

114:デフォルトの名無しさん
19/05/24 10:02:31.57 SalRbGaI.net
あ、凸包じゃなくて凸多角形な

115:デフォルトの名無しさん
19/05/24 10:35:59.86 0g5oPW7D.net
>>112
書いててあれ?と思てったけど、たしかにそうだ。
俺では解けなさそうだ。

116:デフォルトの名無しさん
19/05/24 11:52:18.57 MR3FxfYE.net
>>111 1辺から正方形を作る場合は、その正方形が全ての凸包の頂点を全て含むような大きさでなければならない。
この場合6辺あるから、そのような6つの正方形を作ってその中の最小のものを求めることになる。
面倒なのはそれが座標系に入らないといけないから場合によっては辺に平行移動しないといけないかも知れない。
すると、>>112 の言うように正方形の位置は変わるかもしれないけど、辺の長さが合ってれば正解だろうね。
(この場合は座標系に入るだろうからとりあえずは平行移動は考えないでも良いかも)

117:デフォルトの名無しさん
19/05/24 12:12:24.29 MR3FxfYE.net
>>110 どんな凸包体でも求まるよ。 1辺の長さが凸包体の辺の長さと一致させるわけじゃないよ。
全ての頂点を含む直方体を作る。 この求め方も工夫が必要そう。
1辺を伸ばした直線上に全ての頂点から垂線を引いて、一番外の距離を直方体の1辺とするんだろうな。
同じように他辺も求める。

118:デフォルトの名無しさん
19/05/24 12:51:12.25 Nda2hmui.net
>>116
雑な書き殴りですまん
URLリンク(i.imgur.com)
さらにややこしいのは、凸包の頂点が正方形の辺上に位置して、
頂点に存在しないことのほうが多いのも難くする要因の一つ

119:デフォルトの名無しさん
19/05/24 13:09:58.32 MR3FxfYE.net
>>117 あ、そうか。

120:デフォルトの名無しさん
19/05/24 18:00:01.45 ZpEEE6+U.net
>>11 色々見たけど、画像認識の境界を探す為にある程度人気のある話題みたいだが、完全を求めるのではなく、だいたいで良いからスピードの速いのが良いとしてるみたいだね。 境界自体があやふやなものだし。
厳密にやるとしても、長方形と正方形ではかなり条件が違う。
全ての点が正方形に入るのなら、一つの候補は凸包の対角上の点が一番離れているところを正方形の対角とした正方形が一つの候補ではないだろうか。
直交正方形が最大だからそこまでを調べれば良いけど、それだけをしらみつぶしに調べてどれだけ時間がかかるかだな。
それをはみ出る点がある場合にどうゴニョゴニョするかだけど、条件が絞れればスピードは速くなる。
一般的にはポイント数は膨大な数だから、条件を絞り込む方法が重要になりそう。

しかし、こんな例題はどこにでもありそうで殆どサンプルがないのは時間がかかりすぎて簡単に試せないのかな、今回はポイント数が少ないからそれほどではないとは思うけど。

121:デフォルトの名無しさん
19/05/24 18:05:08.54 ZpEEE6+U.net
>>119 文章が変な順になっててごめん。
全ての点が正方形に入るのなら、一つの候補は凸包の対角上の点が一番離れているところを正方形の対角とした正方形が一つの候補ではないだろうか。
それをはみ出る点がある場合にどうゴニョゴニョするかだけど、条件が絞れればスピードは速くなる。
直交正方形が最大だからそこまでを調べれば良いけど、それだけをしらみつぶしに調べてどれだけ時間がかかるかだな。

122:デフォルトの名無しさん
19/05/24 18:27:30.58 ukAKIdqH.net
計算両を優先するなら、座標軸を基準にとって大雑把に取るべきじゃないのかな
これなら、ゲームのコリジョン検出で使われる方法そのままだし

123:デフォルトの名無しさん
19/05/24 18:52:18.42 U6fsa1pB.net
点の数は関係なくね?
任意の3点を選んでその内部にある点は無いものとして考えても同じなんだから

124:デフォルトの名無しさん
19/05/24 19:02:15.89 U6fsa1pB.net
いや、関係あるか
頂点のめちゃくちゃ多い凸多角形になったら計算量明らかに増えるもんな

125:デフォルトの名無しさん
19/05/25 18:51:08.08 CqCnLPQm.net
>>11 なんかかなりの難問に思えてきたな。 解法への足がかりが見えない。 凸包までは比較的簡単にたどり着いたけどそれからが闇の中。
凸包の重心が何か使えるだろうか?
最小包含円 という言葉もあるようだが、少なくとも 正方形の辺はこの円の直径以下。

126:デフォルトの名無しさん
19/05/25 19:01:54.73 CqCnLPQm.net
>>124 取り敢えずこの問題を 『凸包正方形 』
とでも呼びますか。

127:デフォルトの名無しさん
19/05/25 20:41:54.94 jq9htnT/.net
三角形に分解してみる?

128:デフォルトの名無しさん
19/05/25 21:12:11.52 9LrJCzXS.net
>>112
連続体濃度でかつ二番目に小さな値のある集合
{0, 1} ∪ (2, ∞)

129:デフォルトの名無しさん
19/05/25 22:13:07.00 u9k+LAdR.net
>>11
ポイントが(136,577), (110,927)の2つだけならどうなる?

130:デフォルトの名無しさん
19/05/25 22:15:27.93 9LrJCzXS.net
>>128
それ対角線の正方形しかないやろ

131:デフォルトの名無しさん
19/05/26 01:40:13.82 y3Cc4Dz0.net
以下はオレなりに考えた仮説
1)2点で


132:正方形の内側に接するのは何らかの平べったい形、対角にて頂点が接するので45° 2)3点で接するのは、細長い三角形あるいはそれに準じた形、角度の計算は…?不明  または凸包の一辺が正方形の辺に接する形 3)4点で接するのは、細長い三角形あるいはそれに準じた形、角度の計算は…?不明  または凸包の一辺が正方形の辺に接する形 4)5点以上で接する場合は、凸包の一辺が正方形の辺に接する 「対角にて頂点が接する形の角度は45°」 「凸包の一辺が正方形の辺に接する形は凸包の辺の角度」 これらは角度が分かるので回転変化・逆変換を使って 外側の最小の斜め正方形の候補を探索することは可能だが、 角度が良く分からない形の解法が、まだ見出せていない



133:デフォルトの名無しさん
19/05/26 01:44:08.13 y3Cc4Dz0.net
凸包の一辺が正方形の辺に接するおよび二点が対角に接する場合に限った解法
なら難しくないんだがな…

134:デフォルトの名無しさん
19/05/26 01:59:58.39 tjjSxTb8.net
>>129
それは正方形が(0,0)-(999,999)からはみでてまうな

135:130
19/05/26 17:27:59.46 XOxN6P/y.net
>>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;

136:デフォルトの名無しさん
19/05/26 17:29:47.07 XOxN6P/y.net
>>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

検算してないので、もしバグっていたらゴメンチャイ、(ゝω・) テヘペロ

137:デフォルトの名無しさん
19/05/26 17:38:51.62 XOxN6P/y.net
>>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;

138:デフォルトの名無しさん
19/05/26 17:40:00.54 XOxN6P/y.net
>>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
検算してないので、もしバグっていたらゴメンチャイ、(ゝω・) テヘペロ

139:デフォルトの名無しさん
19/05/26 17:44:33.42 XOxN6P/y.net
>>136
なんか変、バグってるスマソ、直すことが出来たら書き込みます

140:デフォルトの名無しさん
19/05/26 18:33:59.00 XOxN6P/y.net
>>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;

141:デフォルトの名無しさん
19/05/26 18:37:35.18 XOxN6P/y.net
>>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 の内側の正方形についてはまだ考えていない。

142:デフォルトの名無しさん
19/05/26 20:05:21.06 MaF2nVvH.net
>>11 おもろいな、初級問題だと文法の練習としてそれなりに勉強になる。
こう言うのはそれを超えていろんなパッケージ/ライブラリを駆使することになるから一皮剥けて勉強になる。
解けるか解けないか判らないけど楽しんでる。
勿論こう言うのは、言語の問題ではなく、ロジックの問題だと解っているんだが、ヒントとなる数字を出せるのは言語の力にもよるからそれはそれなりに面白い。
図形は直感的に推論が正しいかどうか判るから面白い。
URLリンク(i.imgur.com)
凸包の重心は使えなさそうだな。
>>139 なんとなく変に感じるんだが。
URLリンク(i.imgur.com)
この場合の正方形の一辺は、左側の凸包の線そのものになると思うんだけど。
つまり、左下端が、( 94,31 )、上端が(110,927) にならないかな?

143:デフォルトの名無しさん
19/05/26 20:06:23.89 MaF2nVvH.net
>>140 ごめん、同じ画像を二つ上げてしまった。

144:
19/05/26 20:24:38.79 CpBTYp0n.net
>>11
まずは「斜めは考えない」 URLリンク(ideone.com)
>>48
解が一致しました

145:
19/05/26 20:28:38.16 CpBTYp0n.net
お題と回答
>>5 : 6 10 32 36 44
>>9 : 15 34 35 79
>>11 : 48 (78) 138-139
>>19 :
>>50, スレリンク(tech板:920番) : 4 85 89
スレリンク(tech板:988番) : 59 61
>>90 : 95 96
>>99 :

146:138
19/05/26 21:07:57.74 GCxYDy5d.net
>>140 図をありがとう
scriptを


147:(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° になりました。



148:デフォルトの名無しさん
19/05/27 00:47:32.69 WucVzOyp.net
>>144 それはおかしい。 直行正方形の辺の長さが896だから、896以下にならなければならない。

149:デフォルトの名無しさん
19/05/27 03:33:47.20 ZlNUfz2v.net
>>11 1)のみ やってみた。
URLリンク(codepen.io)
※ 途中で完全にJavaScriptのお遊びになってしまった。
  (計算は別プログラムで、そのログを図にした)
一辺 = 890.70993168302
四点
x: [ 0.8027676391, 82.9114960624, 969.828819782, 887.7200913596]
y: [916.8907759982, 29.9734522778, 112.082180701, 998.9995044215]

150:デフォルトの名無しさん
19/05/27 12:03:51.40 g1o9JmK9.net
>>146 多分正解だね。 おめでとう。

151:デフォルトの名無しさん
19/05/27 12:17:08.10 g1o9JmK9.net
>>146 あ、でも 右上の頂点は y = 998.9995044215 となってるけど、
正確には y=999 とぶつからなければいけないよね。 少し誤差が大きすぎるような気がするけどこんなもの?

152:デフォルトの名無しさん
19/05/27 23:46:29.70 FhcziIHI.net
>>140
この図の(388,157)は(388,598)の誤記?

153:デフォルトの名無しさん
19/05/27 23:59:39.40 WucVzOyp.net
>>149 間違っていないでしょ。
両方あるよ。
xys [[136 577]
[110 927]
[472 199]
[157 808]
[388 598] ***
[ 94 31]
[388 157] ***
[325 409]
[787 897]
[850 598]]
URLリンク(i.imgur.com)

154:デフォルトの名無しさん
19/05/28 00:07:34.28 A9u6a3RO.net
>>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の範囲をこえてしまうものがあるらしく、不均等に伸ばすようにすれば
より小さい正方形を見出せるかもしれない。

155:デフォルトの名無しさん
19/05/28 00:08:24.04 A9u6a3RO.net
>>150
そうだね、ゴメン

156:デフォルトの名無しさん
19/05/28 00:16:35.63 eILR4MCH.net
>>150 外接円を描いてみたけど、利用方法を見つけられなかった。
むしろ [ 94 31] [787 897] の対角を直径とする最小包含円 からかな?

157:デフォルトの名無しさん
19/05/28 00:27:46.22 A9u6a3RO.net
以下は試作実験programと結果
①凸包の辺の角度にのみ傾ける(それ以外の角度は略) ②長方形⇒正方形補正は略 ③頂点座標が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°
真の極小解は中途半端な角度にあるのか…

158:146
19/05/28 00:38:23.09 dFqOFikP.net
>>148
146は、ヒュースリックス解だから、まだ小さくなると思う。
でも、あと1くらいだと思う
( これが厳密解を求めるやる気が、無くなる原因)
少しずるして、この問題に過剰最適化させて、
890.7003209442369にした。
URLリンク(codepen.io)

159:デフォルトの名無しさん
19/05/28 00:44:50.83 A9u6a3RO.net
>>154
これ、凸包の辺の角度にのみ傾けてない、凸包の全頂点の組み合わせエッジの角度に傾けている。
まいいや、大差ない

160:デフォルトの名無しさん
19/05/28 01:02:45.97 eILR4MCH.net
>>125 >>11 の問題1 に名前を与えるならさしずめ、最小包含正方形 かな。

161:デフォルトの名無しさん
19/05/28 01:18:31.05 eILR4MCH.net
>>155 無理を言ってごめん、答えの誤差をなくすために、最終座標は整数の xy 座標に出来るかな。 中心からの距離を切り上げて整数にする感じになると思うけど。

162:デフォルトの名無しさん
19/05/28 01:33:00.26 A9u6a3RO.net
こういう問題って、極小・最小解にいたる連続的な解空間形成してなけりゃ収束計算もできないし
かといって解析的あるいはロジカルな求解法が見出せなけりゃ、最後はヒューリスティックあるいはランダムwalk
あるいはRISMみたいな外挿的に探索するしかないのだろうか…
ないんだろうなたぶん。そんなきがす

163:デフォルトの名無しさん
19/05/28 01:41:09.17 eILR4MCH.net
>>159 現実の世界でも、求める解は整数にすることが多いと思う。
画面のドット精度、工作機械の精度など整数と考えた方が良い。
現実的には整数解が求められないと、角を切り落としたりしかねない。
(許容誤差を加えた範囲を求めるのでも良いけど)
整数解にした方が、試行錯誤の時間も少なくなると思うからより現実的だと思う。 答えが一律に決まるし。

164:50
19/05/28 13:42:19.32 tpS8MDSU.net
スレリンク(tech板:920番)
前スレの920の、ランク付けの問題で、
入力データ
-6 3 9 5 3 -7
出力・ランク
2 3 5 4 3 1
2 3 6 5 3 1
下のように、同値の場合は、同じランクにして、次のランクの間隔を空ける場合、
ランク3 が2つあるから、4が無くなって、次は、5に飛ぶ場合は、難しい!

165:デフォルトの名無しさん
19/05/28 16:43:58.97 C7xxE9sL.net
>>161
uniqしないだけ

166:デフォルトの名無しさん
19/05/28 17:48:16.52 IzhB96hl.net
>>153 このケースの場合の最小包含円は外接円と一致するんだな。

167:デフォルトの名無しさん
19/05/29 15:51:03.59 PE9V8n6M.net
素因数分解する関数を作れ。
ただし2より小さい数は空のリスト(又は配列)を返す事とする。
例: factorization 150
>[2,3,5,5]

168:デフォルトの名無しさん
19/05/29 16:00:45.49 bq8lopql.net
はい、次のお題どうぞ

169:
19/05/29 18:28:49.13 8RGCI467.net
>>164
== スレリンク(tech板:988番) == >>56 >>59 >>61

170:デフォルトの名無しさん
19/05/29 21:59:41.60 tGd6tVjg.net
>>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]

171:デフォルトの名無しさん
19/05/30 18:43:19.57 vFLUPPTs.net
>>166
すでに既出だったとは。。。orz

172:デフォルトの名無しさん
19/05/30 18:45:09.99 vFLUPPTs.net
>>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]

173:デフォルトの名無しさん
19/05/30 18:49:02.33 WCG+7mjF.net
既に既出
馬から落馬
歌を歌う
舞を舞う
ダンスをダンスる

174:デフォルトの名無しさん
19/05/30 18:50:08.40 WCG+7mjF.net
ヤフーでググる

175:デフォルトの名無しさん
19/05/30 20:22:38.83 JBeAmq0Y.net
お題: sin, cos を用いてお題を作成せよ

176:デフォルトの名無しさん
19/05/30 20:26:45.68 zjW7i8/A.net
eをネイピア数とした時
e^(iθ) ≠ cosθ + i sinθ
となる事を証明せよ

177:デフォルトの名無しさん
19/05/30 20:35:25.37 7cnHmzOq.net
ん~、じゃあ
sin, cos を実装せよ

178:デフォルトの名無しさん
19/05/30 22:02:46.02 8+NCnZcE.net
>>173
オイラーの公式なめてんの?

179:デフォルトの名無しさん
19/05/30 22:10:08.81 mWdPfVjS.net
>>175
exp(iθ)=cosθ+isinθだけど(2.71828...)^(iθ)は多値関数だよ

180:デフォルトの名無しさん
19/05/30 22:23:36.25 mWdPfVjS.net
>>176
多値じゃなくて多価

181:デフォルトの名無しさん
19/05/30 23:36:43.35 0JxSfYBl.net
^はxorだからな。そりゃ違うさ。

182:蟻人間
19/05/30 23:40:43.53 rhzd9E8p.net
お題:テーブル方式でcos/sin関数をテキトーに自作セヨ。

183:デフォルトの名無しさん
19/05/30 23:54:33.59 J5ONVYE0.net
>>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);

184:デフォルトの名無しさん
19/05/31 00:55:18.43 t9s7pmzY.net
ああこりゃ多価関数の意味を知らないバカだな

185:デフォルトの名無しさん
19/05/31 01:02:49.06 6bzo9swJ.net
複素数の指数関数や対数関数は多価関数だろ
馬鹿はお前だ

186:デフォルトの名無しさん
19/05/31 01:38:23.70 4Atryqh8.net
指数関数は多価じゃないよ、何言ってんの

187:デフォルトの名無しさん
19/05/31 05:30:51.21 Rd2VdfQd.net
>>183
寝言はねえから言えよクズ
z^w := exp(w * log(z))
log(z) が多価関数なんだから一般にz^wも多価関数だっつーの
死ねよ雑魚が
URLリンク(en.wikipedia.org)
> 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.

188:デフォルトの名無しさん
19/05/31 05:49:38.41 C3HpXD20.net
>>184
出典がwikiとかありえねーよwww
wikiにそう書いてあるからってそれが正しいとは限んねえだろバーカ

189:デフォルトの名無しさん
19/05/31 06:17:16.52 4Atryqh8.net
>>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 なんて使わないでしょ?

190:デフォルトの名無しさん
19/05/31 06:53:54.48 BfGYI+kd.net
>>186
主値を取る場合はLogなりp.v. fなりきちんと明示するのが少なくとも解析屋の間ではルールだよ
他の分野の人は知らないけど

191:デフォルトの名無しさん
19/05/31 07:16:05.79 LXc8d8Er.net
>>170
> 歌を歌う
歌うには「歌を」と言う意味は含まれてないから歌を歌うと言うのは別におかしくないよ
> 舞を舞う
も同様

192:デフォルトの名無しさん
19/05/31 07:32:11.07 E12bWjgi.net
>>164 Python sympy
from sympy import *
print(factorint(150))
#{2: 1, 3: 1, 5: 2} 2*3*5**2 を示す

193:デフォルトの名無しさん
19/05/31 12:16:09.80 ihIFj/V/.net
>>188
和語として語源同一なんだけど。
意外なものでは「くさい」と「くそ」「明かり」と「開ける」も同一語源。

194:デフォルトの名無しさん
19/05/31 14:15:19.33 rnSTXr8b.net
数学の問題なんて、センター入試問題でも解いてこいよ。 手を抜きすぎだぞ。 もっと面白くひねれよ。

195:デフォルトの名無しさん
19/05/31 20:50:13.55 /Dlwa3kC.net
>>164
Haskellを元にPython。
素数じゃ無いと判定した時点でループ抜けるとかしたら、そこそこ速くなった。
URLリンク(ideone.com)

196:デフォルトの名無しさん
19/05/31 23:54:43.29 fDsN7sSa.net
センターなんて数学じゃなくて算数でしょ

197:デフォルトの名無しさん
19/06/01 05:45:08.23 uuPo6pHP.net
面白いお題がないかと文句を言う前に
進んで面白いお題を書きましょう

198:デフォルトの名無しさん
19/06/02 10:12:21.99 kAC27lYz.net
>>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

199:デフォルトの名無しさん
19/06/02 15:03:12.02 c9LZ9fJN.net
>>192>>164向けの回答としては問題ない。
しかし、一般的な素因数分解としては問題が。
大きな素数が対象のとき、実行時間がひどい結果になっている。
たとえば有名な素数1000000007(10億7)をやると....
(前スレ988の制約範囲内くらい、普通にできる形が望ましい)
pythonで手を抜いた一般的な素因数分解でも
10^12くらいは1秒以内に出る。(10^12+39が近場の素数)

200:195
19/06/02 18:27:22.13 Hxta4mKu.net
>>196 python sympy
{1000000007: 1} 0.2255000ms

201:195
19/06/02 18:41:56.81 Hxta4mKu.net
>>196 同一環境での比較。
n= 13999 ans= {13999: 1} time=0.0135830ms
>>192 を実行
n= 13999 ans= [13999] time=152.4304170ms

202:デフォルトの名無しさん
19/06/03 00:41:43.81 u5qwV1AY.net
>>198
192の解が一般解としてはひどいすぎるってことでしょ。
10億7どころか、百万台の素数もキツイ。

203:デフォルトの名無しさん
19/06/03 03:39:17.26 4uiCu3lL.net
お題:↓の画像のようにコンソール画面に雨を降らせなさい
URLリンク(i.imgur.com)

204:デフォルトの名無しさん
19/06/03 12:16:50.21 V0dR4GNy.net
>>164 pythonわかってない俺がpythonで
URLリンク(ideone.com)

205:デフォルトの名無しさん
19/06/03 21:33:09.94 CuEu7mic.net
>>164
Kotlin
URLリンク(paiza.io)
ただループ回すだけじゃ芸がないと思って素数を返すイテレータのクラス作ってやってみた。
(素数をバッファリングもすればもっと無駄がなかったなとは思ったがそれはやってない)。

206:デフォルトの名無しさん
19/06/04 06:42:47.26 7qxdZD6A.net
>>185
Wikiが正しいとは限らないからと言って、wikiが間違っている前提で反論するバカの見本

207:195
19/06/04 07:17:53.03 /ArpXH0n.net
>>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

208:デフォルトの名無しさん
19/06/04 07:56:52.47 //1XsOfQ.net
素数は、平方根までの素数で割って、割り切れなければ素数だろ
[2,3,5,7,11,13...] みたいに、素数表に追加していく途中で、
例えば、103 なら、11 までの素数で割って、割り切れなければ素数
13以降の素数で割る必要はない
もし13で割り切れるなら、13 * n = 103
となり、n は、√103 よりも、小さくなるから、既に割り切れているはず!

209:デフォルトの名無しさん
19/06/04 08:11:49.19 e9k+jtYr.net
>>205
例のRubyバカはこのスレにも出没するのか

210:デフォルトの名無しさん
19/06/04 09:07:39.39 QWQyVZWL.net
誰もRubyの話なんてしてないやろ

211:デフォルトの名無しさん
19/06/04 09:27:19.41 u+S7EiZ9.net
日頃の行いがなぁ…

212:デフォルトの名無しさん
19/06/04 10:23:22.04 prB+PlYz.net
>>185
間違いとも限らない。
書かれていることを鵜呑みにするのは間違いだが見もしないで頭ごなしに間違いと決めつけるのも間違い。

213:202
19/06/04 10:27:05.50 prB+PlYz.net
>>205
なるほど。暇があったらそれも考慮しよう。

214:デフォルトの名無しさん
19/06/04 11:04:03.94 Hzpqs43L.net
【速報】金券五百円分とすかいらーく優侍券をすぐもらえる    
URLリンク(pbs.twimg.com)  
  
① スマホでたいむばんくを入手   
② 会員登録を済ませる   
③ マイページへ移動する     
④ 招待コード→招待コードを入力する [Rirz Tu](スペース抜き)    
     
今なら更に4日18時までの登録で2倍の600円の紹介金を入手 
クオカードとすかいらーく優待券を両方ゲットできます。  
    
かんたんに入手できますのでご利用下さい    

215:デフォルトの名無しさん
19/06/04 13:01:01.36 XXr8i2SB.net
>>211
あとで一万円の請求が来るらしい

216:デフォルトの名無しさん
19/06/04 13:24:26.77 RxG/e7Cf.net
>>211
バラまきキャンペーン乙。

217:デフォルトの名無しさん
19/06/05 02:49:29.97 TK4G9YGK.net
>>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

218:デフォルトの名無しさん
19/06/05 19:02:11.80 xAyG9V/M.net
お題:2次元関数を図示したとき網目状になる関数を示せ。

219:デフォルトの名無しさん
19/06/05 19:05:56.09 JxAz00LY.net
網目状になったら普通それは関数とは言わないんですが

220:デフォルトの名無しさん
19/06/05 20:21:05.87 4AufAgsU.net
>>200
URLリンク(light.dotup.org)
エスケープシーケンスのコードが行方不明だったので書き直した。
C++で書いたけど、ベターCですなぁ。

221:デフォルトの名無しさん
19/06/05 20:26:27.13 Fd++qFdy.net
>>215
それは数学のお題では?関数の方を求めるんでしょ?図を画面に出すとかではなく。

222:214
19/06/06 05:58:02.66 6h02yf6h.net
>>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

223:デフォルトの名無しさん
19/06/06 18:09:53.98 Qxsak61t.net
お題
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 ]

224:デフォルトの名無しさん
19/06/06 20:34:48.88 2PaE6Est.net
また数学か

225:デフォルトの名無しさん
19/06/06 20:50:52.65 ZTQEoQsZ.net
これは数学と言うより、コンピュータの問題じゃないかな。
IEEE754の理解が必要になると思う。

226:220
19/06/06 22:57:28.49 Qxsak61t.net
有理数・Rational クラスを使えば?
式を6倍しても良いけど

227:デフォルトの名無しさん
19/06/06 23:11:58.29 Zwi2yFYb.net
というか知的障害者でも64回回せば終わる問題だよな

228:デフォルトの名無しさん
19/06/06 23:16:57.91 P4iafl1G.net
上位大学の入試見てると問題作りってセンス出るよな

229:デフォルトの名無しさん
19/06/07 07:11:55.05 CBwJTjr/.net
>>222
> IEEE754の理解が必要になると思う。
釣りか?

230:デフォルトの名無しさん
19/06/07 13:55:32.04 D45ggIzR.net
>>215
sin(x + y)*sin(x - y)=0

231:デフォルトの名無しさん
19/06/07 16:27:31.91 RHh4qcVs.net
>>226
誤差収束しないといけないからだと思う。
コンピュータは1/3を計算するとき工夫がいる。

232:195
19/06/07 16:32:04.76 QdXw6XxC.net
>>228 馬鹿だろ。 6倍してみろ

233:デフォルトの名無しさん
19/06/07 16:36:23.22 CBwJTjr/.net
>>228
> コンピュータは1/3を計算するとき工夫がいる。
だからその工夫が>>223の言う
> 有理数・Rational クラスを使えば?
とか
> 式を6倍しても良いけど
だろ
数学的な問題は実数使っても解けないことが多いぞ

234:デフォルトの名無しさん
19/06/07 16:44:59.95 RHh4qcVs.net
あぁ、すまん。
暇なので愚直に解いてくるわ。

235:デフォルトの名無しさん
19/06/07 17:00:40.10 RHh4qcVs.net
URLリンク(ideone.com)
愚直に解いたのでは出ないので、有理数クラスが必要だ。という話になりました。(愚鈍)

236:デフォルトの名無しさん
19/06/07 17:32:22.41 IXZHPSuO.net
等式を6xyz倍して、4の3乗通りの整数の組み合わせを代入して単純に比較するだけの話だよね

237:デフォルトの名無しさん
19/06/07 18:22:52.80 CBwJTjr/.net
>>233
まあそう言うことだわな
> 1/x + 1/2y + 1/3z = 4/3
6yz + 3xz + 2xy = 8xyz
整数演算だけでいい

238:デフォルトの名無しさん
19/06/07 20:25:03.39 itc0IrgZ.net
お題:相異なる25個の英大文字が与えられるので、足りない1個を出力せよ
BCDEFGHIJKLMNOPQRSTUVWXYZ -> A
YIZFOADLMWCRUTGSVQKJEHNBP -> X

239:デフォルトの名無しさん
19/06/07 20:27:51.01 LHJ6D3bl.net
>>235 ruby
$><<([?A..?Z]-gets.split(''))

240:デフォルトの名無しさん
19/06/07 20:28:29.84 LHJ6D3bl.net
typo
>>235 ruby
$><<([*?A..?Z]-gets.split(''))

241:デフォルトの名無しさん
19/06/08 00:59:14.99 zvJkEDj7.net
>>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


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