プログラミングのお題スレ Part11at TECH
プログラミングのお題スレ Part11 - 暇つぶし2ch1:デフォルトの名無しさん
18/04/24 20:45:14.49 ZY7R7Sru.net
プログラミングのお題スレです。
前スレ
プログラミングのお題スレ Part10
スレリンク(tech板)
【出題と回答例】
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)
宿題は宿題スレがあるのでそちらへ。

2:デフォルトの名無しさん
18/04/24 20:46:44.20 WimzHme9.net
>>1

3:デフォルトの名無しさん
18/04/24 21:01:59.85 b5LehDYo.net
>>1
おちゅ

4:デフォルトの名無しさん
18/04/24 21:57:24.56 +2ez/H34.net
出題に際しては
- お題の意図を汲みやすい入出力例も示す
- 事前に自分でもコードを書いてみる

5:デフォルトの名無しさん
18/04/24 22:12:31.82 b5LehDYo.net
このスレ久しぶりに来た
数学できない勢だけどよろすこ

6:デフォルトの名無しさん
18/04/24 22:50:49.03 26GTet/U.net
じゃあ過去ログから面白そうなお題探してきて

7:デフォルトの名無しさん
18/04/24 23:28:41.47 b5LehDYo.net
>>6
過去ログから持ってきた訳じゃないんだけど、こういうお題を考えた
平面座標aとbが入力されます。bから見てaがおおよそ何時の方角にあるか時刻で出力してください。
例えば座標の方角が2時と3時の中間


8:だった場合は両方の時刻を同時に出力してください。 座標が重なった場合は0時と出力してください。方角の精度は時刻み、分刻みから選択自由とします。 でも何か既視感あるんだよな 過去ログに似たようなお題があったかもしれない



9:デフォルトの名無しさん
18/04/25 00:32:02.03 Q0aOI6dW.net
(逆)三角関数使わずにって制限つければまあまあ面白いかもしれない

10:デフォルトの名無しさん
18/04/25 01:02:21.48 Xk9Nens/.net
数学じゃん。
紙と鉛筆で解いて算出は電卓でやれ。
プログラムでやっても電卓でできる程度のことしかしないじゃん。

11:デフォルトの名無しさん
18/04/25 04:59:23.37 uzp6LfsA.net
>>7 Squeak Smalltalk
| fn |
fn := [:a :b | (a - b) theta negated / (2 * Float pi) * 12 + 3 \\ 12].
fn value: 6@12 value: 6@6. "=> 0.0 "
fn value: 6+(2*3 sqrt)@12 value: 6@6. "=> 1.0 "
fn value: 6-(2*3 sqrt)@12 value: 6@6. "=> 11.0 "
fn value: 12@6 value: 6@6. "=> 3.0 "
fn value: 6@0 value: 6@6. "=> 6.0 "
fn value: 0@6 value: 6@6. "=> 9.0 "
fn value: 6@6 value: 6@6. "=> 0.0 "

12:デフォルトの名無しさん
18/04/25 07:24:05.48 OIcVuxa9.net
過去ログから、さすがにこれはプログラミングの問題でしょ
お題:
下図のように山の麓(標高0)の両側にいるA君B君が頂上(標高10)を目指して同時に出発する
ただし、A君B君のいる位置の標高はどの時刻でも等しくなるように登らなければならない
(下図でA君が標高7の峠から標高3の谷へ下るときにはB君は来た道を引き返す必要がある)
標高1だけ上るor下るのに1時間かかるとして頂上まで最短で何時間かかるか求めよ
            10
       7   /\
     /\/3   \
A 0/            \0 B
山の形状は以下のような文字列で表現する
1)文字列の先頭と末尾はA君B君のスタート地点(標高0)を表し、必ず'0'である
2)ゴールの頂上(標高10)の位置は':'で表す(文字コードがちょうど':'='0'+10なので)
3)途中の峠と谷の標高を'1'〜'9'で表す(上図の山の形状は"073:0"と表される)
4)途中の峠と谷は交互に現れるようにする(例えば"037:0"は無し)
テスト例
"073:0" -> 18
"07362:450" -> 36
"06464:36470" -> 42
"0827171:28480" -> 66
"0737491:28180" -> 146
"05374734372747484:184618186912120" -> ?

13:デフォルトの名無しさん
18/04/25 08:12:36.77 YrZy/fuf.net
>>11
手計算でやっても答えが一致しないのだが、本当にそんな時間掛かるか?
C++ URLリンク(ideone.com)

14:デフォルトの名無しさん
18/04/25 08:15:25.48 YrZy/fuf.net
>>12
あ、ごめん私が間違えてた
計算し直してくる

15:デフォルトの名無しさん
18/04/25 08:57:14.64 s6Mh195j.net
スレの宿題のをやってみた (規制対象なのでurlに全角スペースいれてます)
URLリンク(bi) t.ly/2FdJBkh
以下のルール
全員が以下のルールを守って空席に決められた順に座るものとする
・全員の数字と着席順は皆が知っている
・スコアは上下左右の2~4セルの数値の合計
・必ず空席のうちの最大のスコアになる席に座る
・最大のスコアの席が複数ある場合はどこに座っても良い
・「最大のスコアの席」とは、以降の人のルールに適う選択を考慮した上で決定される
(現在スコア5の2つの空席A, B があったとして、全員がルール通り座った結果Aが8、Bが7に
 なる場合はAを選択しなくてはならない)
座席
〇〇5
〇9〇
12〇
に対して、
番号 3、4、6、77、8 がこの順でルール通り座ろうとすると下記の結果になった。
座る順の早い4番が77の隣に行けず6番に負けてしまうとかちょっとおもしろい
77 3 5
6 9 4
1 2 8

16:デフォルトの名無しさん
18/04/25 09:00:27.95 s6Mh195j.net
>スレの宿題のを
「前スレの宿題の」と書こうとしてミスしました。
実際のとこ宿題なのかどうかは知らないけど。

17:デフォルトの名無しさん
18/04/25 09:14:36.14 s6Mh195j.net
>>14のをちょっとだけ訂正
(コードをcodeの方に書いただけ)
URLリンク(bit.) ly/2HYN8WH

18:デフォルトの名無しさん
18/04/25 10:26:52.48 tAxnUvIH.net
>>11
テスト例の最初のやつはなぜ18になるのか?7+3+7=17ではないのか?

19:デフォルトの名無しさん
18/04/25 10:28:30.47 tAxnUvIH.net
あ、ごめん。寝ぼけてた。すまん。

20:デフォルトの名無しさん
18/04/25 10:29:50.42 8AWpTaB2.net
7 + (7 - 3) + 7 = 18
あってるよ

21:デフォルトの名無しさん
18/04/25 11:57:29.80 pPLIJyjZ.net
度々ごめん
直に書けないurlはこう貼ればいいとわかったので
(もしかして常識だったか)
URLリンク(%62it%2Ely)

22:デフォルトの名無しさん
18/04/25 12:11:25.24 pPLIJyjZ.net
>>12
最後の b++ は b -- の打ち間違いか

23:デフォルトの名無しさん
18/04/25 12:51:35.60 /CvNfD/i.net
>>11 の参考として戻る必要があるケースの例
05131:4501050
手計算では40時間。あってるかな
[ ]がA君B君の位置、
左端はそのステップに要する時間
0 [0]5131:450105[0]
5 0[5]131:45010[5]0
5 [0]5131:4501[0]50
1 0[]5131:450[1]050
1 [0]5131:45[0]1050
5 0[5]131:4[5]01050
4 05[1]31:45[]01050
3 051[3]1:45[]01050
2 0513[1]:45[]01050
4 05131[]:4[5]01050
1 05131[]:[4]501050
9 05131[:]4501050

24:デフォルトの名無しさん
18/04/25 15:06:56.64 eqJJBtIM.net
>>14
A, B, C の3人の順番で、
Bがaマスを選ぶと、Cには最高点になるx, y の2つの選択肢があり、
Cがxの場合、Bは10点、
Cがyの場合、Bは5点となる
この場合、Bがaの場合は5点と考えるので、
Bがbの場合が7点なら、Bはbを採用する
しかし、Bのbが5点なら、aと同じだから、どうなるんだ?

25:22
18/04/25 15:15:39.29 /CvNfD/i.net
>>11
理解できてなかったわ
"07362:450" の解がもうわからん

26:22
18/04/25 15:29:44.32 /CvNfD/i.net
>>23
Bはa,bどちらも5点ならどちらを選んでも良い
各人は自分の順になったとき、
選択可能な各位置について「以降誰が何をしても最悪でも~点とれる」という点数を考え、
それが最大になる位置(のうちのどれか一つ)を選ぶ
(何をしても、といってももちろん皆が上記のルールは守るものとする)
ストレートなMin-Max戦略だなこれ

27:デフォルトの名無しさん
18/04/25 15:30:57.61 ucQtsZek.net
>>24
0 [0]7362:45[0]
5 0[]7362:4[5]0
1 0[]7362:[4]50
3 0[7]362:[]450
3 07[]362:[4]50
1 07[]362:4[5]0
2 07[3]62:45[]0
2 073[]62:4[5]0
1 073[]62:[4]50
2 073[6]2:[]450
2 0736[]2:[4]50
1 0736[]2:4[5]0
3 0736[2]:45[]0
3 07362[]:4[5]0
1 07362[]:[4]50
6 07362[:]450
36時間

28:22
18/04/25 15:37:00.23 pPLIJyjZ.net
>>26 ありがとう 問題は理解できていて頭が悪いだけでした



30:23
18/04/25 18:07:14.08 eqJJBtIM.net
>>25
Bのa・b 戦略が、共に5点の同点で、その2つをA に戻すから、
Aは両方を比較しなければならないから、複雑だと思って

31:デフォルトの名無しさん
18/04/25 19:23:53.90 /CvNfD/i.net
>>11
やってみた
URLリンク(ideone.com)
結果
"073:0" => 18
"07362:450" => 36
"06464:36470" => 46
"0827171:28480" => 66
"0737491:28180" => 146
"05374734372747484:184618186912120" => 400

一箇所だけ>>11と違うな

32:デフォルトの名無しさん
18/04/25 20:04:18.92 8AWpTaB2.net
>>11って解無しのパターンってあるのかな?

33:デフォルトの名無しさん
18/04/25 20:26:41.27 ucQtsZek.net
>>29 手計算
0 [0]6464:3647[0]
6 0[6]464:3647[]0
2 06[4]64:3647[]0
2 064[6]4:3647[]0
2 0646[4]:3647[]0
3 06464[]:364[7]0
3 0646[4]:36[4]70
2 064[6]4:3[6]470
2 06[4]64:3[]6470
2 0[6]464:3[6]470
3 0[]6464:[3]6470
3 0[6]464:[]36470
2 06[4]64:[]36470
2 064[6]4:[]36470
2 0646[4]:[]36470
6 06464[:]36470
>>30
無いんじゃね?

34:29
18/04/25 21:13:14.97 /CvNfD/i.net
>>29はバグってた
直したら>>11と一致しました
URLリンク(ideone.com)
常に解がありそうだけど証明はどうやるんだろ

35:デフォルトの名無しさん
18/04/25 21:16:36.07 8AWpTaB2.net
ちょっと考えてみたけど至る所微分不可能な山ではない限り解は存在するね

36:29
18/04/25 21:33:09.38 /CvNfD/i.net
適当に折り返すことによって山谷の数を合わせられる
あとは略、って感じか

37:29
18/04/25 21:38:29.30 /CvNfD/i.net
数じゃなく高さを合わせるのか
眠くて頭が回らない

38:デフォルトの名無しさん
18/04/28 14:30:11.12 O8BM7Wua.net
e^(z) + 1 = 0 を満たす全ての z∈C の絶対値の集合をSとする.
この時、Sの中でN番目(N≦10^5)に小さい元を求めよ.
なお, e = Σ{n∈N}(1/n!) である.

39:デフォルトの名無しさん
18/04/28 14:49:49.33 8V4fYuem.net
数学じゃん。まーたセンセか。
数学板で相手してもらえないのかな?

40:デフォルトの名無しさん
18/04/28 14:54:49.91 dXz/YQDX.net
つまんね

41:デフォルトの名無しさん
18/04/28 16:51:43.06 bUTNgJY5.net
N番目に大きな正の奇数を求めよ、みたいな

42:デフォルトの名無しさん
18/04/28 17:14:48.72 GokrK/uL.net
簡単なところで。
【お題】
与えられた整数のリストを、
すべての奇数がすべての偶数の前に来るよう並べ替えなさい。
ただし奇数、偶数、それぞれの順番は変えないこと。
[-1, 2, 8, -9, -2, -3, -6, -10, -8, 5, 7, 9, 7]
-> [-1, -9, -3, 5, 7, 9, 7, 2, 8, -2, -6, -10, -8]

43:デフォルトの名無しさん
18/04/28 17:36:46.27 PugBvw3H.net
>>40 Java
URLリンク(ideone.com)
しんぷる

44:デフォルトの名無しさん
18/04/28 18:15:08.94 7FInXxAw.net
J
((#~2&|),(#~2&|&>:)) -1, 2, 8, -9, -2, -3, -6, -10, -8, 5, 7, 9, 7
出力
_1 9 3 _5 _7 _9 _7 _2 _8 _2 _6 10 _8
(Jでは_が負の符号)

45:デフォルトの名無しさん
18/04/28 18:19:04.17 XQamhGXx.net
>>40 Perl
@a = (1, 2, 8, -9, -2, -3, -6, -10, -8, 5, 7, 9, 7);
@o = grep{$_ & 1} @a;
@e = grep{!($_ & 1)} @a;
use feature 'say';
use Data::Dump qw(dump);
say dump [@o, @e];

$ perl 11_41.pl
[1, -9, -3, 5, 7, 9, 7, 2, 8, -2, -6, -10, -8]

46:デフォルトの名無しさん
18/04/28 18:21:14.38 PugBvw3H.net
> _1 9 3 _5 _7 _9 _7 _2 _8 _2 _6 10 _8
Jは全くわからんが、出力おかしくないけ?
_1 _9 _3 5 7 9 7 2 8 _2 _6 _10 _8 になるはず?

47:デフォルトの名無しさん
18/04/28 19:00:22.31 bUTNgJY5.net
>>44
おかしい。こんな短いものでバグ作るとは


48:。



49:デフォルトの名無しさん
18/04/28 19:06:05.69 8V4fYuem.net
なんだJニキたいしたことなかったんだな。ガッカリだわ

50:デフォルトの名無しさん
18/04/28 19:06:51.88 bUTNgJY5.net
>>42
>((#~2&|),(#~2&|&>:)) -1, 2, 8, -9, -2, -3, -6, -10, -8, 5, 7, 9, 7
こう書かなきゃダメだった
((#~2&|),(#~2&|&>:)) _1 2 8 _9 _2 _3 _6 _10 _8 5 7 9 7

51:デフォルトの名無しさん
18/04/28 19:07:19.36 bUTNgJY5.net
1か月くらいしかやってないから
ガタガタブルブル

52:デフォルトの名無しさん
18/04/28 19:11:02.35 PugBvw3H.net
入力に , 入れてたからおかしくなったのけw

53:デフォルトの名無しさん
18/04/28 19:16:25.16 bUTNgJY5.net
カンマはあっても良いんだけど _2 を -2 と書くと
,- なる演算子のコンビネータで世にも奇妙な動きになる

54:デフォルトの名無しさん
18/04/28 19:18:49.62 PugBvw3H.net
やっぱりJわからんww

55:デフォルトの名無しさん
18/04/28 19:20:47.82 e4v0vK3x.net
違った
1,2,3 => 1 2 3
1, -2, 3 => 1 _2 _3
マイナスがそれまで連結したそれより右、
上の例だと 2 3 全体に作用してた

56:デフォルトの名無しさん
18/04/28 20:02:26.64 amQJLuCm.net
>>40
ソートするだけやん...
C++
URLリンク(ideone.com)

57:デフォルトの名無しさん
18/04/28 20:34:22.01 7FInXxAw.net
あー!
ソートするだけか。グッと短くなるな
J
(\:2&|) _1, 2, 8, _9, _2, _3, _6, _10, _8, 5, 7, 9, 7
結果
_1 _9 _3 5 7 9 7 2 8 _2 _6 _10 _8

58:デフォルトの名無しさん
18/04/28 21:15:59.30 Ie6V8ZCt.net
>>40 Squeak/Pharo Smalltalk
| fn1 fn2 |
fn1 := [:arr | (arr select: #odd), (arr select: #even)].
fn2 := [:arr | (arr sort: [:x | x odd asBit] descending) asArray].
fn1 value: #(-1 2 8 -9 -2 -3 -6 -10 -8 5 7 9 7).
"=> #(-1 -9 -3 5 7 9 7 2 8 -2 -6 -10 -8) "
fn2 value: #(-1 2 8 -9 -2 -3 -6 -10 -8 5 7 9 7).
"=> #(-1 -9 -3 5 7 9 7 2 8 -2 -6 -10 -8) "

59:デフォルトの名無しさん
18/04/28 21:55:04.43 efxIQEuI.net
>>40
# Rubyで。
def f040(a)
a.select(&:odd?) + a.select(&:even?)
end

60:デフォルトの名無しさん
18/04/28 21:58:00.35 fbonRnOo.net
>>40 Perl
@s = (-1, 2, 8, -9, -2, -3, -6, -10, -8, 5, 7, 9, 7);
push @{$a[$_ & 1]}, $_ for @s;
($e, $o) = @a;
print "@$o @$e\n";
$ perl 11_40.pl
-1 -9 -3 5 7 9 7 2 8 -2 -6 -10 -8

61:デフォルトの名無しさん
18/04/28 21:58:07.26 4vnB69wL.net
[[[ ][ ]]]\[[]] [[[]]]],[[[ [][] ]

62:デフォルトの名無しさん
18/04/28 22:24:14.64 kOoyKfN/.net
安定なソートである必要は無いのかな

63:デフォルトの名無しさん
18/04/28 22:45:12.30 amQJLuCm.net
>>59
やり方による
>>53みたいな奴だと安定ソートが必要

64:デフォルトの名無しさん
18/04/29 00:30:13.18 VMPsXvec.net
>>36って S = {(2m + 1)π / √((2nπ)^2 + 1)|(m, n)∈N^2}だから最小値存在しなくね?
複素数の複素数乗って多価関数だよね?

65:デフォルトの名無しさん
18/04/29 01:45:04.33 eN7o88HV.net
>>61
e は実数で S = {(2n-1)π} じゃないの。
数学は良く知らんけど。
[[[{[{{]] を見て反省してJの良さが伝わりやすいように>>54をわかりやすく書き直してみた
定義
data =: _1 2 8 _9 _2 _3 _6 _10 _8 5 7 9 7
modulo =: |~
ascending_sort_by = \:
実行
data ascending_sort_by 2 modulo data
結果
_1 _9 _3 5 7 9 7 2 8 _2 _6 _10 _8
これを分かりにくくして行くと>>94になる
2項演算子 f と単項演算子 g から単行演算子 (f g)、
(f g) x の値は x f (g x) を作れる仕組み
2項演算子 f の左側引数をxに固定した単項演算子 x&f、(x&f) y の値は x f y を作れる仕組み
これらを使って「2での剰余をキーとしてソートする
単行演算子」を作って data に適用する形に書き直すと
(ascending_sort_by (2&modulo)) data
これを直に書いて不要な空白や括弧を取ると>>94
(\:2&|) data

66:デフォルトの名無しさん
18/04/29 01:48:41.58 eN7o88HV.net

\ になってる文字は本来バックスラッシュ
Jはスマフォアプリがあるので暇で困っている人にはパズル的に遊ぶのにお勧め

67:デフォルトの名無しさん
18/04/29 02:09:53.25 VMPsXvec.net
>>62
z := x + y*i (x, y∈R)
e^z = -1
⇔ exp((x + y*i)(p.v.Log|e| + i*arg(e))) = -1
⇔ exp(x - 2nπy)*exp((2nπx + y)i) = -1
⇔ x = 2nπy and 2nπx + y = (2m + 1)π
⇔ x = 2nπy and y = (2m + 1)π/((2nπ)^2 + 1)
⇔ z = (2m + 1)π/(2nπ - i)
⇒ |z| = |2m + 1|π/sqrt(4n^2π^2 + 1) (m, n∈N)
だからS = {(2n-1)π}はありえないよ

68:デフォルトの名無しさん
18/04/29 02:12:22.08 /ExMHkxk.net
>>40 Ocaml
URLリンク(ideone.com)
初めて扱った言語だから分かりやすさ優先
冗長だよなぁ

69:デフォルトの名無しさん
18/04/29 02:23:13.34 p2Z/45DS.net
>>62
>>61
>modulo =: |~
~ はタイプミス(不要)でしたごめんなさい寝ます

70:デフォルトの名無しさん
18/04/29 03:00:09.99 zLWhc+ki.net
>>40 javascript
var ary = [-1, 2, 8, -9, -2, -3, -6, -10, -8, 5, 7, 9, 7];
// 条件判定が二倍走るのが気に食わない
var ans = [...ary.filter(n => n % 2), ...ary.filter(n => !(n % 2))];
console.log(ans);
// のでこうした。長い…読むとき引っ掛かりそう
var ans = ary.reduce((acc, n) => n % 2 ? {odd: [...acc.odd, n], even: acc.even} : {odd: acc.odd, even: [...acc.even, n]}, {odd: [], even: []});
console.log([...ans.odd, ...ans.even]);
// 結局俺にはこれが分かりやすくていいや
var odd = [], even = [];
ary.forEach(n => {n % 2 ? odd.push(n) : even.push(n);});
console.log([...odd, ...even]);

71:デフォルトの名無しさん
18/04/29 05:45:46.05 hIO/B/Lz.net
>>40
Kotlin
URLリンク(paiza.io)
C
URLリンク(paiza.io)

72:デフォルトの名無しさん
18/04/29 05:54:20.45 hIO/B/Lz.net
>>43
やってることほとんど同じだけど短くできるので改造してみました。
Perl
URLリンク(paiza.io)

73:デフォルトの名無しさん
18/04/29 07:08:41.98 BEZTP3Wm.net
>>40 Common Lisp
URLリンク(ideone.com)
計測してみたらsortが一番遅かった
URLリンク(ideone.com)

74:デフォルトの名無しさん
18/04/29 09:01:58.05 aHYSui5W.net
>>40 ruby
p [-1, 2, 8, -9, -2, -3, -6, -10, -8, 5, 7, 9, 7].partition(&:odd?).flatten

75:デフォルトの名無しさん
18/04/29 09:22:53.62 aHYSui5W.net
>>40 ocaml
URLリンク(ideone.com)
is_oddはぐぐって見つけたのの丸パクリ

76:デフォルトの名無しさん
18/04/29 21:32:42.63 siUxTeIDF
お題: 文字列をソートしなさい。ただし、英字のみをソートし他はそのままにすること。
例:
 "213cba213cba213cba" -> "213aaa213bbb213ccc"

77:デフォルトの名無しさん
18/04/29 10:27:23.47 aHYSui5W.net
>>40 rust
URLリンク(ideone.com)
タプルにflattenとかできたらよかったのに…

78:デフォルトの名無しさん
18/04/29 16:09:08.42 hIO/B/Lz.net
>>40
Kotlin でも >>71 そっくりに書けることに気付いたので >>68 を fork して書き換えてみた。
URLリンク(paiza.io)

79:デフォルトの名無しさん
18/04/29 20:33:37.53 My7UiDyw.net
[[[ []]]]*[[ [][] ][] } } {} [[[

80:デフォルトの名無しさん
18/04/29 20:42:22.87 /ExMHkxk.net
しっかし、良問なお題だな……

81:デフォルトの名無しさん
18/04/29 21:35:33.15 f+z04ZEq.net
お題: 文字列をソートしなさい。ただし、英字のみをソートし他はそのままにすること。
例:
 "213cba213cba213cba" -> "213aaa213bbb213ccc"

82:デフォルトの名無しさん
18/04/29 21:43:39.24 VMPsXvec.net
>>78 Riby
"213cba213cba213cba".yield_self{|v|r=/[a-zA-Z]/;s=v.scan(r).sort;v.gsub(r){s.shift}} #=> "213aaa213bbb213ccc"

83:デフォルトの名無しさん
18/04/29 22:33:55.68 aHYSui5W.net
>>78 octave
URLリンク(ideone.com)

84:デフォルトの名無しさん
18/04/29 22:50:48.02 WuAwAiPA.net
お題
二次元平面上の4点が与えられる。この4点で凸四角形を構成できるか判定せよ。
※4点の順番は、時計回りや反時計回りとは限らない。
(0, 0), (1, 0), (1, 1), (0, 1) => true
(0, 0), (1, 1), (1, 0), (0, 1) => true
(0, 0), (2, 0), (1, 1), (0, 2) => false
(0, 0), (1, 1), (2, 2), (3, 3) => false
(0, 0), (0, 0), (0, 0), (0, 0) => false

85:デフォルトの名無しさん
18/04/29 22:53:34.50 yO7NcvMF.net
そんな空気読めないから学生に不人気なんだよ数学板帰れ

86:デフォルトの名無しさん
18/04/29 23:11:38.79 wF7FhsU6.net
>>78 Squeak/Pharo Smalltalk
| fn |
fn := [:str |
 | letters |
 letters := OrderedCollection new.
 ((str asArray gather: [:chr | chr isLetter
  ifTrue: [letters add: chr. '{', letters size asString, '}']
  ifFalse: [chr asString]]
 ) as: String) format: letters sort
].
fn value: '213cba213cba213cba' "=> '213aaa213bbb213ccc' "

87:デフォルトの名無しさん
18/04/29 23:14:55.98 UI+loYQZ.net
>>78 Perl5
@s = split '', '213cba213cba213cba';
@i = 0..$#s;
@k = grep{$s[$_] =~ /[a-z]/} 0..$#s;
@l = sort @s[@k];
$s[$k[$_]] = $l[$_] for 0..$#k;
use feature 'say';
say @s;

$ perl 11_77.pl
213aaa213bbb213ccc

88:デフォルトの名無しさん
18/04/29 23:19:13.69 UI+loYQZ.net
>>84
@i = 0..$#s;
この行、要らなかった、消し忘れた…orz

89:デフォルトの名無しさん
18/04/29 23:22:03.47 WuAwAiPA.net
>>78 C++
#include <iostream>
#include <string>
#include <algorithm>
#include <boost/iterator/filter_iterator.hpp>
template <typename FwdIt>
void selection_sort(FwdIt first, FwdIt last) {
for (auto it = first; it != last; ++it) std::iter_swap(it, min_element(it, last));
}
int main() {
std::string s;
std::cin >> s;
selection_sort(boost::make_filter_iterator(&::isalpha, s.begin(), s.end()), boost::make_filter_iterator(&::isalpha, s.end(), s.end()));
std::cout << s << std::endl;
}

90:デフォルトの名無しさん
18/04/29 23:46:37.03 wPb3/3m7.net
>>78
Haskell
アルゴリズム自体は単純だけどコードが泥臭い
もっと綺麗に書けそう
import Data.Char
import Data.List
solve [] ys = ([],reverse $ sort ys)
solve (x:xs) ys = if isAlpha x
then let (vs,w:ws) = solve xs (x:ys) in (w:vs,ws)
else let (vs,ws) = solve xs ys in (x:vs,ws)
main = putStrLn $ fst $ solve "213cba213cba213cba" []

91:デフォルトの名無しさん
18/04/30 00:05:47.30 873ZFTYn.net
お題
西暦X年のプレミアムフライデーを列挙せよ

92:デフォルトの名無しさん
18/04/30 00:14:03.81 wP9Edy/s.net
それは概念的な方?それとも実際に仕事に影響する方?
後者ならプレミアムフライデー列挙は0文字でできるが

93:デフォルトの名無しさん
18/04/30 03:32:32.41 XX4FB8lc.net
>>78
C
URLリンク(paiza.io)

94:デフォルトの名無しさん
18/04/30 03:49:27.01 XX4FB8lc.net
あれ?strdup() で警告出てるな。strdup() って標準ではないか。
まあでもCコンパイラのアバウトな処理によって動くバイナリは作られたようだがw
や�


95:閧スいことは分かると思うのでそのままにしておく。



96:デフォルトの名無しさん
18/04/30 04:14:00.17 XX4FB8lc.net
>>78
Kotlin
URLリンク(paiza.io)

97:デフォルトの名無しさん
18/04/30 07:20:36.76 aMecU4PQ.net
>>78 Common Lisp
URLリンク(ideone.com)

98:デフォルトの名無しさん
18/04/30 09:43:30.53 6GiCfUEC.net
>>78 Squeak/Pharo Smalltalk
| fn |
fn := [:str |
| letters |
letters := (str select: #isLetter) sort readStream.
str collect: [:chr | chr isLetter ifTrue: [letters next] ifFalse: [chr]]
].
fn value: '213cba213cba213cba' "=> '213aaa213bbb213ccc' "

99:デフォルトの名無しさん
18/04/30 11:03:34.34 6GiCfUEC.net
>>88 Squeak/Pharo Smalltalk
| preKinsOf |
preKinsOf := [:year |
(year asInteger asYear months collect: [:month |
(month dates select: [:date | date weekday == #Friday]) last]
) reject: [:date | date mmddyyyy beginsWith: '4/29']
].
preKinsOf value: 2022
"=> {28 January 2022 . 25 February 2022 . 25 March 2022 . 27 May 2022 .
24 June 2022 . 29 July 2022 . 26 August 2022 . 30 September 2022 .
28 October 2022 . 25 November 2022 . 30 December 2022} "

100:デフォルトの名無しさん
18/04/30 11:06:46.51 51rF4oVe.net
>>78
>>87のアロー版
import Control.Arrow
import Data.Char
import Data.List
solve ([],_) = ([],[])
solve ((x:xs),~yss@(y:ys)) = if isAlpha x
then first (y:) $ second (x:) $ solve (xs,ys)
else first (x:) $ solve (xs,yss)
main = putStrLn $ loop (second sort . solve) "213cba213cba213cba"

101:デフォルトの名無しさん
18/04/30 13:22:57.51 9wPwzi/d.net
[[[ [ "[]" ]]] [] [][[[ [] ]][]

102:デフォルトの名無しさん
18/04/30 15:39:38.12 3TseVeeC.net
>>78 Emacs Lisp
(defun f (a)
(flet ((alphaumericp (c) (string-match "[A-Za-z]" (string c))))
(let* ((b (concatenate 'list a))
(c (sort (remove-if-not #'alphaumericp b) #'<)))
(concat (mapcar (lambda (d) (if (funcall #'alphaumericp d) (pop c) d)) b)))))
f
(f "213cba213cba213cba")
"213aaa213bbb213ccc"

103:デフォルトの名無しさん
18/04/30 19:55:09.82 AG7SQVmm.net
>>81 Perl5
URLリンク(ideone.com)

104:デフォルトの名無しさん
18/04/30 20:05:33.19 AG7SQVmm.net
>>99
書き込んでから気がついたけど、お題の5個の入力では問題を起こさないが
差ベクトルが短すぎる場合や外積の面積が細過ぎる場合の打ち切りは、
nextで一階層ブロック脱出ではなく更にもう一階層外側のloopに脱出すべきか…orz
ま、いいか、テヘペロ

105:デフォルトの名無しさん
18/04/30 20:32:21.58 3H79VXon.net
>>64
e^(πi) = e^(3πi) = e^(5πi) = ... = -1 じゃないの?

106:デフォルトの名無しさん
18/04/30 21:29:33.47 i4YlDPUd.net
>>101
e^z = -1 に対して z = (2m + 1)i は十分条件でしかないよ
必要十分条件は z = (2m + 1)π/(2nπ - i) なの
で今 e^z = -1 を満たす「すべての」zって言われてるから十分条件じゃ意味なのは分かる?
そもそも十分条件って言葉は知ってるかな?
exp(x) と e^(x) が違うことはわかってる?

107:デフォルトの名無しさん
18/04/30 21:50:54.13 vxN19J44.net
お題
大人数で一斉にじゃんけんを行った
各人の手のリストが与えられるのでその中で勝者が何人いるか答えよ
(g=グー,c=チョキ,p=パー)
gccgc -> 2
ggggggg -> 0
cppcppppccpppppc -> 5
cppcppppccpgpppc -> 0

108:
18/04/30 21:51:16.28 TVB5RPq5.net
>>102
それ、おかしくない?
m = n = 1 のとき、
すなわち e^((3*pi)/(2*pi - i)) を wolfram-alpha に食わせてみたんだが、-1 にならない
URLリンク(www.wolframalpha.com)


109:e%5E((3*pi)%2F(2*pi+-+i)) >>64 exp((x + y*i)(p.v.Log|e| + i*arg(e))) = -1 ってどういう意味なの?



110:デフォルトの名無しさん
18/04/30 22:01:50.32 XN8sO4Rn.net
>>103 C++
URLリンク(ideone.com)

111:デフォルトの名無しさん
18/04/30 22:07:39.31 i4YlDPUd.net
>>104
exp(z) := Σ{n∈N}z^n/n!
pv log(z) := log(z)の主値
arg(z) := 複素数zの偏角
リンクの wolfram-alpha はそりゃ値が一致しないよ。前提が違うんだから

112:
18/04/30 22:51:37.38 TVB5RPq5.net
>>102
>>106

>>102
z = (2m + 1)π/(2nπ - i)
これを愚直に展開すると
z = (2m + 1)・2nπ/(4n^2・π^2 + 1) + j(2m + 1)(4n^2π^2 + 1))…①
一方
複素指数関数を e^z = Σz^n/n! と定義して
z = x + yj(x, y ∈ R) のとき、
|e^z| = |e^x|、かつ |e^yj| = 1
ここで e^z = -1 だから
|e^z| = |e^x| = 1, x ∈ R
x = 0
にしかならないけれども、①のzの実部はm, n によっていろいろ変わるのはおかしいね

113:デフォルトの名無しさん
18/04/30 22:55:46.76 i4YlDPUd.net
>>107
いやだから e^z(2.718281828...のz乗) と exp(z) は別物だって言ってんじゃん
わざと嫌がらせしてる?

114:デフォルトの名無しさん
18/04/30 22:58:05.91 3TseVeeC.net
>>103 Emacs Lisp
(defun f (g)
(let* ((c (concatenate 'list g))
(p (remove-duplicates c)))
(if (= (length p) 2)
(count (cdr (assoc (apply #'+ p) '((202 . ?g) (211 . ?c) (215 . ?p)))) c) 0)))
(f "gccgc") 2
(f "ggggggg") 0
(f "cppcppppccpppppc") 5
(f "cppcppppccpgpppc") 0

115:
18/04/30 23:18:07.22 TVB5RPq5.net
>>108
え?
z = x + yj
exp(z) = Σz^n/n! と定義するのと
exp(x + jy) = e^x・(cos(y) + j・sin(y)); x, y ∈R と定義するのとは同値でしょう?
後者を採用して、|exp(x + jy)| = |e^x|
e^z = -1 より |e^x| = 1, x ∈ R
だったら、やっぱり x = 0 しか取り得ないと思いますが…

116:デフォルトの名無しさん
18/04/30 23:25:43.22 i4YlDPUd.net
>>110
同じことを何度言えば理解してもらえるんですかね
x = 2.71828...とすると
x^z = exp(z log(x))
= exp(z(pv log|x| + i*arg(x))
= exp(z + 2nπzi)
exp(z + 2nπzi)とexp(z)が一般に同値な訳ないでしょ
何度も言うけどわかりました? (2.718...)^z と Σ{n∈N}(z^n/n!)は全く別の値なんです

117:デフォルトの名無しさん
18/04/30 23:41:24.15 i4YlDPUd.net
ついでになんか勘違いしてるみたいだから指摘しておきますけど
xが実数であっても exp(x) != (2.7...)^x じゃありませんからね(e.g. x=0.5などとすれば直ちに自明でしょう)
高校数学の感覚ではこれらは同じ値なのでしょうけど複素解析の文脈では指数関数は一般に多値関数ですからね

118:デフォルトの名無しさん
18/04/30 23:42:01.80 i4YlDPUd.net
誤字
xが実数であっても exp(x) = (2.7...)^x じゃありません

119:
18/04/30 23:58:31.96 TVB5RPq5.net
>>113
z = x + yj,∈C, x, y ∈R において、
複素指数関数 exp(z) を
exp(z) = Σz^n/n! と定義する…①
exp(x + jy) = e^x・(cos(y) + j・sin(y)); x, y ∈R と定義する…②
①⇔②であることを前提とすれば、
x ∈R において
exp(x)
= e^x(cos0 + j・sin0)(∵②)
= e^x(1 + j・0)
= e^x

xが実数なら exp(x) = (2.7...)^x
ですね
でも >>111 の欠点がみえない
exp(z) = exp(z + 2nπj)(複素指数関数の周期性)
なのは理解しているつもりなんですが

120:デフォルトの名無しさん
18/05/01 00:10:24.66 W5y6CuNF.net
>>114
再三再四申し上げますが一般に exp(z) と ネイピア数のz乗は別物です
あと何百回言えばこれを理解してもらえるんですかね
従って②の定義は「exp(x + jy) = exp(x)・(cos(y) + j・sin(y))」としなければならないし
偽な命題を前提とすればそりゃどんな結論だって導けるってものです
というのも P ⊃ Q は P が偽の時常に真ですから

121:デフォルトの名無しさん
18/05/01 00:11:15.20 k1G9EgK2.net
プログラミングやってると数学学びたい欲求が出てくる

122:デフォルトの名無しさん
18/05/01 00:11:33.54 bMu1E696.net
同値の意味も知らないような数学の素人がなにか言い合いしてますねえ

123:デフォルトの名無しさん
18/05/01 00:29:59.90 zX/Wrdt+.net
お題
o,d,a,iからなる文字列Sが与えられる。
Sからいくつかの文字を取り除くことで"odai"をN回繰り返した文字列が得られたとする。
Nの最大値を求めよ。
odaiodai -> 2
ooddaai -> 1
idao -> 0
ododoadioadioadioadioadioadiodaioadodioadiaodi -> ?

124:デフォルトの名無しさん
18/05/01 00:33:21.72 6vH9r7He.net
>>103 Perl5
use feature 'say';
for (<DATA>) {
chomp;
my ($i, %h);
$h{$_}++ for split'';
%gcp = (g=>c, c=>p, p=>g);
delete @gcp{keys %h};
@r = keys %gcp;
$k = $gcp{$r[0]};
say "$_ -> ", (1 == @r) ? $h{$k} : 0;
}
__DATA__
gccgc
ggggggg
cppcppppccpppppc
cppcppppccpgpppc
実行結果
$ perl 11_102.pl
gccgc -> 2
ggggggg -> 0
cppcppppccpppppc -> 5
cppcppppccpgpppc -> 0

125:デフォルトの名無しさん
18/05/01 01:08:35.42 sD3/P01t.net
>>78 javascript
var{nums,wrds}=(str=>eval(`((nums,...wrds)=>({nums,wrds}))\`${str.replace(/[a-zA-Z]+/g,'\${"$&"}')}\``))('213cba213cba213cba')
console.log(String.raw(nums,...(wSrt=>wrds.map(w=>wSrt.splice(0,w.length).join``))([...wrds.join``].sort())))

126:デフォルトの名無しさん
18/05/01 01:09:16.19 6vH9r7He.net
>>118 Perl5
use feature 'say';
for (<DATA>) {
chomp;
@k = qw{o d a i};
$j = 0;
for ($n = 0; $n < length($_)>>2; $n++) {
for $c (qw{o d a i}) {
$i = index $_, $c, $j;
goto L1 if $i < 0;
$j = $i + 1;
}
}
L1:;
say "$_ -> ", $n;
}
__DATA__
odaiodai
ooddaai
idao
ododoadioadioadioadioadioadiodaioadodioadiaodi
実行結果
$ perl 11_117.pl
odaiodai -> 2
ooddaai -> 1
idao -> 0
ododoadioadioadioadioadioadiodaioadodioadiaodi -> 5

127:
18/05/01 01:13:28.97 bK+upqA8.net
>>115
>一般に exp(z) と ネイピア数のz乗は別物です
それは心得ているつもりです。
以下、結構雑に書きますが、
exp(z)=Σz^n/n!…①
と定義する。
このときも①が収束すること、および
exp(z1 + z2) = exp(z1)exp(z2), z1, z2 ∈C…②
が成立することを暗黙の了解とする
z∈C, z = x + jy, x, y ∈R のとき
exp(z) = exp(x)exp(jy) …③(∵②)
exp(x) = Σx^n/n! = e^x
exp(jy) = 1 + (yj)/1! - y^2/2! - j・y^3/3! + y^4/4! + j・y^5/5! + …
=(1 - y^2/2! + y^4/4! - …) + j ・ (y/1! - y^3/3! + y^5/5! - …)
=cos(y) + j・sin(y)
すなわち exp(z) = e^x・(cos(y) + j・sin(y))…④
以上の議論は手元の教科書の引き写しです。

128:
18/05/01 01:14:36.19 bK+upqA8.net
>>122 続き
>従って②の定義は「exp(x + jy) = exp(x)・(cos(y) + j・sin(y))」としなければならないし
以上より exp(x + jy) = e^x・(cos(y) + j・sin(y)) …④で問題ありません。
だから、x ∈ R とすれば exp(x) = e^x(cos0 + j・sin0) = e^x になります
つまり
>>115 をより正確にいえば
「exp(x) は e^x の自然な拡張」となり、>>113 は誤りとなります
また exp(z) の絶対値を考えると
.(exp(x + jy)) = √((e^x・cos(y))^2 + (e^x・sin(y))^2)
= e^x・√(cos^2(y) + sin^2(y))
= e^x
すなわち |exp(z)| = |e^x| すなわち複素指数関数の絶対値は引数の実部によって決まり、引数の虚部の影響を受けません
以上の議論は
URLリンク(ja.wikipedia.org)
に書いてありました

129:
18/05/01 01:33:38.84 bK+upqA8.net
>>123 続き
今 exp(z) = -1, z ∈C
>>123 ④より
exp(x + yj) = -1, x, y ∈R
e^x(cos(y) + j・sin(y)) = -1
e^x・cos(y) + j・e^x・sin(y) = -1…⑤
よって⑤の両辺の虚部が 0 だから
e^x・sin(y) = 0
e^x > 0 より sin(y) = 0
y = nπ…⑤(必要条件)
このとき
cos(y) = ±1
このとき⑤の両辺の実部を比較して
e^x(±1) = -1
e^x > 0 だから cos(y) = -1 となるのは⑤の中でも y = (2n + 1)π, n ∈Zのときのみ
また y = (2n + 1)π のとき、e^x = 1, x = 0
>>110
exp(z) の絶対値は z の実部にのみ影響されます
exp(z) = -1 から |exp(z)| = 1
|exp(z)| = e^x
ですから
e^x = 1
これを満たすのは x = 0 のみ、という推論はどうでしょうか?

130:デフォルトの名無しさん
18/05/01 01:43:11.17 W5y6CuNF.net
>>122-124
>exp(x) = Σx^n/n! = e^x
なんでexp(x)とe^xを比較する議論の前提で、この2つが正しいことを利用してるの?
循環論法です。破綻しています
>exp(jy) = 1 + (yj)/1! - y^2/2! - j・y^3/3! + y^4/4! + j・y^5/5! + …
>=(1 - y^2/2! + y^4/4! - …) + j ・ (y/1! - y^3/3! + y^5/5! - …)
exp(x)が収束することしか仮定されていないためこの変形は成り立ちません
きちんと絶対収束(absolute convergence)することを示すか仮定しましょう。破綻しています
よって以後の議論は全て誤りですので参考になりません
殊に循環論法による誤謬は致命的ですね
あなたはまず複素解析の文脈で任意の実数xに対して exp(x) = (2.7...)^x となる事を証明しなければなりません
尤も、expは単射なのに対してa^zは多価関数なのでこれらが等しくないことは計算するまでもなく自明なんですが、
なんでここにこんなにつっかかってくるんですかね……

131:デフォルトの名無しさん
18/05/01 01:56:50.61 sD3/P01t.net
>>103 javascript
var f = s => {
var d = [...new Set(s)]
return d.length == 2
? ((a,b) => ({g:'c',c:'p',p:'g'})[a] == b)(d[0],d[1])
? s.match(new RegExp(d[0],'g')).length
: s.match(new RegExp(d[1],'g')).length
: 0;
}
console.log(f('gccgc')) //=> 2
console.log(f('ggggggg')) //=> 0
console.log(f('cppcppppccpppppc')) //=> 5
console.log(f('cppcppppccpgpppc')) //=> 0

132:
18/05/01 02:00:54.53 bK+upqA8.net
>>125
>>122 >>exp(x) = Σx^n/n! = e^x
>なんでexp(x)とe^xを比較する議論の前提で、この2つが正しいことを利用してるの?
>循環論法です。破綻しています
いいえ循環論法ではありません
仮定は
exp(z) = Σz^n/n! が z ∈ C で収束すること…①
exp(z1 + z2) = exp(z1)exp(z2), z1, ze ∈C …②
のみです
z = x + jy と置いたとき
exp(z1 + z2) = exp(z1)exp(z2), z1, z2 ∈C…②
が成り立つ前提で
z1 = x, z2 = yj
とおいて
exp(x + yj) = exp(x)exp(yj)
と変形します
もともと exp(z) = Σz^n/n! と置いたのですから
x ∈R のとき、exp(x) = Σz^n/n!
Σx^n/n! = e^x の収束は別途長い議論を経ないといけませんが、ここでは既知としています
最終的には >>122
exp(x + jy) = e^x(cos(y) + j・sin(y))
を導きだすのが目的です

133:デフォルトの名無しさん
18/05/01 02:04:42.58 MakmSkau.net
数学荒らし本当うざ…

134:デフォルトの名無しさん
18/05/01 02:12:20.66 sD3/P01t.net
>>126
((a,b) => ({g:'c',c:'p',p:'g'})[a] == b)(d[0],d[1])
は単純に
({g:'c',c:'p',p:'g'})[d[0]] == d[1]
でよかった。
最初関数として作ってあったもので単純化し忘れ。

135:デフォルトの名無しさん
18/05/01 02:19:47.25 6vH9r7He.net
>>78 Perl5 >>84を書き込んだけど気に入らなかったので少し修正した。
@s = split '','213cba213cba213cba';
@k = grep{$s[$_] =~ /[a-z]/} 0..$#s;
@s[@k] = sort @s[@k];
print @s,"\n";
実行結果
$ perl 11_77_2.pl
213aaa213bbb213ccc

136:デフォルトの名無しさん
18/05/01 02:24:25.71 85dldNJr.net
>>127
>exp(x) = Σx^n/n! = e^x
において e^x = Σx^n/n! と勝手にしているのが結果を先取り(しかも誤謬)していて宜しくないと言っているのです
「複素解析の文脈」では w^z = exp(z*(p.v. log|w| + i*arg(w))) なのです
これは定義です。これが気に食わなくて、どうしても exp(x) = e^x を言いたいのであれば
より妥当性がありwell-definedな w^z の定義を提示してください
繰り返します。あなたは「e^z = exp(z)が成立するように、任意の複素数w, zに対して w^z を定義する」必要があります
>Σx^n/n! = e^x の収束は別途長い議論を経ないといけませんが、ここでは既知としています
Σx^n/n!が収束するだけでは弱くて、
「絶対収束」(絶対に収束するという意味ではありません)を仮定する必要があると言っているんですけど
まあ枝葉末節なので不問とします

137:
18/05/01 02:26:11.46 bK+upqA8.net
>>125
>exp(x)が収束することしか仮定されていないためこの変形は成り立ちません
>きちんと絶対収束(absolute convergence)することを示すか仮定しましょう。
厳しいですね…手元の教科書(高木・解析概論、ただ結構いい加減な本だそうですが)の引き写しなんですが…
虚数単位を j と置いていることからもわかるように、工科系の出自で、厳密な話は苦手です
>なんでここにこんなにつっかかってくるんですかね……
そのようなつもりはなく、純粋に数学的関心から書いているものです
>>124-122 >>114 >>110 >>107 >>104 を見返しても問題はないと思いますが
>あなたはまず複素解析の文脈で任意の実数xに対して exp(x) = (2.7...)^x となる事を証明しなければなりません
>尤も、expは単射なのに対してa^zは多価関数なのでこれらが等しくないことは計算するまでもなく自明なんですが、
exp(z) = exp(z + 2nπj) なので exp(z) は周期関数であることはわかるのですが、
これ以上のことはちょっとわかりません、今日はここまででお休みします
お付き合いくださりありがとうございました

138:デフォルトの名無しさん
18/05/01 02:37:06.62 D2CDUI2h.net
>>88
Kotlin
URLリンク(paiza.io)
Javaのライブラリに日付や曜日の計算任せちゃってて自分ではほとんど何もやってません。

139:デフォルトの名無しさん
18/05/01 02:39:14.06 MakmSkau.net
スレタイも読めない数学荒らしが一族郎党苦しんで死にますように。

140:デフォルトの名無しさん
18/05/01 02:46:03.00 6vH9r7He.net
そこまでのろわなくてもよい希ガスるけど、、
数学的お題でもいいけど、明快なお題を出すか、回答を書き込むかを重視し
解釈のかみ合わない議論は程々にした方が医院ジャマイカ

141:デフォルトの名無しさん
18/05/01 03:31:48.56 7ekaWt6m.net
>>118 Emacs Lisp
(defun f (S)
(let ((s 0) (N 0))
(ignore-errors (loop (mapcar (lambda (c) (setq s (1+ (position c S :start s)))) "odai") (incf N)))
N))
(f "odaiodai") 2
(f "ooddaai") 1
(f "idao") 0
(f "ododoadioadioadioadioadioadiodaioadodioadiaodi") 5

142:デフォルトの名無しさん
18/05/01 04:52:28.26 D2CDUI2h.net
>>103
Kotlin
URLリンク(paiza.io)

143:デフォルトの名無しさん
18/05/01 05:19:23.17 D2CDUI2h.net
>>118
Kotlin
URLリンク(paiza.io)

144:デフォルトの名無しさん
18/05/01 05:47:58.01 D2CDUI2h.net
>>118
Perl
正規表現のパターンを作ってループさせてみました。
URLリンク(paiza.io)

145:デフォルトの名無しさん
18/05/01 07:17:35.34 dg2b7E11.net
>>132
純粋に数学的関心ならもうプログラミング関係ないんだから、適切な板、スレを探してそっちで好きなだけやってこい

146:デフォルトの名無しさん
18/05/01 08:38:29.97 DfUAZvBS.net
>>103 Common Lisp
URLリンク(ideone.com)

147:デフォルトの名無しさん
18/05/01 09:28:24.04 .net
数学やってる奴は頭悪いってことは分かった

148:デフォルトの名無しさん
18/05/01 09:42:49.56 k1G9EgK2.net
数学は別にいいんだが難しすぎるのはちょっとな
簡単なお題なら個人的に歓迎

149:デフォルトの名無しさん
18/05/01 10:53:36.69 DfUAZvBS.net
>>118 Common Lisp
URLリンク(ideone.com)

150:デフォルトの名無しさん
18/05/01 11:01:22.65 V5+E1IVs.net
>>118 Squeak/Pharo Smalltalk
| fn |
fn := [:str |
| strm odai count |
strm := str readStream.
odai := 'odai' readStream.
count := 0.
[strm atEnd] whileFalse: [
((strm skipTo: odai next) and: [odai atEnd])
ifTrue: [odai reset. count := count + 1]
].
count
].
fn value: 'odaiodai'. "=> 2 "
fn value: 'ooddaai'. "=> 1 "
fn value: 'idao'. "=> 0 "
fn value: 'ododoadioadioadioadioadioadiodaioadodioadiaodi'. "=> 5 "

151:デフォルトの名無しさん
18/05/01 11:23:10.29 PxRnJhKl.net
>>103 Squeak/Pharo Smalltalk
| numOfWinnersOf |
numOfWinnersOf := [:jkStr |
| arr set |
arr := jkStr asArray collect: [:chr | 'gcp' indexOf: chr].
(set := arr asSet) size = 2 ifFalse: [0] ifTrue: [
| one other |
one := set anyOne. other := set remove: one; anyOne.
arr occurrencesOf: (one - other \\ 3 = 2 ifTrue: [one] ifFalse: [other])
]
].
numOfWinnersOf value: 'gccgc'. "=> 2 "
numOfWinnersOf value: 'ggggggg'. "=> 0 "
numOfWinnersOf value: 'cppcppppccpppppc'. "=> 5 "
numOfWinnersOf value: 'cppcppppccpgpppc'. "=> 0 "

152:デフォルトの名無しさん
18/05/01 11:50:43.04 PxRnJhKl.net
>>81 Squeak/Pharo Smalltalk
| fn |
fn := [:ps |
ps asSet size = 4 and: [
ps noneSatisfy: [:p1 |
[:p2 :p3 :p4 |
(p3 - p2 crossProduct: p4 - p2) = 0 or: [p1 insideTriangle: p2 with: p3 with: p4]
] valueWithArguments: (ps copyWithout: p1)
]
]
].
fn value: {0@0. 1@0. 1@1. 0@1}. "=> true "
fn value: {0@0. 1@1. 1@0. 0@1}. "=> true "
fn value: {0@0. 2@0. 1@1. 0@2}. "=> false "
fn value: {0@0. 1@1. 2@2. 3@3}. "=> false "
fn value: {0@0. 0@0. 0@0. 0@0}. "=> false "

153:デフォルトの名無しさん
18/05/01 12:02:35.06 pz418p4m.net
>>118
お題のサンプル程度なら正規表現で十分かと
PowerShell
PS C:\> ([regex]'o.*?d.*?a.*?i.*?').Matches('odaiodai').Count
>>
2
PS C:\> ([regex]'o.*?d.*?a.*?i.*?').Matches('ooddaaii').Count
>>
1
PS C:\> ([regex]'o.*?d.*?a.*?i.*?').Matches('idao').Count
>>
0
PS C:\> ([regex]'o.*?d.*?a.*?i.*?').Matches('ododoadioadioadioadioadioadiodaioadodioadiaodi ').Count
>>
5

154:デフォルトの名無しさん
18/05/01 12:07:06.40 70o2W7dO.net
文字をATCGにして長さ1億くらいにすればプログラミングっぽくなるんじゃねえの

155:デフォルトの名無しさん
18/05/01 12:28:06.18 UGhOjMxe.net
【安全デマにブーメラン】 山口が自殺したら、次は城島、他のメンバーも酷い運命、食べて応援が応報に
スレリンク(liveplus板)

156:デフォルトの名無しさん
18/05/01 12:30:10.65 in398Y2z.net
お題
大きさW×Hでポケットのないビリヤード台を想像してください。
左下の座標を(0,0)、右上の座標を(W,H)とします。
位置(0,0)から右上に向かって毎秒(a,b)の速度でボールを射出したとき、
ボールが位置(0,0)に戻ってくるのは何秒後でしょうか?
ボールの大きさや摩擦などは無視します。
[input]
W H a b (すべて正の整数)
[example]
2 4 1 1 -> 8
3 4 2 1 -> 24
4 5 2 4 -> 20
1 2 10 5 -> 0.8

157:デフォルトの名無しさん
18/05/01 13:50:08.69 NcJxSmfh.net
公式があるね。
周期=2WH/gcd(aH,bW)
(gcdは最大公約数)

158:デフォルトの名無しさん
18/05/01 13:56:33.70 w7H89JvO.net
>>151 Perl5
use feature 'say';
for (<DATA>) {
chomp;
($W, $H, $a, $b) = split;
($x, $y, $t) = 0x3;
($w, $h) = ($W, $H);
do {
($w, $h) = (2*$w, 2*$h);
($tx, $ty) = ($w/$a, $h/$b);
$t = ($tx < $ty) ? $tx : $ty;
($x, $y) = ($a*$t, $b*$t);
} while ($x % (2*$W) != 0 or $y % (2*$H) != 0);
say "$_ -> $t";
}
__DATA__
2 4 1 1
3 4 2 1
4 5 2 4
1 2 10 5
実行結果
$ perl 11_150.pl
2 4 1 1 -> 8
3 4 2 1 -> 24
4 5 2 4 -> 20
1 2 10 5 -> 0.8

159:デフォルトの名無しさん
18/05/01 13:59:50.83 w7H89JvO.net
>>152
やっぱ公約数に帰結するんだ、
>>153書いてて繰り返し不要な解法がありそうだという気がしてきた
まいいや自分で考えることも面白いから

160:デフォルトの名無しさん
18/05/01 15:18:38.67 V5+E1IVs.net
>>151 Squeak/Pharo Smalltalk
| fn |
fn := [:W :H :a :b |
| time |
time := 2 * W * H / (b * W gcd: a * H).
time isInteger ifTrue: [time] ifFalse: [time asFloat]
].
fn valueWithArguments: #(2 4 1 1). "=> 8 "
fn valueWithArguments: #(3 4 2 1). "=> 24 "
fn valueWithArguments: #(4 5 2 4). "=> 20 "
fn valueWithArguments: #(1 2 10 5). "=> 0.8 "

161:デフォルトの名無しさん
18/05/01 19:12:45.94 sD3/P01t.net
>>118 javascript
var f = s => {console.log((s.match(/o.*?d.*?a.*?i.*?/g)||[]).length)}
f('odaiodai') //=> 2
f('ooddaai') //=> 1
f('idao') //=> 0
f('ododoadioadioadioadioadioadiodaioadodioadiaodi') //=> 5
>>148と同じ

162:デフォルトの名無しさん
18/05/01 20:49:51.17 2ktnnBej.net
>>103 ruby
URLリンク(ideone.com)

163:デフォルトの名無しさん
18/05/01 21:15:49.14 oZjmv7dj.net
お題
大きさが(X, Y, Z)のナップサックに大きさが(x_i, y_i, z_i)で価値がv_iの荷物を価値の総和が最大になるように詰めたい
X Y Z N
x_1 y_1 z_1 v_1

x_N y_N z_N v_N
と荷物及びナップサックが与えられた時、最大の価値を求めよ
可能ならどれを詰めたかも求めよ
なお荷物は回転させて詰めても良いものとする

164:デフォルトの名無しさん
18/05/01 21:36:00.67 2ktnnBej.net
>>118 ruby
URLリンク(ideone.com)

165:デフォルトの名無しさん
18/05/01 22:01:39.67 bRlEbj+U.net
ナップザックというか箱だなそれ (雑感)

166:デフォルトの名無しさん
18/05/01 22:40:45.68 7ekaWt6m.net
お題
政令指定都市名を受け取り, 隣接する区を異なる色になるように塗り分けるのに必要な最少の色数を返す.
f(Sagamihara) => 2
f(Yokohama) => 4

167:デフォルトの名無しさん
18/05/01 22:43:51.19 .net
>>158は、巡回セールスマン問題に並んで有名なナップサック問題である。
なお、この手の問題をNP完全問題だとかNP困難問題だとか呼ぶのは
「ナップサック」(NaPpsuck)に由来する。

168:片山博文MZ
18/05/01 22:47:15.06 Bi25k6nv.net
non-polynomial

169:デフォルトの名無しさん
18/05/01 22:53:05.87 Q2z4i3xl.net
数学荒らし死ね

170:デフォルトの名無しさん
18/05/01 22:54:11.24 RbfjP2ra.net
自分が理解できないからって数学荒らし呼ばわりは惨めすぎるね

171:デフォルトの名無しさん
18/05/01 23:00:54.97 dg2b7E11.net
>>162
民明書房か

172:デフォルトの名無しさん
18/05/02 00:09:48.80 WLxRJQ+g.net
>>165
じゃロシア語で埋めてくな。
文句ないんだろ。

173:デフォルトの名無しさん
18/05/02 00:16:51.78 WLxRJQ+g.net
Текущая версия страницы пока не проверялась опытными участниками и может
значительно отличаться от версии, проверенной 11 апреля 2015;
проверки требуют 20 правок.
Бу́ря (шторм) — собирательное понятие, обозначающее очень
сильный ветер (а также сильное волнение на море), возникающий по
различным причинам и в разных областях Земли. Скорость
приземного ветра (на стандартной высоте измерений 6—12 м над
земной поверхностью) при буре составляет, по разным источникам,
15—20 м/с и более (21-25 м/с или 75-88 км/ч). Бури бывают снежные,
песчаные и водные. Скорость ветра при буре гораздо меньше, чем при
урагане, однако буря чаще всего сопровождается переносом песка,
пыли или снега, что приводит к ущербу се�


174:|ьскому хозяйству, путям сообщения и другим отраслям экономики.



175:デフォルトの名無しさん
18/05/02 00:18:35.47 WLxRJQ+g.net
Буря может наблюдаться:
при прохождении тропического или внетропического циклона;
при прохождении смерча (тромба, торнадо);
при шквале — кратковременном усилении ветра, связанном с местной или фронтальной грозой.
К бурям по шкале Бофорта относятся ветры скоростью более 20 м/с (9 баллов), а к ураганам — ветры со
скоростью более 32,6 м/с (12 баллов). Кроме того, по этой шкале различают:
сильную бурю со скоростью 24,5-28,4 м/с (10 баллов);
жестокую бурю со скоростью 28,5-32,6 м/с (11 баллов).

176:デフォルトの名無しさん
18/05/02 00:19:06.57 WLxRJQ+g.net
Термин «ураган» имеет также более узкое значение — тропический циклон. По месту образования тропические циклоны делят на:
Субтропический шторм
Тропический шторм
Ураган (Атлантический океан)
Тайфун (Тихий океан)
Если скорость ветра в тропическом циклоне превышает 60 км/ч, ему присваивается собственное имя.

177:デフォルトの名無しさん
18/05/02 00:20:01.14 WLxRJQ+g.net
По мнению американских учёных, для областей, расположенных в
северных широтах, снежной бурей можно считать зимний сильный
ветер, во время которого скорость ветра достигает и превышает 15 м/с (56 км/ч).
При этом температура воздуха опускается до −7 °C и ниже.
Территория распространения снежной бури может быть сколь угодно обширной.

178:デフォルトの名無しさん
18/05/02 00:32:41.39 Ahv/tBZs.net
数学は少なくとも話してる本人は内容を理解している
一方お前のクソみたいなロシア語はお前はその内容を理解していない
一つ聞くが、お前がコピペした文章の中には原意が支配するという意味のロシア語の単語が出てくるが、
その単語の性数態をお前は適切にこたえられるか?
答えられないだろうな。奇を衒って知りもしない外国語の文章をコピペしただけなんだから

179:デフォルトの名無しさん
18/05/02 00:46:25.46 bQ3xZw0Z.net
>>158
これは普通のナップザック問題と違って、荷物を積む積まないの選択肢のみならず
それに加えナップザック中に残されているスペースの形状・大きさ、
荷物を積むならば配置する向きと位置
そういったすべての条件の組み合わせに配慮して、最終価値最大の解を探索せねばならず、
単に荷物の重さと価値のみに着目して動的計画法で価値最大化プログラムをちょいちょいと書く
ような課題とは全然違った難しさがあるな…

180:デフォルトの名無しさん
18/05/02 00:47:08.25 WLxRJQ+g.net
なるほど。じゃ落語で埋めてくわ。
本人が理解してりゃスレ違いでもいいらしいからな。

181:デフォルトの名無しさん
18/05/02 00:49:53.30 Ahv/tBZs.net
>>174
数学が理解できなくてそんなに悔しかった??
自分がロシア語も理解できないのにコピペしたのがバレてそんなに悔しかった??
本当に惨めだね。あ、僕は落語なら浜野矩随が好きだからよろしくね、ど低能くん^^

182:デフォルトの名無しさん
18/05/02 00:50:17.20 WLxRJQ+g.net
こんな話がございます。
両国の回向院に猫塚トいうものがございます。
猫が死にますト、飼い主が回向料とともに、猫の亡骸を持ち込みまして。
寺の僧侶がお経を読んで、猫を葬ってくれるという。
これは、この塚に最初に入ったという猫の話でございます。
八丁堀の玉子屋新道に、魚屋を営む定吉ト申す者がございました。
もっとも、魚屋とは名ばかりで、その実は博奕打ちでございます。
毎日を遊んで暮らしている。

183:デフォルトの名無しさん
18/05/02 00:50:56.06 WLxRJQ+g.net
この日も、朝湯の帰りに馴染みの三河屋という居酒屋に立ち寄りまして。
風呂あがりの一杯とばかりに、呑気に引っ掛けておりますト。
ポカッ、ポカッと、頭の上から妙な音が聞こえてくる。
博奕打ちというのは、我々とはものの考え方が異なっているようで。
―板に何かを叩きつける音がする。
なるほど、やってやがるな―

184:デフォルトの名無しさん
18/05/02 00:51:47.73 WLxRJQ+g.net
ト、てっきり丁半博打の壺を伏せる音と勘違いいたしまして。
「おい、六さん」
店の者を呼びつけます。
「なんだい、水臭えじゃねえか。やってるならやってるで、教えてくれてもいいだろうに。俺も仲間に入れてくれ。取り次いでくんなよ」
「博奕ですか。滅相もない。うちではそういったことはさせません。二階は物置ですよ」

185:デフォルトの名無しさん
18/05/02 00:53:01.26 WLxRJQ+g.net
それでも、確かに音がするのは妙でございます。
店の者が二階へ上がっていって、やがて下りてまいりました。
「分かりました。あれは猫です」
こういった店は、商売柄、どうしても猫が寄ってくる。
今朝も早くに仕入れておいたイナダを、勝手に食ってしまったそうで。
あんまり腹が立つから、焼け火箸で目玉を刺してやろうかとも思ったが。
店の主人が、せめて橋の上から放り投げる程度にしてやれと言ったという。

186:デフォルトの名無しさん
18/05/02 00:54:13.04 WLxRJQ+g.net
「それで柱にふん縛っておいたんですがね。今、見に行ったら、なんとか逃げ出そうとして、立ち上がっては倒れてやがる。あれはその音ですよ」
定吉は柄にもなく、猫がちょっと不憫に思えまして。
死なせるくらいなら、自分が引き取って育てるからト。
金を渡して猫を貰い受けました。
差し毛の一本も見当たらない、正真正銘の黒猫です。
定吉は懐に入れるト、店を出て家に帰った。

187:デフォルトの名無しさん
18/05/02 00:54:44.10 WLxRJQ+g.net
家では女房のお滝が待っています。
定吉が懐から黒猫を取り出しますト、途端に渋い顔を浮かべまして。
「やだよ、そんなものを持って帰って。私は猫は嫌いなんだよ」
ト、そっぽを向いて風呂に行ってしまう。
定吉は、自分が命を救ってやった猫ですから。
恩を着せるわけではないが、やはり可愛い。
一人残った家の中で、猫を抱き上げて話しかける。

188:デフォルトの名無しさん
18/05/02 00:55:53.83 WLxRJQ+g.net
「そういや、名前を聞いてこなかったな。大抵の猫ならタマとかミケとか付けるんだが、お前はそんなガラじゃねえ。全身真っ黒で、熊みてえだもんな。そうだ。クマってのはどうだ」
するト、猫がにゃーごト鳴く。
「にゃーごだと。ヘヘ。鳴かなくていいから、恩返しのひとつでもしてみろよ。俺をちょっとは儲けさせてくれたら、拾った甲斐もあるってもんだ」
ト、猫に博奕の講釈をいたします。

189:デフォルトの名無しさん
18/05/02 00:57:44.85 WLxRJQ+g.net
「一つでやるのをチョボイチ、 二つ使うのを丁半、三つ使うのをきつねと言う。俺がやってるのは丁半だ。グニの半、二ゾロの丁ってな」
定吉は賽を湯のみに入れて、畳の上に伏せますト。
「どうだ。表から見たらどの目か分からないだろう。だから、銭を賭けて当てるんだ。猫は魔物というから、お前なら当てられるだろう。おい、なんとか言ってみろよ」
猫は相変わらず、にゃーごト鳴く。

190:デフォルトの名無しさん
18/05/02 00:58:41.40 WLxRJQ+g.net
「俺は、丁が出ると思うな。お前は何だ。にゃーごか。よし、俺が丁で、お前がにゃーご。勝負ッ」
ト、戯れながら湯呑みを開けますト、一二の半。
「おかしいな、半か。するってえと、お前のにゃーごは半か。ヘヘ、にゃご半か。それじゃあ今度は俺が半だ」
すると、今度は猫がにゃご、にゃごト、二回鳴く。

191:デフォルトの名無しさん
18/05/02 00:59:18.14 WLxRJQ+g.net
「なんだい、妙な鳴き方をしやがる。今度はにゃごにゃごの丁ってか」
ト、笑いながら湯呑みを開けるト、二ゾロの丁。
それから何度繰り返してみましても、猫がにゃーごと鳴くと半。
にゃごにゃごト、二回鳴くと丁が出ます。
「お前、本当に恩返ししてくれるつもりだな。こいつはいい」

192:デフォルトの名無しさん
18/05/02 01:00:01.79 WLxRJQ+g.net
それから定吉は、賭場へ行くたびにこの猫を懐に忍ばせていく。
にゃーごの半、にゃごにゃごの丁で、どんどん金が儲かりまして。
羽振りがよくなるト、兄い、親分と立てられるようになる。
猫を始終連れて歩くので、そのうちに猫定と呼ばれるようになった。

193:デフォルトの名無しさん
18/05/02 01:03:08.53 WLxRJQ+g.net
博徒の世界では、あだ名がついたら一人前ト申すそうでございますが。
一人前になるト、自然、悪評も目立つようになる。
そのうちに江戸にいられなくなり、ふた月ばかり旅に出ることにいたしまして。
定吉は、猫を女房に預けて家を出た。
これが惨劇の幕開けでございます。
―チョット、一息つきまして。

194:デフォルトの名無しさん
18/05/02 01:03:26.56 bQ3xZw0Z.net
数学厨よりひどいあらしだな
スレが機能しなくなっちゃった

195:デフォルトの名無しさん
18/05/02 01:04:21.64 WLxRJQ+g.net
どこまでお話しましたか。
そうそう、博奕打ちの定吉が、猫の鳴き声で賽の目を当て、兄い、親分ト立てられるようになるところまでで―。
亭主の定吉が家を空けますト。
女房のお滝は、子分の若い者を家に引き入れるようになりまして。
長屋の住人たちが眉をひそめるのも、まったく気にしておりません。

196:デフォルトの名無しさん
18/05/02 01:13:03.09 p96PUqzp.net
数学ができないやつは論理的思考もできないということを示す良い例だな
頼むからスレから未来永劫消えてくれ

197:デフォルトの名無しさん
18/05/02 01:17:36.33 bQ3xZw0Z.net
いてもいいけど荒らすな
お題を出し
解答プログラムを書くこと

198:デフォルトの名無しさん
18/05/02 01:21:54.54 Ahv/tBZs.net
あの~続きが気になるから URLリンク(onboumaru.com) から無断転載した「猫定」を
最後まで張ってくださいませんか?? 無能ロシア語落語さん^^

199:デフォルトの名無しさん
18/05/02 01:22:07.91 WLxRJQ+g.net
自分が理解できれば何を書いてもいいというのは数学厨が示したルールだが。
文句を言われたらこう言って開き直ればいいそうだ。
「自分が理解できないからって荒らし呼ばわりは惨めすぎるね」

200:デフォルトの名無しさん
18/05/02 01:23:03.68 bQ3xZw0Z.net
勘弁してくれよ
それこそよそでやってくれ

201:デフォルトの名無しさん
18/05/02 01:23:13.12 WLxRJQ+g.net
>>192
了解。>>192の依頼に従い、続行する。

202:デフォルトの名無しさん
18/05/02 01:24:29.12 WLxRJQ+g.net
そのうちに、人の噂も七十五日トばかりに。
ほとぼりが覚めた頃を見計らって、定吉が江戸に帰ってくる。
帰ってくるト、猫を連れてまたぞろ博奕へ出掛けます。
その夜。
お滝は、間男の若い者を呼びつけ、相談をした。
定吉がいては、お互い落ち着いて逢瀬を楽しむこともままならない。
いっそ、ひと思いに殺してしまってほしい。

203:デフォルトの名無しさん
18/05/02 01:24:49.92 p96PUqzp.net
>>193
数学は少なくともスレのお題と関係があったがお前のクソみたいなコピペはスレと無関係のただの荒らしだろうが
どっちもウザイのは同じだが、一緒くたにすんなハゲ!

204:デフォルトの名無しさん
18/05/02 01:25:10.76 WLxRJQ+g.net
若い者は、親分の家の姉御に見込まれたことで、男が上がったつもりになり。
箒を斜に切って油をかけ、ジリジリと火で炙る。
これは竹槍を作っているのでございます。
そうして、鯵切り包丁を手ぬぐいで包みますト。
腰に差して、長屋を飛び出していきました。
定吉は、馴染みの賭場へやってきておりましたが。
その晩はどうしたことか、猫が一向に鳴きません。

205:デフォルトの名無しさん
18/05/02 01:26:10.04 WLxRJQ+g.net
体の具合が悪いのだろうか。
まあ、今まで稼がせてもらったのだから。
ト、この時にはすでに情が移っておりますから。
猫の具合を優先して、素直に帰ることにいたしました。
賭場を出るト、ポツポツと雨が降り出してくる。
定吉は猫を懐に大事にしまって、新橋の喜多川といううなぎ屋に駆け込んだ。
一杯やりながら、猫に鰻の切れ端をやるのが、この頃の楽しみでございます。
ところが、いつもはよく食う猫が、これまた今日に限って口をつけようといたしません。

206:デフォルトの名無しさん
18/05/02 01:28:05.76 WLxRJQ+g.net
続きを張れと言ったのは数学厨な。

207:デフォルトの名無しさん
18/05/02 01:29:36.61 p96PUqzp.net
責任転嫁すんなハゲ
お前のせいで直近のお題が迷子だっつーの
もう二度とこないでください

208:デフォルトの名無しさん
18/05/02 02:28:44.50 /DSye1oK.net
>>201
お前さんがやってる煽りも、ロシア語はってるいじけた小学生みたいな奴と同じレベルだよ。数学ができたとしても精神レベルは同程度。お前さんにどんな言い分があろうとも、周囲からはそう見える。

209:デフォルトの名無しさん
18/05/02 02:46:19.96 7KO0UxVX.net
重み付き3次元箱詰め問題みたいなもんをここのお題に出すバカ
各都市の区の具体的なグラフが必要な問題をそれぞれのグラフも与えずに出すバカ
自分で解いて楽しいかどうか考えろよ

210:デフォルトの名無しさん
18/05/02 02:57:52.71 MBc9Gfy6.net
出題時の注意>>4

211:デフォルトの名無しさん
18/05/02 02:59:10.33 bQ3xZw0Z.net
そら言えてる

212:デフォルトの名無しさん
18/05/02 03:36:28.18 XZO+Bco0.net
お題が流れたみたいなのでリンクまとめ
>>11
"073:0" -> 18
"07362:450" -> 36
"06464:36470" -> 42
"0827171:28480" -> 66
"0737491:28180" -> 146
"05374734372747484:184618186912120" -> ?
>>40
[-1, 2, 8, -9, -2, -3, -6, -10, -8, 5, 7, 9, 7]
-> [-1, -9, -3, 5, 7, 9, 7, 2, 8, -2, -6, -10, -8]
>>78
"213cba213cba213cba" -> "213aaa213bbb213ccc"
>>103
gccgc -> 2
ggggggg -> 0
cppcppppccpppppc -> 5
cppcppppccpgpppc -> 0
>>118
odaiodai -> 2
ooddaai -> 1
idao -> 0
ododoadioadioadioadioadioadiodaioadodioadiaodi -> ?

213:デフォルトの名無しさん
18/05/02 05:46:42.10 hUDFoTxj.net
お題:Hello, World!を10回出力してください。ただし、偶数文字を小文字、奇数文字を大文字にすること。さらに3の倍数の文字をランダムな英字にすること。

214:デフォルトの名無しさん
18/05/02 07:40:02.20 bQ3xZw0Z.net
>>207 Perl5
use feature 'say';
@s = split'','Hello, World!';
@Az = ('A'..'Z', 'a'..'z');
for $i (0..9) {
do {$s[$_ - 1] = $Az[int(rand(@Az))]
if $_ % 3 == 0} for 1..@s;
my @t;
push @t, $i % 2 ? lc $c : uc $c
while ($i, $c) = each @s;
say @t;
}
実行結果
$ perl 11_206.pl
HeHlOg wQrLz!
HeOlOp wOrLo!
HeAlOh wMrLf!
HeZlOs wJrLz!
HeElOh wBrLg!
HeBlOa wIrLy!
HeFlOw wCrLb!
HeTlOc wSrLp!
HeOlOm wNrLx!
HeJlOt wSrLl!

215:デフォルトの名無しさん
18/05/02 09:59:45.49 hcdKMJ5x.net
>>207 Squeak/Pharo Smalltalk
Transcript open.
10 timesRepeat: [
| hello |
hello := 'Hello, World!' collectWithIndex: [:chr :idx |
((idx isDivisibleBy: 3) ifTrue: [Character alphabet atRandom] ifFalse: [chr])
perform: (idx even ifTrue: [#asLowercase] ifFalse: [#asUppercase])
].
Transcript cr; show: hello
]
=> HeYlOz wJrLp!
HeNlOe wArLr!
HeBlOn wWrLi!
HeSlOx wOrLk!
HeKlOy wRrLb!
HeIlOs wJrLw!
HeMlOd wGrLm!
HeElOz wLrLf!
HeJlOw wUrLr!
HeTlOe wMrLy!

216:デフォルトの名無しさん
18/05/02 10:26:22.57 PqZlWADT.net
>>207 Common Lisp
URLリンク(ideone.com)

217:デフォルトの名無しさん
18/05/02 11:55:19.15 .net
>>207
C言語
URLリンク(ideone.com)

218:デフォルトの名無しさん
18/05/02 12:51:34.17 lkl981AK.net
お題
N項目のレーダーチャートを考える。
各項目の点数が配列A[N]で与えられるので、
項目の並べ方を調整して、レーダーチャートの面積を最大化せよ。
※レーダーチャートの形状は正N角形であり、A[i]は中心からの距離を意味する。
{4,3,2,1,0}
=> 10.9371 //{0,1,3,4,2}
{10,0,0,10,10,0,10,10}
=> 141.421 //{0,0,0,10,10,10,10,10}
{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}
=> 280.698

219:デフォルトの名無しさん
18/05/02 12:58:12.60 Zqd7NSI/.net
>>207 Emacs Lisp
(defun* f (a &aux (b 0))
(map 'string (lambda (c) (let ((d (if (= (% (incf b) 3) 0) (+ ?a (random 26)) c))) (if (oddp b) (upcase d) (downcase d)))) a))
(mapc (lambda (x) (princ (funcall #'f x)) (terpri)) (make-list 10 "Hello, World!"))
HeElOf wBrLb!
HeAlOj wYrLk!
HeZlOz wQrLd!
HeBlOh wIrLm!
HeMlOy wIrLb!
HeZlOo wTrLk!
HeRlOq wErLv!
HeFlOn wKrLq!
HeAlOg wQrLv!
HeFlOa wRrLi!

220:デフォルトの名無しさん
18/05/02 16:46:53.87 Zqd7NSI/.net
>>212 Emacs Lisp
(defun* f (a &aux b c)
(loop for i from 0 below (length a) do
(if (< i 3)
(setq b (append b (list (nth i a))))
(dotimes (n (length b))
(push (cons (+ (abs (- (nth n b) (nth i a))) (abs (- (nth (% (1+ n) (length b)) b) (nth i a)))) n) c))
(let ((d (1+ (cdar (sort (copy-seq c) (lambda (a b) (< (car a) (car b))))))))
(setq b (append (subseq b 0 d) (list (nth i a)) (nthcdr d b))))))
b)
(defun g (a)
(flet ((b (c d e)
(when (> c d) (rotatef c d))
(if (= d 0) 0.0 (* d (sin (/ pi e)) d (cos (/ pi e)) c (/ (float d))))))
(let ((h (length a)) (i 0.0))
(dotimes (n h)
(incf i (apply #'b (list (nth n a) (nth (% (1+ n) h) a) h))))
i)))
(f '(1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16)) => (1 2 4 6 8 10 12 14 16 15 13 11 9 7 5 3)
(g (f '(1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16))) => 280.69829763979334

221:
18/05/02 17:33:20.51 R3g8E+PO.net
有効な(注:主観による)お題一覧
>>11
>>40
>>78
>>81
>>88
>>103

222:
18/05/02 17:33:54.32 R3g8E+PO.net
>>215
>>118
>>151
>>207
>>212

223:デフォルトの名無しさん
18/05/02 17:52:43.41 ja0hTifx.net
>>212
J
山型に並べるだけ。
証明は略
(谷がある並び順は谷底を移動してより大きく出来ることが示せる。
谷がない場合、頂上から左右に振り分けて行くのが最大と示せる)
NB. sin α
sinA =: 1&o.@((o.2)&%)@#
NB. ズラして掛けた総和
s =: +/@(*(}.@,{.))"1
NB. 山型に並べる
raz =: (/:[)/:(/:+/@(* ,~/"1)@(*\)@i.@#)
NB. 山型に並べてズラして掛けた総和にsinα掛けて半分にする
ans =: -:@(sinA*(s@raz))
1行で書くと
ans =: -:@(1&o.@((o.2)&%)@#*+/@(*(}.@, {.))"1@((/:[)/:(/:+/@(*,~/"1)@(*\)@i.@#)))
実行例
ans 4 3 2 1 0
10.9371
ans 10 0 0 10 10 0 10 10
106.066
ans 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
280.698
URLリンク(%62it.ly)

224:デフォルトの名無しさん
18/05/02 18:09:55.15 ja0hTifx.net
>>212
J 一応総当たりも (sinA, s は同じ)
all =: A.~(i.@!@<:@#)
min =: >./
ans2 =: -:@((sinA)*(min@(s@all)))
実行例
ans2 4 3 2 1 0
10.9371
ans2 10 0 0 10 10 0 10 10
141.421
ans2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|out of memory: all
| ans2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

225:デフォルトの名無しさん
18/05/02 18:10:22.50 TAWRfgOr.net
>>207 octave
URLリンク(ideone.com)

226:デフォルトの名無しさん
18/05/02 18:11:53.98 ja0hTifx.net
あれ?バグってるなこれ
総当たりの方は取り消します

227:デフォルトの名無しさん
18/05/02 18:20:29.66 ja0hTifx.net
違った
山型に並べる方を取り消します、だった。

228:デフォルトの名無しさん
18/05/02 18:27:52.12 ja0hTifx.net
>>217
正しくはこうでした
sinA =: 1&o.@((o.2)&%)@#
s =: +/@(*(}.@,{.))"1
raz =: ((\: [) {~ (/: (* <:@(2&*)@(2&|)))@i.@#)
ans =: -:@(sinA*(s@raz))
1行にするのは略
URLリンク(%62it.ly)

229:デフォルトの名無しさん
18/05/02 19:04:01.98 intU8xfF.net
>>207
Perl
URLリンク(paiza.io)
改行入れないで変換しちゃったが、指定がないからまあいいか。

230:デフォルトの名無しさん
18/05/02 19:12:21.47 intU8xfF.net
>>212
それ、俺の直感ではsortすればいいだけなんじゃあ?
証明できんけど。

231:デフォルトの名無しさん
18/05/02 19:28:18.08 bfgs8qRD.net
>>224
>>212
… (ry
> {4,3,2,1,0}
> => 10.9371 //{0,1,3,4,2}
_________~ ~

232:デフォルトの名無しさん
18/05/02 19:30:41.81 intU8xfF.net
>>225
あー。ちょっと違うな。崖作らずに山作る感じか。
証明できんけどw

233:デフォルトの名無しさん
18/05/02 20:02:43.46 ja0hTifx.net
>>226
「大きい方から順に取って、既存の列の大きい端の外側に配置」を繰り返せばいい
0 1 2 3 4 のときは
4
4, 3
2, 4, 3
2, 4, 3, 1
0, 2, 4, 3, 1
この時の面積は
1/2・sin 72° ・(0*2+2*4+4*3+3*1+1*0) = 10.9371

234:デフォルトの名無しさん
18/05/02 20:20:59.85 E/2WxUaU.net
ググったら公式出てきた
URLリンク(chaoxuprime.com)
プログラムでやるなら、数列の前項後項の積和を最大化する方針がいいのかな

235:225
18/05/02 20:32:00.70 QUr6vWwN.net
面倒なので証明しないで全パターンの面積を求めて最大のやつを出すように作ろうかと思ったが、
腹が減ったので飯食ってから考えよう。(というかこうするならほとんど考える必要ないなこれw)

236:211
18/05/02 20:37:30.10 lkl981AK.net
問題思いついた後、ググって>>228見つけたので出題した次第です。
最小化については上手い方法があるんだろうか?

237:デフォルトの名無しさん
18/05/02 20:44:42.35 ja0hTifx.net
>>228
そのπってのが真ん中から左右に配置して行くインデックス列。
でその証明は不完全(*1)だけど結論は合ってる。
(*1)
n-1個の時の最大になる列のどこかに
n番目の数を挿入すればn個の時の解が得られる、
ということを証明せずに利用している。
小さくするには山谷の数を多くする(小さいのと大きいのがなるべく隣接するように置く)
ってことは直感的にわかるんだけど具体的な構成法は考察がいるな

238:デフォルトの名無しさん
18/05/02 22:20:26.25 hcdKMJ5x.net
>>212 Squeak/Pharo Smalltalk
| fn |
fn := [:arr |
| strm res |
strm := arr sorted readStream.
res := OrderedCollection withAll: (strm next: 3).
[strm atEnd] whileFalse: [
| next foundPos |
next := strm next.
foundPos := (1 to: res size) detectMax: [:idx |
| a1 a2 |
(a1 := res at: idx) + (a2 := res atWrap: idx+1) * next - (a1 * a2)].
res add: next afterIndex: foundPos
].
res := res asArray.
(res * (2 * Float pi / res size) sin * ({res last}, res allButLast) / 2) sum -> res
].
fn value: #(4 3 2 1 0).
"=> 10.937149937394265->#(0 1 3 4 2) "
fn value: #(10 0 0 10 10 0 10 10).
"=> 141.42135623730948->#(0 10 10 10 10 10 0 0) "
fn value: #(1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16)
"=> 280.6982976397934->#(1 2 4 6 8 10 12 14 16 15 13 11 9 7 5 3) "

239:デフォルトの名無しさん
18/05/03 00:37:28.69 hmU6w2gD.net
>>231 最小を目指して, 山谷の数を多くしてみました.
(defun f2 (a)
(let* ((b (sort (copy-seq a) #'<))
(c (/ (length b) 2))
(d (let ((e (subseq b 0 c))) (apply #'append (mapcar (lambda (x) (let ((y (pop e))) (if y (list x y) (list x)))) (reverse (subseq b c))))))
(h))
(loop for i from 0 below (length d) do (setq h (if (or (= (% i 4) 1) (= (% i 4) 2)) (append h (list (nth i d))) (append (list (nth i d)) h))))
h))
(f2 '(1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16))
(8 10 6 12 4 14 2 16 1 15 3 13 5 11 7 9)
(g (f2 '(1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16)))
157.47423241823444

240:デフォルトの名無しさん
18/05/03 00:59:37.08 SwM9YWB0.net
>>207
Bash
URLリンク(ideone.com)
エラーには目を瞑ってください

241:デフォルトの名無しさん
18/05/03 01:32:09.14 .net
>>234
無為に捨てられる何千もの’Hello, World!’がかわいそうすぎね?(´;ω;`)

242:デフォルトの名無しさん
18/05/03 01:32:43.19 rKkc5eBg.net
>>212 Perl5
URLリンク(ideone.com)
自力で動的計画法による解法を考えようとしていたけど、
>>228で紹介されたWEBの解法に勝る見込みが無さそうなので
思考を停止してWEBの解法を愚直に実装したものです

243:デフォルトの名無しさん
18/05/03 09:34:11.17 dYPbvGoR.net
【お題】
与えられた整数のリストで、
2つの要素の和が100になるすべての組を列挙せよ。
例:
[1, 99, 20]
-> [


244:[1, 99]] [62, 116, 181, 86, 60, 98, -16, 73, 131, 16, 80, -81, 40] -> [[40, 60], [-16, 116], [-81, 181]] [100, 0, 100, 0] -> [[0, 100], [0, 100], [0, 100], [0, 100]]



245:デフォルトの名無しさん
18/05/03 10:12:06.60 6SfrUic2.net
>>237 Rust
URLリンク(play.rust-lang.org)

246:デフォルトの名無しさん
18/05/03 10:13:33.58 ngB6qDho.net
>>237 ruby
URLリンク(ideone.com)

247:デフォルトの名無しさん
18/05/03 10:19:06.64 m6mdbiEz.net
>>237
Ruby。
ary.combination(2).select{|x|x.inject(:+)==100}

248:デフォルトの名無しさん
18/05/03 10:45:51.16 uFV+Z8SY.net
>>237 Squeak/Pharo Smalltalk
| fn |
fn := [:arr |
| bag |
bag := Bag new.
arr combinations: 2 atATimeDo: [:comb |
comb sum = 100 ifTrue: [bag add: comb sorted]].
bag asArray
].
fn value: #(1 99 20).
"=> #((1 99)) "
fn value: #(62 116 181 86 60 98 -16 73 131 16 80 -81 40).
"=> #((-81 181) (-16 116) (40 60)) "
fn value: #(100 0 100 0).
"=> #((0 100) (0 100) (0 100) (0 100)} "

249:デフォルトの名無しさん
18/05/03 11:34:54.61 .net
>>237
C言語
URLリンク(ideone.com)

250:デフォルトの名無しさん
18/05/03 13:12:32.47 N6jONgbj.net
>>237 Perl5
use Data::Dump 'dump';
for ([1, 99, 20],
[62, 116, 181, 86, 60, 98, -16, 73, 131, 16, 80, -81, 40],
[100, 0, 100, 0]) {
sub c {my $d = shift;
my @l = c(@_) if 1 < @_;
@l, map{[$d, $_]} @_};
@s = grep{100 == $$_[0]+$$_[1]} c @$_;
print dump($_)."\n->".dump(\@s)."\n";
}

実行結果
$ perl 11_236.pl
[1, 99, 20]
->[[1, 99]]
[62, 116, 181, 86, 60, 98, -16, 73, 131, 16, 80, -81, 40]
->[[60, 40], [181, -81], [116, -16]]
[100, 0, 100, 0]
->[[100, 0], [0, 100], [100, 0], [100, 0]]
※実行にはperlのData::Dumpモジュールが必要ですが、
 Ideoneのperl 24にはインストールされてないようでした

251:デフォルトの名無しさん
18/05/03 13:15:16.16 ngB6qDho.net
>>237 c
URLリンク(ideone.com)

252:デフォルトの名無しさん
18/05/03 14:31:25.30 M52LYEAa.net
>>237 javascript
var f = l => {
console.log(
l.reduce((acc, m, i, ary) =>
[
...acc,
...ary.slice(i+1)
.filter(n => m + n == 100)
.map(n => [m, n])
],
[]
)
)
}
f([1, 99, 20])
//=> [[1, 99]]
f([62, 116, 181, 86, 60, 98, -16, 73, 131, 16, 80, -81, 40])
//=> [[116, -16], [181, -81], [60, 40]]
f([100, 0, 100, 0])
//=> [[100, 0], [100, 0], [0, 100], [100, 0]]

253:デフォルトの名無しさん
18/05/03 14:55:50.12 cjR1ezGU.net
Smalltalk のメソッドの充実っぷりには毎回感心

254:デフォルトの名無しさん
18/05/03 18:28:55.09 qi+bYfi0.net
それなりの規模の処理系(GUI付きOSモドキ)をセルフホスティングで構築・維持していると
イディオムがイディオムとして認識・共有されやすく、さらにメソッドとしてまとめられやすいのかも
たとえばスクリプト言語処理系でしかないGNU Smalltalkはあまり便利メソッドが増える感じがしないので

255:デフォルトの名無しさん
18/05/04 19:54:42.66 4Zt1BODM.net
お題
10,000個の単純変数に1から10,000の整数を代入する

256:デフォルトの名無しさん
18/05/04 20:34:39.46 6j9W/G+p.net
>>248 Ruby
(1..10000).each{|i|instance_variable_set("@v#{i}", i}

257:デフォルトの名無しさん
18/05/04 20:41:53.19 LfImqqRO.net
>>248 Common Lisp
URLリンク(ideone.com)

258:デフォルトの名無しさん
18/05/04 20:52:57.61 LfImqqRO.net
>>248 Bash
ideone だと駄目だった
URLリンク(ideone.com)

259:デフォルトの名無しさん
18/05/04 21:16:29.34 sij7cbOA.net
>>248
Perl
for(1..10000){eval”\$a$_=$_”}
こんなんでいいのか


260:?



261:デフォルトの名無しさん
18/05/04 21:23:10.57 sij7cbOA.net
>>251
シェルもperlみたいにeval使えば簡単だと思うよ。その他の言語も同様。
てかこれ、インタープリタの言語にはできてもコンパイルする言語の場合は普通の方法ではできないんじゃないかな。
トリッキーな方法使ってようやっとできるかも知れないって感じじゃないだろうか。

262:デフォルトの名無しさん
18/05/04 21:49:18.32 .net
Cプリプロセッサでもやろうと思えばできるけど面倒だからやらない

263:デフォルトの名無しさん
18/05/04 21:57:55.58 mhxe2Hc6.net
お題:パイ生地を折り畳め
ただし要素数は二個以上で偶数とする
気が向いた人は逆の操作も実装せよ
URLリンク(ideone.com)

264:デフォルトの名無しさん
18/05/04 22:02:19.57 sij7cbOA.net
>>255
問題の意味がわからん

265:デフォルトの名無しさん
18/05/04 23:16:59.35 .net
>>256
分からないときは好きに解釈していいのがこのスレのルール

266:デフォルトの名無しさん
18/05/05 00:33:22.15 1BpKS+ks.net
>>255 Perl5
sub f {pop, shift, @_ ? f(@_) : ()}
sub g {@_ ? do{my $a = shift; shift, g(@_), $a} : ()}
use feature 'say';
sub pai {
say "@pai";
@pai = f(@pai); say "@pai";
@pai = g(@pai); say "@pai";
}
@pai = qw{1 2 3 4 5 6}; &pai;
@pai = qw{a b c d e f}; &pai;
実行結果
$ perl 11_254_1.pl
1 2 3 4 5 6
6 1 5 2 4 3
1 2 3 4 5 6
a b c d e f
f a e b d c
a b c d e f

267:デフォルトの名無しさん
18/05/05 01:53:30.67 ia6t0Ogc.net
f, g のような変換関数を作ること自体は簡単な感じがするが、それと「パイ生地の折り畳み」がどう関係するのかがわからんな。
単にここでは折り畳んだらそういう並びになるというルールなだけ?

268:デフォルトの名無しさん
18/05/05 01:54:26.33 0a7ZDXtf.net
>>255 Common Lisp
URLリンク(ideone.com)

269:デフォルトの名無しさん
18/05/05 02:02:07.19 1dAfhim4.net
半分に折る->後半部を逆順に
折重ねたまま元の大きさまで伸ばす->前半部に合成
パイ生地の作り方からの連想だとは思う

270:デフォルトの名無しさん
18/05/05 02:08:07.54 j/DSqy58.net
>>248 javascript
eval('var ' + [...Array(10000)].map((_, i) => `a${i+1}=${i+1}`).join())
>>253の通りやった

271:デフォルトの名無しさん
18/05/05 02:13:33.62 1BpKS+ks.net
>>259 分からないと言うことをいろいろ言うつもりは無いけどm
>>255 のレスの内容とoctaveのコードから考えて
1 2 3 5 6
をパイ生地のように二つに折り畳んだ
1 2 3
6 5 4
を(下を先に選択して)リストで表すと
6 1 5 2 4 3
だということは想像に難くないので、そう解釈して解答を考えた。
gはその逆。誤解はあるかもしれない。
講釈がコードより長くなったけど、
「だけ?」って一体どういういみだよ?

272:デフォルトの名無しさん
18/05/05 02:43:53.26 ia6t0Ogc.net
>>263
「パイ生地の折り畳み」という言葉に他の意味がないかってこと。

273:デフォルトの名無しさん
18/05/05 07:20:49.47 lTVCLXC3.net
>>255
J
l =: -: * -.@(2&|)
r =: (# - -:@>:) * 2&|
p_fold =: {~((l+r)@i.@#)
折りたたみちょっと面白いね
何度か繰り返し適用すると元に戻る
例えば4つだと p_fold^:3 (1 2 3 4) => 1 2 3 4
と3回適用すると元に戻る
(^:n ってのはn回適用するJの仕組み)
同様に
p_fold^:5 (1 2 3 4 5 6) =>1 2 3 4 5 6
p_fold^:4 (1 2 3 4 5 6 7 8) => 1 2 3 4 5 6 7 8
p_fold^:9 (1 2 3 4 5 6 7 8 9 10) => 1 2 3 4 5 6 7 8 9 10

274:デフォルトの名無しさん
18/05/05 10:31:30.99 5+ZWBL/x.net
>>255 Ruby 条件分岐を使わずにindexのみから求めてみた
f=->a{a.size.times.map{|i|a[(i&1)*i-i/2-1]}}
g=->a{(s=a.size).times.map{|i|a[~(4*i-2*s+3).abs/2]}}
p f[[*1..6]] #=> [6, 1, 5, 2, 4, 3]
p g[f[[*1..6]]] #=> [1, 2, 3, 4, 5, 6]

275:デフォルトの名無しさん
18/05/05 11:51:20.86 .net
>>255
C言語
URLリンク(ideone.com)

276:デフォルトの名無しさん
18/05/05 14:19:41.02 E0VTmDdu.net
>>255 Squeak/Pharo Smalltalk
| f g pie |
f := [:arr |
((1 to: arr size)
collect: [:idx | arr perform: (#(atLast: at:) atWrap: idx) with: (idx / 2) ceiling]
) as: arr species
].
g := [:arr |
(((1 to: arr size) select: #even), ((1 to: arr size) select: #odd) reversed
collect: [:idx | arr at: idx]
) as: arr species
].
pie := 'abcdefg'.
pie := f value: pie. "=> 'gafbecd' "
g value: pie. "=> 'abcdefg' "
pie := (1 to: 7).
pie := f value: pie. "=> #(7 1 6 2 5 3 4) "
g value: pie. "=> #(1 2 3 4 5 6 7) "

277:デフォルトの名無しさん
18/05/05 16:41:53.04 YacZpoVZ.net
>>255 Squeak/Pharo Smalltalk >>266っぽい方針も入れて書き直し
| f g pie |
f := [:arr |
((1 to: arr size)
collect: [:m | arr atWrap: m * m even asBit - (m // 2)]
) as: arr species
].
g := [:arr |
((2 to: arr size by: 2), (1 to: arr size by: 2) reversed
collect: [:idx | arr at: idx]
) as: arr species
].
pie := 'abcdefg'.
pie := f value: pie. "=> 'gafbecd' "
g value: pie. "=> 'abcdefg' "
pie := (1 to: 7).
pie := f value: pie. "=> #(7 1 6 2 5 3 4) "
g value: pie. "=> #(1 2 3 4 5 6 7) "

278:デフォルトの名無しさん
18/05/05 17:07:44.87 ZO4AhgIr.net
>>266ってどういう計算してんの?

279:デフォルトの名無しさん
18/05/05 17:25:53.15 Js8QmTUw.net
お題
N×Mのフィールドが与えられる。各マスの意味は以下の通りとする。
'S':始点
'G':終点
'.':通行可
'#':通行不可
連続して同じ方向に進むことができないという制約下で、
始点から終点までの最短距離を求めよ。
[example 1]
S....
#....
..#..
....G
=> 9
[example 2]
S.....G
.......
=> 12

280:デフォルトの名無しさん
18/05/05 17:33:36.44 5+ZWBL/x.net
>>270
配列の長さを L とすると、
f(パイをたたむ)は;
i(0 <= i < L)番目の要素を元の配列の (~...~[i / 2]) % L 番目から持ってくればよい
(~...~はビット反転を i 回繰り返したもの)
g(パイを開く)は;
i(0 <= i < L)番目の要素を元の配列の (- 0.5 - |2 * i - L + 1.5|) % L 番目から持ってくればよい

281:デフォルトの名無しさん
18/05/05 18:32:03.46 sJdk0i7H.net
[][][] [[[ ] X_[[[ [] ][ [] ][][[[]

282:デフォルトの名無しさん
18/05/05 18:51:54.01 c0K4Xq7n.net
今抱えてる課題
1から100までインクリメントする変数iを用いて
300から1までの実数を100個出力せよ
i=1の時は300
i=100の時は1
となる式を考えてちょ(人・ω・)☆

283:デフォルトの名無しさん
18/05/05 19:03:50.73 1st6shTW.net
>>274
300 - (299.0 / 99.0) * (i - 1)

284:デフォルトの名無しさん
18/05/05 19:06:07.33 j/DSqy58.net
お題:文字駒を滑らせろ
四方を囲いで被われ駒がこぼれる心配のないM×Nマスのボードがある。
ここに英小文字が印字された正方形の駒が適当に配置されている。(駒のないマスは.(ドット)で表す)
与えられる、ボードを傾ける指示を完遂したときの最終盤面を表示せよ。
指示の方向はU(向かい方向)、D(手前方向)、L(左方向)、R(右方向)の四種類。
例1)
solve([
'...',
'.a.',
'...',
], 'UR')
// ↓
// [
// '..a',
// '...',
// '...',
// ]
URLリンク(jsfiddle.net)
※盤面は文字列の配列にしているが文字の配列の配列など言語で扱いやすいよう好きにしてよい
例2)
solve(
[".....", ".d.i.", "kmegk", "..tu."],
"LRRLLUDRRLRLRRURRRRLLLRULDUDULDLLRDULURULUDLDLU



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