TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
[RPA]PC自動化技術総合スレ[効率化] Part.9
VBSで便利なプログラムを作れスレ
【信者】C++の問題点【アンチ】
Gitをより良くするための運用ガイドライン作成スレ
C++相談室 part146
△△もっとStruts2の良さを教えてくださいSsssion6
Gtkプログラミング on Windows!!!
自然言語処理スレッド その4
Rust Part6
VRプログラム雑談【Unity/UnrealEngine】【HTC Vive/Oculus Rift/その他VR】

プログラミングのお題スレ Part11


1 :2018/04/24 〜 最終レス :2018/09/11
プログラミングのお題スレです。

前スレ
プログラミングのお題スレ Part10
https://mevius.2ch.sc/test/read.cgi/tech/1514772904/

【出題と回答例】
1 名前:デフォルトの名無しさん
  お題:お題本文

2 名前:デフォルトの名無しさん
  >>1 使用言語
  回答本文

【ソースコードが長くなったら】 (オンラインでコードを実行できる)
https://ideone.com/
http://codepad.org/
http://compileonline.com/
http://rextester.com/runcode
https://runnable.com/
https://code.hackerearth.com/
http://melpon.org/wandbox
https://paiza.io/

宿題は宿題スレがあるのでそちらへ。

2 :
>>1

3 :
>>1
おちゅ

4 :
出題に際しては
- お題の意図を汲みやすい入出力例も示す
- 事前に自分でもコードを書いてみる

5 :
このスレ久しぶりに来た
数学できない勢だけどよろすこ

6 :
じゃあ過去ログから面白そうなお題探してきて

7 :
>>6
過去ログから持ってきた訳じゃないんだけど、こういうお題を考えた

平面座標aとbが入力されます。bから見てaがおおよそ何時の方角にあるか時刻で出力してください。
例えば座標の方角が2時と3時の中間だった場合は両方の時刻を同時に出力してください。
座標が重なった場合は0時と出力してください。方角の精度は時刻み、分刻みから選択自由とします。

でも何か既視感あるんだよな
過去ログに似たようなお題があったかもしれない

8 :
(逆)三角関数使わずにって制限つければまあまあ面白いかもしれない

9 :
数学じゃん。
紙と鉛筆で解いて算出は電卓でやれ。
プログラムでやっても電卓でできる程度のことしかしないじゃん。

10 :
>>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 "

11 :
過去ログから、さすがにこれはプログラミングの問題でしょ

お題:
下図のように山の麓(標高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" -> ?

12 :
>>11
手計算でやっても答えが一致しないのだが、本当にそんな時間掛かるか?
C++ https://ideone.com/GK5A8F

13 :
>>12
あ、ごめん私が間違えてた
計算し直してくる

14 :
スレの宿題のをやってみた (規制対象なのでurlに全角スペースいれてます)
https://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

15 :
>スレの宿題のを
「前スレの宿題の」と書こうとしてミスしました。
実際のとこ宿題なのかどうかは知らないけど。

16 :
>>14のをちょっとだけ訂正
(コードをcodeの方に書いただけ)
https://bit. ly/2HYN8WH

17 :
>>11
テスト例の最初のやつはなぜ18になるのか?7+3+7=17ではないのか?

18 :
あ、ごめん。寝ぼけてた。すまん。

19 :
7 + (7 - 3) + 7 = 18
あってるよ

20 :
度々ごめん
直に書けないurlはこう貼ればいいとわかったので
(もしかして常識だったか)
https://%62it%2Ely/2Jplh1k

21 :
>>12
最後の b++ は b -- の打ち間違いか

22 :
>>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

23 :
>>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と同じだから、どうなるんだ?

24 :
>>11
理解できてなかったわ
"07362:450" の解がもうわからん

25 :
>>23
Bはa,bどちらも5点ならどちらを選んでも良い

各人は自分の順になったとき、
選択可能な各位置について「以降誰が何をしても最悪でも〜点とれる」という点数を考え、
それが最大になる位置(のうちのどれか一つ)を選ぶ

(何をしても、といってももちろん皆が上記のルールは守るものとする)

ストレートなMin-Max戦略だなこれ

26 :
>>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時間

27 :
>>26
ありがとう
問題は理解できていて頭が悪いだけでした

28 :
>>25
Bのa・b 戦略が、共に5点の同点で、その2つをA に戻すから、

Aは両方を比較しなければならないから、複雑だと思って

29 :
>>11
やってみた
https://ideone.com/LsjBLX

結果
"073:0" => 18
"07362:450" => 36
"06464:36470" => 46
"0827171:28480" => 66
"0737491:28180" => 146
"05374734372747484:184618186912120" => 400


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

30 :
>>11って解無しのパターンってあるのかな?

31 :
>>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
無いんじゃね?

32 :
>>29はバグってた
直したら>>11と一致しました

https://ideone.com/ECmxkW

常に解がありそうだけど証明はどうやるんだろ

33 :
ちょっと考えてみたけど至る所微分不可能な山ではない限り解は存在するね

34 :
適当に折り返すことによって山谷の数を合わせられる
あとは略、って感じか

35 :
数じゃなく高さを合わせるのか
眠くて頭が回らない

36 :
e^(z) + 1 = 0 を満たす全ての z∈C の絶対値の集合をSとする.
この時、Sの中でN番目(N≦10^5)に小さい元を求めよ.
なお, e = Σ{n∈N}(1/n!) である.

37 :
数学じゃん。まーたセンセか。
数学板で相手してもらえないのかな?

38 :
つまんね

39 :
N番目に大きな正の奇数を求めよ、みたいな

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]

41 :
>>40 Java
https://ideone.com/7ibDgO
しんぷる

42 :
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では_が負の符号)

43 :
>>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]

44 :
> _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 になるはず?

45 :
>>44
おかしい。こんな短いものでバグ作るとは。

46 :
なんだJニキたいしたことなかったんだな。ガッカリだわ

47 :
>>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

48 :
1か月くらいしかやってないから
ガタガタブルブル

49 :
入力に , 入れてたからおかしくなったのけw

50 :
カンマはあっても良いんだけど _2 を -2 と書くと
,- なる演算子のコンビネータで世にも奇妙な動きになる

51 :
やっぱりJわからんww

52 :
違った

1,2,3 => 1 2 3
1, -2, 3 => 1 _2 _3

マイナスがそれまで連結したそれより右、
上の例だと 2 3 全体に作用してた

53 :
>>40
ソートするだけやん...

C++
https://ideone.com/EX8gEd

54 :
あー!
ソートするだけか。グッと短くなるな
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

55 :
>>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) "

56 :
>>40
# Rubyで。
def f040(a)
a.select(&:odd?) + a.select(&:even?)
end

57 :
>>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

58 :
[[[ ][ ]]]\[[]] [[[]]]],[[[ [][] ]

59 :
安定なソートである必要は無いのかな

60 :
>>59
やり方による
>>53みたいな奴だと安定ソートが必要

61 :
>>36って S = {(2m + 1)π / √((2nπ)^2 + 1)|(m, n)∈N^2}だから最小値存在しなくね?
複素数の複素数乗って多価関数だよね?

62 :
>>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

63 :


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

64 :
>>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)π}はありえないよ

65 :
>>40 Ocaml
https://ideone.com/tZmgi1
初めて扱った言語だから分かりやすさ優先
冗長だよなぁ

66 :
>>62
>>61
>modulo =: |~
~ はタイプミス(不要)でしたごめんなさい寝ます

67 :
>>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]);

68 :
>>40
Kotlin
https://paiza.io/projects/psvjfVlHA_h2ywBb3amg3Q

C
https://paiza.io/projects/iZQ1V6L34LthEdqvQsRNJQ

69 :
>>43
やってることほとんど同じだけど短くできるので改造してみました。
Perl
https://paiza.io/projects/hmeuU1NTBlSqUtbFr6Vn2Q

70 :
>>40 Common Lisp
https://ideone.com/7FvGqn

計測してみたらsortが一番遅かった
https://ideone.com/CzpnHR

71 :
>>40 ruby
p [-1, 2, 8, -9, -2, -3, -6, -10, -8, 5, 7, 9, 7].partition(&:odd?).flatten

72 :
>>40 ocaml
https://ideone.com/Izv76M

is_oddはぐぐって見つけたのの丸パクリ

73 :
お題: 文字列をソートしなさい。ただし、英字のみをソートし他はそのままにすること。
例:
 "213cba213cba213cba" -> "213aaa213bbb213ccc"

74 :
>>40 rust
https://ideone.com/epTHxQ

タプルにflattenとかできたらよかったのに…

75 :
>>40
Kotlin でも >>71 そっくりに書けることに気付いたので >>68 を fork して書き換えてみた。
https://paiza.io/projects/Ilw66tbpxElWvi1lSmKU3Q

76 :
[[[ []]]]*[[ [][] ][] } } {} [[[

77 :
しっかし、良問なお題だな……

78 :
お題: 文字列をソートしなさい。ただし、英字のみをソートし他はそのままにすること。
例:
 "213cba213cba213cba" -> "213aaa213bbb213ccc"

79 :
>>78 Riby

"213cba213cba213cba".yield_self{|v|r=/[a-zA-Z]/;s=v.scan(r).sort;v.gsub(r){s.shift}} #=> "213aaa213bbb213ccc"

80 :
>>78 octave
https://ideone.com/qppgil

81 :
お題
二次元平面上の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

82 :
そんな空気読めないから学生に不人気なんだよ数学板帰れ

83 :
>>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' "

84 :
>>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

85 :
>>84
@i = 0..$#s;
この行、要らなかった、消し忘れた…orz

86 :
>>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;
}

87 :
>>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" []

88 :
お題
西暦X年のプレミアムフライデーを列挙せよ

89 :
それは概念的な方?それとも実際に仕事に影響する方?
後者ならプレミアムフライデー列挙は0文字でできるが

90 :
>>78
C
https://paiza.io/projects/Oy8gIsyfgJX7t7rSEPnVkQ

91 :
あれ?strdup() で警告出てるな。strdup() って標準ではないか。
まあでもCコンパイラのアバウトな処理によって動くバイナリは作られたようだがw
やりたいことは分かると思うのでそのままにしておく。

92 :
>>78
Kotlin
https://paiza.io/projects/YLQlblIMPLj68rZq1YBibw

93 :
>>78 Common Lisp
https://ideone.com/wPfWhC

94 :
>>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' "

95 :
>>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} "

96 :
>>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"

97 :
[[[ [ "[]" ]]] [] [][[[ [] ]][]

98 :
>>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"

99 :
>>81 Perl5
https://ideone.com/2NE6z1

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

101 :
>>64
e^(πi) = e^(3πi) = e^(5πi) = ... = -1 じゃないの?

102 :
>>101
e^z = -1 に対して z = (2m + 1)i は十分条件でしかないよ
必要十分条件は z = (2m + 1)π/(2nπ - i) なの
で今 e^z = -1 を満たす「すべての」zって言われてるから十分条件じゃ意味なのは分かる?
そもそも十分条件って言葉は知ってるかな?
exp(x) と e^(x) が違うことはわかってる?

103 :
お題
大人数で一斉にじゃんけんを行った
各人の手のリストが与えられるのでその中で勝者が何人いるか答えよ
(g=グー,c=チョキ,p=パー)

gccgc -> 2
ggggggg -> 0
cppcppppccpppppc -> 5
cppcppppccpgpppc -> 0

104 :
>>102
それ、おかしくない?
m = n = 1 のとき、
すなわち e^((3*pi)/(2*pi - i)) を wolfram-alpha に食わせてみたんだが、-1 にならない
http://www.wolframalpha.com/input/?i=e%5E((3*pi)%2F(2*pi+-+i))

>>64
exp((x + y*i)(p.v.Log|e| + i*arg(e))) = -1
ってどういう意味なの?

105 :
>>103 C++
https://ideone.com/C34KkK

106 :
>>104
exp(z) := Σ{n∈N}z^n/n!
pv log(z) := log(z)の主値
arg(z) := 複素数zの偏角
リンクの wolfram-alpha はそりゃ値が一致しないよ。前提が違うんだから

107 :
>>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 によっていろいろ変わるのはおかしいね

108 :
>>107
いやだから e^z(2.718281828...のz乗) と exp(z) は別物だって言ってんじゃん
わざと嫌がらせしてる?

109 :
>>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

110 :
>>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 しか取り得ないと思いますが…

111 :
>>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!)は全く別の値なんです

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

113 :
誤字
xが実数であっても exp(x) = (2.7...)^x じゃありません

114 :
>>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 と定義する…A

@⇔Aであることを前提とすれば、

x ∈R において
exp(x)
= e^x(cos0 + j・sin0)(∵A)
= e^x(1 + j・0)
= e^x



xが実数なら exp(x) = (2.7...)^x

ですね

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

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

116 :
プログラミングやってると数学学びたい欲求が出てくる

117 :
同値の意味も知らないような数学の素人がなにか言い合いしてますねえ

118 :
お題
o,d,a,iからなる文字列Sが与えられる。
Sからいくつかの文字を取り除くことで"odai"をN回繰り返した文字列が得られたとする。
Nの最大値を求めよ。

odaiodai -> 2
ooddaai -> 1
idao -> 0
ododoadioadioadioadioadioadiodaioadodioadiaodi -> ?

119 :
>>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

120 :
>>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())))

121 :
>>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

122 :
>>115
>一般に exp(z) と ネイピア数のz乗は別物です
それは心得ているつもりです。

以下、結構雑に書きますが、

exp(z)=Σz^n/n!…@
と定義する。
このときも@が収束すること、および
exp(z1 + z2) = exp(z1)exp(z2), z1, z2 ∈C…A
が成立することを暗黙の了解とする

z∈C, z = x + jy, x, y ∈R のとき
exp(z) = exp(x)exp(jy) …B(∵A)
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))…C

以上の議論は手元の教科書の引き写しです。

123 :
>>122 続き
>従ってAの定義は「exp(x + jy) = exp(x)・(cos(y) + j・sin(y))」としなければならないし
以上より exp(x + jy) = e^x・(cos(y) + j・sin(y)) …Cで問題ありません。

だから、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| すなわち複素指数関数の絶対値は引数の実部によって決まり、引数の虚部の影響を受けません
以上の議論は
https://ja.wikipedia.org/wiki/%E8%A4%87%E7%B4%A0%E6%8C%87%E6%95%B0%E5%87%BD%E6%95%B0
に書いてありました

124 :
>>123 続き
今 exp(z) = -1, z ∈C

>>123 Cより
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…D

よってDの両辺の虚部が 0 だから

e^x・sin(y) = 0
e^x > 0 より sin(y) = 0
y = nπ…D(必要条件)
このとき
cos(y) = ±1

このときDの両辺の実部を比較して
e^x(±1) = -1
e^x > 0 だから cos(y) = -1 となるのはDの中でも 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 のみ、という推論はどうでしょうか?

125 :
>>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は多価関数なのでこれらが等しくないことは計算するまでもなく自明なんですが、
なんでここにこんなにつっかかってくるんですかね……

126 :
>>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

127 :
>>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 …A
のみです

z = x + jy と置いたとき
exp(z1 + z2) = exp(z1)exp(z2), z1, z2 ∈C…A
が成り立つ前提で
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))
を導きだすのが目的です

128 :
数学荒らし本当うざ…

129 :
>>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]
でよかった。
最初関数として作ってあったもので単純化し忘れ。

130 :
>>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

131 :
>>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!が収束するだけでは弱くて、
「絶対収束」(絶対に収束するという意味ではありません)を仮定する必要があると言っているんですけど
まあ枝葉末節なので不問とします

132 :
>>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) は周期関数であることはわかるのですが、
これ以上のことはちょっとわかりません、今日はここまででお休みします
お付き合いくださりありがとうございました

133 :
>>88
Kotlin
https://paiza.io/projects/lG5nWGdi-n7XwGLr0YAi_A
Javaのライブラリに日付や曜日の計算任せちゃってて自分ではほとんど何もやってません。

134 :
スレタイも読めない数学荒らしが一族郎党苦しんで死にますように。

135 :
そこまでのろわなくてもよい希ガスるけど、、
数学的お題でもいいけど、明快なお題を出すか、回答を書き込むかを重視し
解釈のかみ合わない議論は程々にした方が医院ジャマイカ

136 :
>>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

137 :
>>103
Kotlin
https://paiza.io/projects/bk-KHJlrtxxPPYLndwrHvA

138 :
>>118
Kotlin
https://paiza.io/projects/iL8CfccFm8DLlbB5dA63zQ

139 :
>>118
Perl
正規表現のパターンを作ってループさせてみました。
https://paiza.io/projects/pcQMuxJqlGR75LNkXho93w

140 :
>>132
純粋に数学的関心ならもうプログラミング関係ないんだから、適切な板、スレを探してそっちで好きなだけやってこい

141 :
>>103 Common Lisp
https://ideone.com/vtkIq4

142 :
数学やってる奴は頭悪いってことは分かった

143 :
数学は別にいいんだが難しすぎるのはちょっとな
簡単なお題なら個人的に歓迎

144 :
>>118 Common Lisp
https://ideone.com/84mgEu

145 :
>>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 "

146 :
>>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 "

147 :
>>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 "

148 :
>>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

149 :
文字をATCGにして長さ1億くらいにすればプログラミングっぽくなるんじゃねえの

150 :
【安全デマにブーメラン】 山口が自殺したら、次は城島、他のメンバーも酷い運命、食べて応援が応報に
http://rosie.2ch.sc/test/read.cgi/liveplus/1525137558/l50

151 :
お題
大きさ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

152 :
公式があるね。
周期=2WH/gcd(aH,bW)
(gcdは最大公約数)

153 :
>>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

154 :
>>152
やっぱ公約数に帰結するんだ、
>>153書いてて繰り返し不要な解法がありそうだという気がしてきた
まいいや自分で考えることも面白いから

155 :
>>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 "

156 :
>>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と同じ

157 :
>>103 ruby
https://ideone.com/f8m9QV

158 :
お題
大きさが(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
と荷物及びナップサックが与えられた時、最大の価値を求めよ
可能ならどれを詰めたかも求めよ
なお荷物は回転させて詰めても良いものとする

159 :
>>118 ruby
https://ideone.com/4Ra0WG

160 :
ナップザックというか箱だなそれ (雑感)

161 :
お題
政令指定都市名を受け取り, 隣接する区を異なる色になるように塗り分けるのに必要な最少の色数を返す.

f(Sagamihara) => 2
f(Yokohama) => 4

162 :
>>158は、巡回セールスマン問題に並んで有名なナップサック問題である。
なお、この手の問題をNP完全問題だとかNP困難問題だとか呼ぶのは
「ナップサック」(NaPpsuck)に由来する。

163 :
non-polynomial

164 :
数学荒らしR

165 :
自分が理解できないからって数学荒らし呼ばわりは惨めすぎるね

166 :
>>162
民明書房か

167 :
>>165
じゃロシア語で埋めてくな。
文句ないんだろ。

168 :
Текущая версия страницы пока не проверялась опытными участниками и может
значительно отличаться от версии, проверенной 11 апреля 2015;
проверки требуют 20 правок.
Бу́ря (шторм) — собирательное понятие, обозначающее очень
сильный ветер (а также сильное волнение на море), возникающий по
различным причинам и в разных областях Земли. Скорость
приземного ветра (на стандартной высоте измерений 6—12 м над
земной поверхностью) при буре составляет, по разным источникам,
15—20 м/с и более (21-25 м/с или 75-88 км/ч). Бури бывают снежные,
песчаные и водные. Скорость ветра при буре гораздо меньше, чем при
урагане, однако буря чаще всего сопровождается переносом песка,
пыли или снега, что приводит к ущербу сельскому хозяйству, путям
сообщения и другим отраслям экономики.

169 :
Буря может наблюдаться:
при прохождении тропического или внетропического циклона;
при прохождении смерча (тромба, торнадо);
при шквале — кратковременном усилении ветра, связанном с местной или фронтальной грозой.
К бурям по шкале Бофорта относятся ветры скоростью более 20 м/с (9 баллов), а к ураганам — ветры со
скоростью более 32,6 м/с (12 баллов). Кроме того, по этой шкале различают:
сильную бурю со скоростью 24,5-28,4 м/с (10 баллов);
жестокую бурю со скоростью 28,5-32,6 м/с (11 баллов).

170 :
Термин «ураган» имеет также более узкое значение — тропический циклон. По месту образования тропические циклоны делят на:

Субтропический шторм
Тропический шторм
Ураган (Атлантический океан)
Тайфун (Тихий океан)
Если скорость ветра в тропическом циклоне превышает 60 км/ч, ему присваивается собственное имя.

171 :
По мнению американских учёных, для областей, расположенных в
северных широтах, снежной бурей можно считать зимний сильный
ветер, во время которого скорость ветра достигает и превышает 15 м/с (56 км/ч).
При этом температура воздуха опускается до −7 °C и ниже.
Территория распространения снежной бури может быть сколь угодно обширной.

172 :
数学は少なくとも話してる本人は内容を理解している
一方お前のクソみたいなロシア語はお前はその内容を理解していない
一つ聞くが、お前がコピペした文章の中には原意が支配するという意味のロシア語の単語が出てくるが、
その単語の性数態をお前は適切にこたえられるか?
答えられないだろうな。奇を衒って知りもしない外国語の文章をコピペしただけなんだから

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

174 :
なるほど。じゃ落語で埋めてくわ。
本人が理解してりゃスレ違いでもいいらしいからな。

175 :
>>174
数学が理解できなくてそんなに悔しかった??
自分がロシア語も理解できないのにコピペしたのがバレてそんなに悔しかった??
本当に惨めだね。あ、僕は落語なら浜野矩随が好きだからよろしくね、ど低能くん^^

176 :
こんな話がございます。

両国の回向院に猫塚トいうものがございます。
猫が死にますト、飼い主が回向料とともに、猫の亡骸を持ち込みまして。
寺の僧侶がお経を読んで、猫を葬ってくれるという。
これは、この塚に最初に入ったという猫の話でございます。

八丁堀の玉子屋新道に、魚屋を営む定吉ト申す者がございました。
もっとも、魚屋とは名ばかりで、その実は博奕打ちでございます。
毎日を遊んで暮らしている。

177 :
この日も、朝湯の帰りに馴染みの三河屋という居酒屋に立ち寄りまして。
風呂あがりの一杯とばかりに、呑気に引っ掛けておりますト。
ポカッ、ポカッと、頭の上から妙な音が聞こえてくる。

博奕打ちというのは、我々とはものの考え方が異なっているようで。

――板に何かを叩きつける音がする。
なるほど、やってやがるな――

178 :
ト、てっきり丁半博打の壺を伏せる音と勘違いいたしまして。

「おい、六さん」

店の者を呼びつけます。

「なんだい、水臭えじゃねえか。やってるならやってるで、教えてくれてもいいだろうに。俺も仲間に入れてくれ。取り次いでくんなよ」
「博奕ですか。滅相もない。うちではそういったことはさせません。二階は物置ですよ」

179 :
それでも、確かに音がするのは妙でございます。
店の者が二階へ上がっていって、やがて下りてまいりました。

「分かりました。あれは猫です」

こういった店は、商売柄、どうしても猫が寄ってくる。
今朝も早くに仕入れておいたイナダを、勝手に食ってしまったそうで。
あんまり腹が立つから、焼け火箸で目玉を刺してやろうかとも思ったが。
店の主人が、せめて橋の上から放り投げる程度にしてやれと言ったという。

180 :
「それで柱にふん縛っておいたんですがね。今、見に行ったら、なんとか逃げ出そうとして、立ち上がっては倒れてやがる。あれはその音ですよ」

定吉は柄にもなく、猫がちょっと不憫に思えまして。
死なせるくらいなら、自分が引き取って育てるからト。
金を渡して猫を貰い受けました。

差し毛の一本も見当たらない、正真正銘の黒猫です。
定吉は懐に入れるト、店を出て家に帰った。

181 :
家では女房のお滝が待っています。
定吉が懐から黒猫を取り出しますト、途端に渋い顔を浮かべまして。

「やだよ、そんなものを持って帰って。私は猫は嫌いなんだよ」

ト、そっぽを向いて風呂に行ってしまう。

定吉は、自分が命を救ってやった猫ですから。
恩を着せるわけではないが、やはり可愛い。
一人残った家の中で、猫を抱き上げて話しかける。

182 :
「そういや、名前を聞いてこなかったな。大抵の猫ならタマとかミケとか付けるんだが、お前はそんなガラじゃねえ。全身真っ黒で、熊みてえだもんな。そうだ。クマってのはどうだ」

するト、猫がにゃーごト鳴く。

「にゃーごだと。ヘヘ。鳴かなくていいから、恩返しのひとつでもしてみろよ。俺をちょっとは儲けさせてくれたら、拾った甲斐もあるってもんだ」

ト、猫に博奕の講釈をいたします。

183 :
「一つでやるのをチョボイチ、 二つ使うのを丁半、三つ使うのをきつねと言う。俺がやってるのは丁半だ。グニの半、二ゾロの丁ってな」

定吉は賽を湯のみに入れて、畳の上に伏せますト。

「どうだ。表から見たらどの目か分からないだろう。だから、銭を賭けて当てるんだ。猫は魔物というから、お前なら当てられるだろう。おい、なんとか言ってみろよ」

猫は相変わらず、にゃーごト鳴く。

184 :
「俺は、丁が出ると思うな。お前は何だ。にゃーごか。よし、俺が丁で、お前がにゃーご。勝負ッ」

ト、戯れながら湯呑みを開けますト、一二の半。

「おかしいな、半か。するってえと、お前のにゃーごは半か。ヘヘ、にゃご半か。それじゃあ今度は俺が半だ」

すると、今度は猫がにゃご、にゃごト、二回鳴く。

185 :
「なんだい、妙な鳴き方をしやがる。今度はにゃごにゃごの丁ってか」

ト、笑いながら湯呑みを開けるト、二ゾロの丁。

それから何度繰り返してみましても、猫がにゃーごと鳴くと半。
にゃごにゃごト、二回鳴くと丁が出ます。

「お前、本当に恩返ししてくれるつもりだな。こいつはいい」

186 :
それから定吉は、賭場へ行くたびにこの猫を懐に忍ばせていく。
にゃーごの半、にゃごにゃごの丁で、どんどん金が儲かりまして。
羽振りがよくなるト、兄い、親分と立てられるようになる。
猫を始終連れて歩くので、そのうちに猫定と呼ばれるようになった。

187 :
博徒の世界では、あだ名がついたら一人前ト申すそうでございますが。
一人前になるト、自然、悪評も目立つようになる。
そのうちに江戸にいられなくなり、ふた月ばかり旅に出ることにいたしまして。
定吉は、猫を女房に預けて家を出た。

これが惨劇の幕開けでございます。

――チョット、一息つきまして。

188 :
数学厨よりひどいあらしだな
スレが機能しなくなっちゃった

189 :
どこまでお話しましたか。
そうそう、博奕打ちの定吉が、猫の鳴き声で賽の目を当て、兄い、親分ト立てられるようになるところまでで――。

亭主の定吉が家を空けますト。
女房のお滝は、子分の若い者を家に引き入れるようになりまして。
長屋の住人たちが眉をひそめるのも、まったく気にしておりません。

190 :
数学ができないやつは論理的思考もできないということを示す良い例だな
頼むからスレから未来永劫消えてくれ

191 :
いてもいいけど荒らすな
お題を出し
解答プログラムを書くこと

192 :
あの〜続きが気になるから http://onboumaru.com/049-nekosada から無断転載した「猫定」を
最後まで張ってくださいませんか?? 無能ロシア語落語さん^^

193 :
自分が理解できれば何を書いてもいいというのは数学厨が示したルールだが。
文句を言われたらこう言って開き直ればいいそうだ。
「自分が理解できないからって荒らし呼ばわりは惨めすぎるね」

194 :
勘弁してくれよ
それこそよそでやってくれ

195 :
>>192
了解。>>192の依頼に従い、続行する。

196 :
そのうちに、人の噂も七十五日トばかりに。
ほとぼりが覚めた頃を見計らって、定吉が江戸に帰ってくる。

帰ってくるト、猫を連れてまたぞろ博奕へ出掛けます。

その夜。
お滝は、間男の若い者を呼びつけ、相談をした。

定吉がいては、お互い落ち着いて逢瀬を楽しむこともままならない。
いっそ、ひと思いに殺してしまってほしい。

197 :
>>193
数学は少なくともスレのお題と関係があったがお前のクソみたいなコピペはスレと無関係のただの荒らしだろうが
どっちもウザイのは同じだが、一緒くたにすんなハゲ!

198 :
若い者は、親分の家の姉御に見込まれたことで、男が上がったつもりになり。
箒を斜に切って油をかけ、ジリジリと火で炙る。
これは竹槍を作っているのでございます。

そうして、鯵切り包丁を手ぬぐいで包みますト。
腰に差して、長屋を飛び出していきました。

定吉は、馴染みの賭場へやってきておりましたが。
その晩はどうしたことか、猫が一向に鳴きません。

199 :
体の具合が悪いのだろうか。
まあ、今まで稼がせてもらったのだから。

ト、この時にはすでに情が移っておりますから。
猫の具合を優先して、素直に帰ることにいたしました。

賭場を出るト、ポツポツと雨が降り出してくる。
定吉は猫を懐に大事にしまって、新橋の喜多川といううなぎ屋に駆け込んだ。

一杯やりながら、猫に鰻の切れ端をやるのが、この頃の楽しみでございます。
ところが、いつもはよく食う猫が、これまた今日に限って口をつけようといたしません。

200 :
続きを張れと言ったのは数学厨な。

201 :
責任転嫁すんなハゲ
お前のせいで直近のお題が迷子だっつーの
もう二度とこないでください

202 :
>>201
お前さんがやってる煽りも、ロシア語はってるいじけた小学生みたいな奴と同じレベルだよ。数学ができたとしても精神レベルは同程度。お前さんにどんな言い分があろうとも、周囲からはそう見える。

203 :
重み付き3次元箱詰め問題みたいなもんをここのお題に出すバカ
各都市の区の具体的なグラフが必要な問題をそれぞれのグラフも与えずに出すバカ

自分で解いて楽しいかどうか考えろよ

204 :
出題時の注意>>4

205 :
そら言えてる

206 :
お題が流れたみたいなのでリンクまとめ

>>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 -> ?

207 :
お題:Hello, World!を10回出力してください。ただし、偶数文字を小文字、奇数文字を大文字にすること。さらに3の倍数の文字をランダムな英字にすること。

208 :
>>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!

209 :
>>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!

210 :
>>207 Common Lisp
https://ideone.com/RrNm7L

211 :
>>207
C言語
https://ideone.com/5UVPgG

212 :
お題
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

213 :
>>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!

214 :
>>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

215 :
有効な(注:主観による)お題一覧
>>11
>>40
>>78
>>81
>>88
>>103

216 :
>>215

>>118
>>151
>>207
>>212

217 :
>>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

https://%62it.ly/2jlIjeo

218 :
>>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

219 :
>>207 octave
https://ideone.com/j9EsUn

220 :
あれ?バグってるなこれ
総当たりの方は取り消します

221 :
違った
山型に並べる方を取り消します、だった。

222 :
>>217
正しくはこうでした
sinA =: 1&o.@((o.2)&%)@#
s =: +/@(*(}.@,{.))"1
raz =: ((\: [) {~ (/: (* <:@(2&*)@(2&|)))@i.@#)
ans =: -:@(sinA*(s@raz))

1行にするのは略

https://%62it.ly/2w3XF0m

223 :
>>207
Perl
https://paiza.io/projects/3hW53qnnJ69_qwvN_oWiTA
改行入れないで変換しちゃったが、指定がないからまあいいか。

224 :
>>212
それ、俺の直感ではsortすればいいだけなんじゃあ?
証明できんけど。

225 :
>>224

>>212
… (ry
> {4,3,2,1,0}
> => 10.9371 //{0,1,3,4,2}
_________~ ~

226 :
>>225
あー。ちょっと違うな。崖作らずに山作る感じか。
証明できんけどw

227 :
>>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

228 :
ググったら公式出てきた
http://chaoxuprime.com/posts/2012-08-08-maximize-the-area-of-a-radar-chart.html

プログラムでやるなら、数列の前項後項の積和を最大化する方針がいいのかな

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

230 :
問題思いついた後、ググって>>228見つけたので出題した次第です。
最小化については上手い方法があるんだろうか?

231 :
>>228
そのπってのが真ん中から左右に配置して行くインデックス列。
でその証明は不完全(*1)だけど結論は合ってる。

(*1)
n-1個の時の最大になる列のどこかに
n番目の数を挿入すればn個の時の解が得られる、
ということを証明せずに利用している。

小さくするには山谷の数を多くする(小さいのと大きいのがなるべく隣接するように置く)
ってことは直感的にわかるんだけど具体的な構成法は考察がいるな

232 :
>>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) "

233 :
>>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

234 :
>>207
Bash
https://ideone.com/ljYBHK

エラーには目を瞑ってください

235 :
>>234
無為に捨てられる何千もの’Hello, World!’がかわいそうすぎね?(´;ω;`)

236 :
>>212 Perl5
https://ideone.com/cMJGDR

自力で動的計画法による解法を考えようとしていたけど、
>>228で紹介されたWEBの解法に勝る見込みが無さそうなので
思考を停止してWEBの解法を愚直に実装したものです

237 :
【お題】
与えられた整数のリストで、
2つの要素の和が100になるすべての組を列挙せよ。

例:
[1, 99, 20]
-> [[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]]

238 :
>>237 Rust
https://play.rust-lang.org/?gist=29b80b217f269f6ad43a712d52fd595e

239 :
>>237 ruby
https://ideone.com/Noq7GJ

240 :
>>237
Ruby。
ary.combination(2).select{|x|x.inject(:+)==100}

241 :
>>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)} "

242 :
>>237
C言語
https://ideone.com/Ohue7U

243 :
>>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にはインストールされてないようでした

244 :
>>237 c
https://ideone.com/c5I9TG

245 :
>>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]]

246 :
Smalltalk のメソッドの充実っぷりには毎回感心

247 :
それなりの規模の処理系(GUI付きOSモドキ)をセルフホスティングで構築・維持していると
イディオムがイディオムとして認識・共有されやすく、さらにメソッドとしてまとめられやすいのかも

たとえばスクリプト言語処理系でしかないGNU Smalltalkはあまり便利メソッドが増える感じがしないので

248 :
お題
10,000個の単純変数に1から10,000の整数を代入する

249 :
>>248 Ruby
(1..10000).each{|i|instance_variable_set("@v#{i}", i}

250 :
>>248 Common Lisp
https://ideone.com/tM8Nve

251 :
>>248 Bash
ideone だと駄目だった
https://ideone.com/FTnIoN

252 :
>>248
Perl

for(1..10000){eval”\$a$_=$_”}

こんなんでいいのか?

253 :
>>251
シェルもperlみたいにeval使えば簡単だと思うよ。その他の言語も同様。

てかこれ、インタープリタの言語にはできてもコンパイルする言語の場合は普通の方法ではできないんじゃないかな。
トリッキーな方法使ってようやっとできるかも知れないって感じじゃないだろうか。

254 :
Cプリプロセッサでもやろうと思えばできるけど面倒だからやらない

255 :
お題:パイ生地を折り畳め
ただし要素数は二個以上で偶数とする
気が向いた人は逆の操作も実装せよ
https://ideone.com/W9woGu

256 :
>>255
問題の意味がわからん

257 :
>>256
分からないときは好きに解釈していいのがこのスレのルール

258 :
>>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

259 :
f, g のような変換関数を作ること自体は簡単な感じがするが、それと「パイ生地の折り畳み」がどう関係するのかがわからんな。
単にここでは折り畳んだらそういう並びになるというルールなだけ?

260 :
>>255 Common Lisp
https://ideone.com/cabI9c

261 :
半分に折る->後半部を逆順に
折重ねたまま元の大きさまで伸ばす->前半部に合成

パイ生地の作り方からの連想だとは思う

262 :
>>248 javascript
eval('var ' + [...Array(10000)].map((_, i) => `a${i+1}=${i+1}`).join())
>>253の通りやった

263 :
>>259 分からないと言うことをいろいろ言うつもりは無いけどm
>>255 のレスの内容とoctaveのコードから考えて
1 2 3 5 6
をパイ生地のように二つに折り畳んだ
1 2 3
6 5 4
を(下を先に選択して)リストで表すと
6 1 5 2 4 3
だということは想像に難くないので、そう解釈して解答を考えた。
gはその逆。誤解はあるかもしれない。

講釈がコードより長くなったけど、
「だけ?」って一体どういういみだよ?

264 :
>>263
「パイ生地の折り畳み」という言葉に他の意味がないかってこと。

265 :
>>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

266 :
>>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]

267 :
>>255
C言語
https://ideone.com/frCiwG

268 :
>>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) "

269 :
>>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) "

270 :
>>266ってどういう計算してんの?

271 :
お題
N×Mのフィールドが与えられる。各マスの意味は以下の通りとする。
'S':始点
'G':終点
'.':通行可
'#':通行不可

連続して同じ方向に進むことができないという制約下で、
始点から終点までの最短距離を求めよ。

[example 1]
S....
#....
..#..
....G
=> 9

[example 2]
S.....G
.......
=> 12

272 :
>>270
配列の長さを L とすると、
f(パイをたたむ)は;
i(0 <= i < L)番目の要素を元の配列の (~...~[i / 2]) % L 番目から持ってくればよい
(~...~はビット反転を i 回繰り返したもの)
g(パイを開く)は;
i(0 <= i < L)番目の要素を元の配列の (- 0.5 - |2 * i - L + 1.5|) % L 番目から持ってくればよい

273 :
[][][] [[[ ] X_[[[ [] ][ [] ][][[[]

274 :
今抱えてる課題
1から100までインクリメントする変数iを用いて
300から1までの実数を100個出力せよ

i=1の時は300
i=100の時は1
となる式を考えてちょ(人・ω・)☆

275 :
>>274
300 - (299.0 / 99.0) * (i - 1)

276 :
お題:文字駒を滑らせろ
四方を囲いで被われ駒がこぼれる心配のないM×Nマスのボードがある。
ここに英小文字が印字された正方形の駒が適当に配置されている。(駒のないマスは.(ドット)で表す)
与えられる、ボードを傾ける指示を完遂したときの最終盤面を表示せよ。
指示の方向はU(向かい方向)、D(手前方向)、L(左方向)、R(右方向)の四種類。

例1)
solve([
'...',
'.a.',
'...',
], 'UR')
// ↓
// [
// '..a',
// '...',
// '...',
// ]
https://jsfiddle.net/en6rd3vk/
※盤面は文字列の配列にしているが文字の配列の配列など言語で扱いやすいよう好きにしてよい

例2)
solve(
[".....", ".d.i.", "kmegk", "..tu."],
"LRRLLUDRRLRLRRURRRRLLLRULDUDULDLLRDULURULUDLDLUDDL"
)
//=> [".....", "gk...", "km...", "dietu"]

暇な人は300×300、指示数50くらいでやってみてください。最適化しないと結構時間かかっちゃうと思いますが。

277 :
>>275
ありがとうございます(^○^)
範囲を等分してiと合わせるだけだったんですね
これを思いつかないとは・・・寝てきます(・_・;)

278 :
>>255
色々な言語で書いてみたが、やってることはほとんど同じ。
それぞれの言語の特徴をあまり生かせてない感じがする。

C
https://paiza.io/projects/zsjD__CUc4kIlaDd-nYgQQ
Kotlin
https://paiza.io/projects/ncCwkTCvQ0IsNcZGbpy_vw
Perl
https://paiza.io/projects/C9lzimZEAZzk25gjn4NGfw

279 :
>>271 Ruby 愚直に

https://ideone.com/SYfrSu

280 :
>>271 Squeak/Pharo Smalltalk

https://ideone.com/ACAeKW

281 :
>>276 Ruby 傾ける順番だけ最適化

https://ideone.com/4iIY9g

282 :
お題
Y円を支払うとき、同種の通貨の枚数を最小化する。

Y=500
=> 1 (500*1, 同種の通貨は最大1枚)

Y=300
=> 2 (2*100+2*50, 同種の通貨は最大2枚)

Y=40
=> 3

Y=60
=> 1

283 :
>>282
通貨の種類は 1, 5, 10, 50, 100, 500, 1000, 2000, 5000, 10000?

284 :
>>283 それでいいです。任意の種類に対応できたら尚良し

285 :
>>282
=> 0 (カード決済または電子マネー決済)

286 :
>>271
C言語
https://ideone.com/YLAnLJ

287 :
>>282
C言語
https://ideone.com/RVA3Mk

288 :
>>276
Kotlin
https://paiza.io/projects/gVAA38huK6qosFkqbihPTg
ボードの内容と傾ける指示は全て標準入力から入力するようにした。

289 :
>>282 Ruby ぴったり払えない時は No Solutions と出力

currency = [1, 5, 10, 50, 100, 500, 1000, 2000, 5000, 10000]
sums = currency.size.times.map { |i| currency[0..i].sum }

[74664, 55998, 37332, 500, 340, 300, 197, 161, 157, 60, 40].each { |yen|
print '%d => ' % yen
min = currency.zip(sums).reverse_each.map { |c, s|
yen -= c * x = [yen/c, -(-yen/s)].min
x
}.max
puts yen.zero? ? min : 'No Solutions'
}
#=>
74664 => 4
55998 => 3
37332 => 2
500 => 1
340 => 3
300 => 2
197 => 3
161 => 1
157 => 2
60 => 1
40 => 3

290 :
>>276
一度でも水平垂直の両方に傾けると
座標じゃなくて単に駒の二次元リストでいけると思うから
指示の短縮と合わせて早くできると思うけど
どう書けばいいか悩んでる・・・

291 :
>>282 Ruby >>289を修正
currency = [1, 5, 10, 50, 100, 500, 1000, 2000, 5000, 10000]
samples = [74664, 55998, 37332, 500, 340, 300, 197, 161, 157, 60, 40]
cands = currency.zip(currency.reduce([]){|s, e| s << s.last.to_i + e}).reverse_each
breakdown = lambda do |yen|
  x = cands.map{|c, s| yen -= c * x = [yen/c, -(-yen/s)].min; x}.max
  yen > 0 ? 'No Solution' : x
end

samples.each{|yen| puts '%d => %s' % [yen, breakdown[yen]]}
#=>
74664 => 4
55998 => 3
37332 => 2
500 => 1
340 => 3
300 => 2
197 => 3
161 => 1
157 => 2
60 => 1
40 => 3

292 :
}]] [[《_["[[]]" 〈[]》》 [][][]0,1》》〈〉 [] } } "B,V,0%%%,*1BVLO,SASA1`}}//%\\0,1\"VL"\

293 :
お題:九九の各段の値を合計せよ
https://ideone.com/T3TrFG

294 :
>>293

@9`*45

295 :
はっ。それはもしや45の倍数・・・

おや?こんな夜中に誰だ?

296 :
>>290
それって例えば初期配置が以下のとき(■が駒)
□■■□□■
□□■□■□
■■□■□■
□□■■□□
□■□■□□
■□■□□■
最初に例えばULが来ると以下のようになって…
■■■■■■
■■■■■□
■■■■□□
■□□□□□
□□□□□□
□□□□□□
□だけの行、□だけの列はこれからハブいてループ回せるじゃんってことだよね。この例だと下二行。
なるほど命令の最適化ばっかり考えてて全然気づかなかった。

297 :
>>293 Squeak/Pharo Smalltalk

(1 to: 9) sum * (1 to: 9) "=> #(45 90 135 180 225 270 315 360 405) "

((1 to: 9) * (Array new: 9 withAll: (1 to: 9))) sum. "=> #(45 90 135 180 225 270 315 360 405) "


ついでに全段の合計も

((1 to: 9) sum * (1 to: 9)) sum. "=> 2025 "

((1 to: 9) * (Array new: 9 withAll: (1 to: 9))) sum sum. "=> 2025 "

(Matrix rows: 9 columns: 9 tabulate: [:x :y | x * y]) sum. "=> 2025 "

((1 to: 9) asArray +* (Matrix rows:1 columns: 9 contents: (1 to: 9))) sum. "=> 2025 "

298 :
>>276
これの最適化したいんだけど誰か大きいボードのサンプルくれないかなあ

299 :
激問って未だに更新されてるんだね

300 :
>>297
Smalltalk なのに普通だ…いやtabulateが便利そう

J
格段の和
+/(*/[)>:i.9
45 90 135 180 225 270 315 360 405

さらに足すと
+/+/(*/[)>:i.9
2025

先に,で1次元化してから足せば1文字短く
+/,(*/[)>:i.9
2025

301 :
>>298
すごくでかくなったので分けた。ごめんよjsfiddle...
board(1980x1080, 文字列の配列形式)
https://jsfiddle.net/eqyuvgm9/

actions(256)
https://jsfiddle.net/2j2817rc/

result(1980x1080, 文字列の配列形式)
https://jsfiddle.net/uyboko52/

このサンプルでchromeのコンソールで試した結果、
最適化なしでは47.4秒
命令の最適化だけで1.8秒になった
>>290も試してみようと思う

302 :
>>293
Kotlin

(1..9).forEach { a -> println((1..9).map { it * a }.sum()) }

この1行をファイルに入れて kotlinc -script でファイルを指定するとスクリプトとして実行されて計算結果が出力される。

45
90
135
180
225
270
315
360
405

303 :
>>293
C言語
https://ideone.com/nGbT40

304 :
>>293 Nim

import math
const s1 = (sum[int]([1,2,3,4,5,6,7,8,9]))
var s=0; for i in 1..9: s+=s1; echo s

305 :
>>301
命令はもう LDRULDRU... で与えた方がいいかもね
この256文字?命令も URDLURDLU まで最適化できちゃうわけだし

306 :
>>301 Ruby
>>290を意識して最適化してみた
https://ideone.com/zwyM7p

2回動かした後、適切に反転させて右下が開くようにしておけば、
abc-
ed--
f---
----

LとRは、
cba-
de--
f---
----

UとDは、
fdc-
eb--
a---
----

と垂直、鉛直方向にそれぞれ反転するだけでいい
最適化された命令は時計回りか反時計回りに回すことになるけど、((駒の数)! + 1)回以内には必ずでループするのでそれも考慮
が、1980x1080には4秒要する模様

307 :
>>296
マス単位で省けると思う
[a....,bcd..,efghi]を[a,bcd,efghi]って表現して
これを上に傾けて[acdhi,bfg,e]にする操作はこんなコードで出来る
https://ideone.com/i7EmbB
他の方向へは対称性を利用すれば書けるから
今は左下に寄ってるみたいな情報を持ってればいいし
その情報で行列表現にも戻せる
まあ駒の数が多い場合は大して速くならないけど

308 :
あとは2回目以降どうやって傾けても駒の配置は合同(かその反転)になるから
2回傾けた結果を使って4回目を求めて……ってやればO((駒の数)*log(最適化された命令の長さ))で済みそうだよね

309 :
>>306
面倒なループ書かなくても反転でいけたのか・・・
数学力が足りなかった

310 :
>>276>>301のボードで

こういう処理はCが速かろうということで何の工夫もないコードを書いてみた
アクションの最適化なしで256回動かした場合

MacBook-Pro:tmp$ time ./a.out <data.raw > r.raw

real 0m0.638s
user 0m0.625s
sys 0m0.009s
638ミリ秒

アクションの最適化だけ実装すると
MacBook-Pro:tmp$ time ./a.out <data.raw > r.raw

real 0m0.045s
user 0m0.037s
sys 0m0.006s
45ミリ秒

https://ideone.com/bZmXpg

311 :
補足
256回というのは>>301にある256アクションをそのまま行うということ

312 :
目先を変えて Apple の GCD を使って8スレッド並列にしてみた
4コアのPCで3倍くらいになった

アクションの最適化なし
MacBook-Pro:tmp$ time ./c.out <data.raw > rc.raw

real 0m0.218s
user 0m1.190s
sys 0m0.027s
218ミリ秒

アクションの最適化あり
MacBook-Pro:tmp$ time ./c.out <data.raw > rc.raw

real 0m0.023s
user 0m0.058s
sys 0m0.008s
23ミリ秒

100回繰り返すと1回あたり18msec程度になる模様
MacBook-Pro:tmp$ time for i in `seq 1 100` ; do ./c.out <data.raw >rc.raw ; done

real 0m1.814s
user 0m6.659s
sys 0m0.589s

https://ideone.com/ULrjTi

313 :
やっぱはえ〜w

314 :
(そして今試してわかったが dispatch_group は
>>312のように使いまわさず wait 後破棄してまた create する方が高速、と)

315 :
スクリプト言語のわりには速いと言われるjsだけど当たり前なのかもしれないが桁違いにぜんぜん敵わんくて糞ワロタww

316 :
JS のは配列の初期化や文字列操作関数とかが足引っ張ってるんじゃないだろうか。
毎回メモリアロケートするからキャッシュも効きにくそうだし。
2次元配列に初期値セットしてからコードで操作した方が速い気がする。

317 :
PCの速度差がかなりあるだけかも知れんし後でjs版も計測してみる

318 :
各コマの最大可動範囲は最初に定まるし
ターンが進むにつれ狭まりもするから
それで最適化できん?

知らんけど

319 :
>>306のやり方だと二回傾けて以降は駒の入れ替えだけでいいから
numpyでboard[board!='.']=np.fliplr(board)[np.fliplr(board)!='.']とかやれば速いかな
インデックスは毎回計算しなくてもいいけど

320 :
>>319で書いてみたけど
傾きの処理自体はC並みに速い
https://ideone.com/NWCyYW

321 :
そりゃあ
numpyの本体はC言語だしなぁ・・・

322 :
本当は数値計算みたいにもっと速い命令を使ってくれるかなと期待してたんだけど
そういう上手くはいかなかった

323 :
>>282
Kotlin
https://paiza.io/projects/wLuen-HE27TC3lZo8QclPw
何を何枚使用するかの内訳も出るようにした。

324 :
>>276のコードで>>301のデータを
C版を計測したMacのChromeで計測してみた
結果は>>301と似たような数字で性能差はあまりなさそう

actions(256個)そのまま
37.972秒

最適化した URDLURDLU を使用
1.861秒

325 :
じゃあArray版作るか…
思ったんだけどこれWebGLでGPU計算出来るかな?いやGPGPU向きの問題かどうかすら分かんないんだけど詳しい人いるかと思って。

326 :
>>276
J

left =: (((#~-.),(#~))'.'&=)"1
right =: (((#~),(#~-.))'.'&=)"1
solve =: 3 : 0
:
if. (#x) = 0 do. y return. end.
action =. {. x
actions_left =. }. x
if. action = 'U' do. board =. |: left |: y
elseif. action = 'D' do. board =. |: right |: y
elseif. action = 'L' do. board =. left y
elseif. action = 'R' do. board =. right y
end.
actions_left solve board
)

Cシングルスレッド版の3.5〜6.6倍遅い
アクション(256個)そのまま
4.242秒
最適化した URDLURDLU を使用
0.161秒

https://%62it.ly/2rybKgZ

327 :
Jが…Jがちゃんとプログラミング言語しとるw

328 :
先頭2行のJらしい部分の解説

文字列を.と等しいか('.'&=)でマスク(#~)
(#~'.'&=) '..a.b' => '...'
その論理否定(-.)でマスク
((#~-.)'.'&=) '..a.b' => 'ab'
,で繋げる
(((#~),(#~-.))'.'&=) '..a.b' => '...ab'
これで右寄せ。反対に繋げれば左寄せ。

直感的で 読 み や す い

329 :
えー直感ってなんだっけ…

330 :
第六感的に読みやすいな

331 :
2つの普通のサイコロを
面と面をくっつけて直方体を作る
何種類の異なる直方体ができるか?
回転して同じものは同じ種類とする

332 :
>>331 PHP
84

333 :
共同ツール 1
https://seleck.cc/685

https://trello.com/
ボードのメニュー → Power-Upsから拡張可能 Slack DropBoxなど
Trello Chrome拡張機能 elegant
ttp://www.kikakulabo.com/service-eft/
trelloのオープンソースあり

共同ツール 2
https://www.google.com/intl/ja_jp/sheets/about/

共同ツール 3
https://slack.com/intl/ja-jp
https://www.dropbox.com/ja/
https://bitbucket.org/
https://ja.atlassian.com/software/sourcetree
https://sketchapp.com/extensions/plugins/
ttp://photoshopvip.net/103903

ttps://goodpatch.com/blog/sketch-plugins/

334 :
>>333
アフィ

335 :
>>331
無限

336 :
>>331
C言語
#include <stdio.h>
int main(){ printf("%d¥n", (6+5+4+3+2+1)*4); return 0; }

337 :
>>331
直方体そのものは1つなのでは?各面に打ってある点の数は違うけど同じ直方体であることには変わりないよね。

などと言ってしまったら問題にならなくて全然面白くないので後で考えてみるよ。w

338 :
まず数学的に考えると、6面の内の一面がくっつくのでこれで6種で、更にくっ付けられる面が6面なので6倍。そして4回回転できるので更に4倍。しかし同じ値の面がくっついた時はお互いに回転させても同じのができるのでこれを引く。
とすると6*6*4-6*4=6*4*(6-1)=6*4*5=120でいいのかな。

339 :
ま、しかし、数学的に答え出しちゃったらプログラム作る意味なくなるような気がするので全パターン作って確かめるようなの作るか。

340 :
>>338
なんか違う

341 :
プログラム的な最適解って難しい

342 :
プログラムでやる意味がまったくないな

343 :
>>338
1-1
1-2 2-2
1-3 2-3 3-3
1-4 2-4 3-4 4-4
1-5 2-5 3-5 4-5 5-5
1-6 2-6 3-6 4-6 5-6 6-6
すなわち (6+5+4+3+2+1)×4面

344 :
>>336
改行書くことすら惜しむくらいなら、「return 0;」省略すればいいのに・・・

>>339
そういうときはn面体に対するものにするとか、
m個くっつける場合のものにするとか、どこかの値を可変にすればいい。

345 :
>>340
そうか。何が違うのか今のところ俺にはわからない。

>>343
その説明の意味がわからない。何を表しているのか?

346 :
>>345
くっついている面の組み合わせ(サイコロを2つ振って出る目と同じ)×4回転

347 :
>>346
あ、そうか。例えば1、6は6、1と同じか。

348 :
6*7/2*4=6*7*2=84てことだな。

じゃ、あとは無理矢理全パターン出して全件チェックするブルートフォースなプログラムでもゆっくり作るとするか。

349 :
散々考えて作ったプログラムで 96 と結果が出てしまい、何がどう間違ってるのか探すの面倒なのでとりあえず休止。
またその内気が向いたらやってみよう。

350 :
よくある総当たり戦の試合数を求める問題の変形だろ
いくらなんでも算数レベルはさすがに・・・

351 :
算数レベルだと不満があるみたいなので類題を
正五胞体の各面に1〜10の番号が振られたサイコロが2つある
2つの正五胞体の面を合わせて新たな多胞体を作るとき、
面の模様の組み合わせ合わせてを合わせて何通り作ることができるか求めよ

352 :
面を合わせる操作で胞はどうなるんだろう
模範解答が欲しいな

353 :
O(1)でない問題に挑みたい

354 :
無理だろ
問題のクラスがどこに属するかを確かめてから……ってのは

355 :
出題者がわからなくてどうする

356 :
出題者は学校の宿題をコピペしてるだけなんだからそんなの分かるわけないだろw

357 :
円周上の格子点を求めるプログラムをしこしこ作ってるが、
マルチスレッドで動かしたらPentium G6950とAtom x5-Z8350タブレットでほとんど変わらなくて(´・ω・`)

358 :
どのお題?

359 :
これか



「自然数Nに対して、平面上の円で、その円周上の整数点がちょうどN個となる円の最小半径を求めよ」

例)
x^2 + y^2 = 1の整数点は4つだがN=4の最小半径ではない。

(x-0.5)^2 + (y-0.5)^2 = 0.5の方が小さい。 4点は(0,0) (1,0) (0,1) (1,1)

360 :
ああ、自称数学が出来る人がアホな事を言ってたヤツだな

最小値は存在しないとか
最小値が存在する証明は簡単だとか言いつつまったく出来てなかったり

361 :
全く解いてないけど
力業しか方法は無いのかな?

AVX512とかGPUとか使えたりする?

362 :
>>360
複数解があれば、その中で一番小さい物が最小値
という当たり前の定義に何か疑問でも?

363 :
まだ続けるのその話題?

364 :
>>362
最小値が存在するためにはいくつかの条件があって
その条件を全く考慮しないで「証明」と言い張ってたアホがいたと
まさか君じゃないよね?

365 :
それより数学のセンセが複素指数関数をなんだか誤解しているのを何とか説き伏せたいのだけれども…

366 :
>>365
多値関数のことを周期関数とか見当違いのことを言っていたあなたが何か言えることなんてあるんですか?
でこの話題まだ続けたいの?

367 :
>>365
やるならよそで個人的にやってくれ

368 :
なんか最小値とかでよほど辛い目にあったんだろうなw

369 :
>>366
続けます、今必死に
http://www.eng.niigata-u.ac.jp/~nomoto/2.html
を理解しようとしています、とてもつらいです、涙が知らず知らず頬を伝っているありさまです…

370 :
せんせーともども数学板へどうぞ。
こいつら異世界転生もののアニメ見てそうだなワラ

371 :
数学の専門家が高見の見物

372 :
仲間内じゃうだつが上がらないのかな、誉められたくてこんなとこまで来てチンコしごいてんのか気持ち悪い。
リアルで軽んじられてる理由が透けて見えるよ。ほんと迷惑な話。

373 :
>>370みたいなアニオタは巣から出てくるな 不快な上に真面目に気持ち悪いわ

374 :
お題
辺の長さと面の面積と体積の全てが整数である4面体を求める

375 :
>>369
もしかしてリーマン面とかも知らずに留数定理がどうのこうの言ってたのか?
厚顔無恥ってこのことだぜ

376 :
>>375
素人が素人を笑う
目糞鼻糞

377 :
>>376
言ってる事がよくわからないんだが?
もしかしてくやしいの?

378 :
数学コンプがプログラミングに逃げたが
やっぱり数学からは逃れられなかっただけ

379 :
お題
(1) 入力された英数字([A-Z0-9])をモールス信号を表す文字列に変換する。大文字小文字は区別しない。
 記号は変換出来なくても良い。また数字の略体は不要。短点と長点には何の文字を使っても良いが、
 なるべく分かり易くするために「・」、「−」等にすること。

(2) (1)で作ったモールス信号を表す文字列の逆変換。

(3) 和文版の(1)と(2)

欧文、和文モールス符号については下記ページ参照
https://ja.wikipedia.org/wiki/%E3%83%A2%E3%83%BC%E3%83%AB%E3%82%B9%E7%AC%A6%E5%8F%B7

380 :
>>351
問題そのものとは関係ないかもしれんが正五胞体の面同士を重ねても通常の多胞体にはならないんじゃ
次元をひとつ下げればふたつの正四面体の辺同士を重ねる操作にあたるよね

381 :
>>379 Ruby
(1) を wavで出力
https://ideone.com/uw0YFZ

382 :
>>377
おれは数学の専門家だって
>>369>>375の低レベルなバトル楽しみにしてるよ

383 :
その自称数学の専門家がなんでまたこんな場違いな板のスレに粘着してんの?
お前も実は数学コンプなんだろ

384 :
もう数学問題に特化したお題スレ作った方が良いのでは?

385 :
>>374
無い

386 :
>>383
趣味のプログラマーだから
数学的に面白いネタ探し

>>385
プログラムで書きなさい

printf("ないn");

387 :
プログラム板で文字化けさせてる人って

388 :
>>386
いちいちID変えてる時点でこいつが誰なのかすぐに分かってしまいますね

389 :
全角の「ない」は化けていないのに不思議?不思議?

390 :
円マークかな?Unicodeだとバックスラッシュとはコードが違うよね。

391 :
前にLinuxの端末でバックスラッシュと円マークの両方が半角で普通に両方入力できて驚いたことがある。やっとまともになったのかとw

392 :

\


393 :
なぜ化ける

394 :
>>388
おれは誰なんだ?
ごくたまにしか書き込んで無いけど

395 :
datをバイナリエディタで見たら化けてる所は 0xfc 0xfc になってるが、なぜそれになるのかは知らん。

396 :
ていうかC言語等の文字のエスケープに使う文字は本来であればバックスラッシュだ。
円マークになってる入門書等が多い理由は歴史的な理由による。
どういう歴史的理由かは長くなるので省略。

397 :
中途半端な知識で語りたがりが多いな
数学といい文字コードといい

398 :
ま、これでも読め。
https://anopara.net/2016/03/06/%e5%86%86%e3%83%9e%e3%83%bc%e3%82%af%e3%81%a8%e3%83%90%e3%83%83%e3%82%af%e3%82%b9%e3%83%a9%e3%83%83%e3%82%b7%e3%83%a5/

399 :
2chなんだから
じゃんじゃん語るべき

400 :
"\" 円(U+00A5)
"\" バックスラッシュ(U+005C)

401 :
両方U+005Cにされたw

402 :
SIPやアプリや2chがどういう文字コードを扱ってどういう変換をしてるかがわからん
これは調べたり実験しないと

教えたがりの書き込みは全く役に立ってないから
書かなくて良いよ
釈迦に説法

403 :
>>402
いちいち突っかかるお前も大概だがな
黙って見ているってこともできないのか

404 :
できますん

405 :
2ch はシフトJISだから1バイトのバックスラッシュは基本書けないし読めない
(U+00A5に対応する文字コードがない)
実体参照の使用が許可されてる板なら実体参照でU+00A5の字も書ける
fcfc はわかんないな

ググるとfcfcはシフトjisのibm拡張文字領域で、
aixの修正された不具合の説明で文字コード変換の際に
意味のないコードfcfcになるのがどうのこうのというページがあったから
libicu(ibmの文字コード関係ライブラリ。割と広く使われている)で
そういう不具合のあるバージョンがあるんだろうな

406 :
テキストファイルっていっぱい種類あるね

407 :
>>405の補足
2ch は投稿されたfcfcをそのまま出してるだけで、
誤変換しているのは投稿しているアプリ

それはそれとしてこの板ではバックスラッシュ使いたいよね

408 :
>>405
U+00A5がYen signじゃろ…

409 :
この板ではバックスラッシュも円マークも両方書き込める

実例↓

文字コード総合スレ Part11
https://mevius.2ch.sc/test/read.cgi/tech/1516629503/116

410 :
\\\\\\\\
できるかな?

411 :
お。できた。

412 :
日本人にも責任がある


【666の獣トランプ涙目w】 2000年ぶりにWあの漢″帰郷の噂… <再臨> イスラエル、また処刑する!?
http://rosie.2ch.sc/test/read.cgi/liveplus/1526351394/l50

413 :
>>408
そっかごめん訂正
u+00A5 はシフトjisの0x5c に変換されて書けるけど、
ユニコードの u+005c のバックスラッシュは書けない、が正解だった。

414 :
バックスラッシュと言えば Visual Studio で c のソース編集時に
バックスラッシュが表示されてて、文字コードはshift jisなのに何故?

と思ってたが Visual Studio では0x5Cがどっちで表示されるかはフォント任せなんだな
shift jis (cp932) では円マークと規定されてるのに。

415 :
>>397
何事も、ニワカな奴ほど語りたがるからしゃーない

416 :
数学コンプだけじゃなくて文字コードコンプまで発症したのかw

417 :
頭がおかしいんだから仕方ないね
精神科のお薬飲んで寝ろ

418 :
>>379
Kotlin
(1)のみ
https://paiza.io/projects/XTGPpBdI1JBYNmglXvOEOw

419 :
禁煙の立て札の前でタバコを吸う数学奴文字コード奴であった。

420 :
>>379
C言語 (1)(2)のみ
https://ideone.com/8l7ZKv

421 :
そんなに数学挑みたいならこれでもどうぞ
お題
2つ以上の正の整数が与えられる
この時、最後を除く自然数に対し四則演算及び括弧を使い数式を作ることで、最後の自然数と同値にせよ
複数の数式が考えられる場合、どれか1個を出力すれば良い

入力例1: 5 2 3 3 10
出力例1: -5+(2+3)*3=10
入力例2: 0 1
出力例2: Impossible

422 :
だから数学問題は新スレ作ってそっちでやれって。

423 :
飲食禁止の貼り紙の前でクチャクチャと音を立ててキムチを食す数学奴

424 :
極度の数学コンプとそれを煽る人達のせいで訳わからなくなってるな
数学コンプの人らは数学に関するすべてを禁止したスレを立ててそっちに移住したほうが平和なんじゃないの

425 :
スレが荒れるなら分岐したほうがいいのかね
プログラミングのお題スレ(数学)
みたいに
あんまり人がいないなら別にこのスレでも良いと思うがな(俺は)

426 :
>>424
なるほど、禁止するなら
プログラミングのお題スレ(数学禁止 )
こうだな
こっちでもいいな

427 :
プログラミングのお題には数学要素のあるもの多いな

428 :
>>421と同じようなのをやった気がするなとログ探したらやっぱりやってた…3年以上前やw

プログラミングのお題スレ Part6(c)2ch.sc
https://peace.2ch.sc/test/read.cgi/tech/1418278634/148,703

429 :
>>427
数学要素があること自体はいいんだけど、数学的に解いたら後は手計算の代わりに入出力と演算をプログラムにやらせるだけっていうお題は興醒めというか面白味がないね。

430 :
でもO(1)かどうか確かめられない人がほとんどなんでしょう

431 :
お題スレ Part9 では、
tan() の値が有理数になる場合についての
数学的証明が活発に議論されていたな

432 :
数学者がプログラミングの領域にしゃしゃり出てくんなや

プログラミングはExcel方眼紙を操る文系の神聖不可侵領域なんや

433 :
ディープラーニングとかAIとかモロ数学(知識)では?

434 :
>>426
電子計算機に数学禁止て。。。

435 :
プログラミングも一応数学の一部ではあるけどな。計算手順だし。
しかしプログラミングのお題として数学問題そのまま出されると数学的に頭で考えるだけで解けてしまってあまり意味がないだろう。
コンピュータに計算をさせるという要素がなくなりプログラミングのお題にならない。それは数学のお題だ。

436 :
>>431 の過去スレの有理数・無理数の問題が数学問題で、

このスレの>>421 は、プログラミング問題だな。

437 :
>>421
「同値」の意味くらいは知っておいた方が良いかと

438 :
>>429
プログラムってのはそういうもんだろ
人間が考えたアルゴリズムを言語という形にするだけ

439 :
数学ってアルゴリズム考える所までで終わりじゃない?算数や物理じゃないから式に値を入れて計算して答えを出す所までやる必要がなくて、式そのものを求めて終わり。

440 :
このスレで数学って言ってるのは
式だけじゃなくアルゴリズムまで含んでる気がするけど

アルゴリズムは数学じゃないっていうなら
>>421なんか数学的要素ゼロになっちゃう

441 :
プログラミング的な試行錯誤のあるお題を考えるのって難しくない?
まぁ俺には数学的なお題を考えるのも難しいが

442 :
あらら、やっぱ>>421はもう出てたか
よくある設定だし既出かもなーとは思ったが

443 :
キムチ臭いアホが粘着しとるの〜

444 :
>>440
まあ、式を複雑にしたのがアルゴリズムみたいなものかな。
で、コンピュータを使う理由は普通はプログラムを作るためではなくて、実際にプログラムを動かして計算させて結果を得るためだ。
正解となるプログラムを作った段階で終わりにはしない。

445 :
式とアルゴリズムは別物
計算アルゴリズムが存在しない式もある

446 :
>>444はネタでしょ?さすがにw

447 :
やっぱり不気味だよ
例えば>>276なんて最終盤面がU・D・L・R(上下左右)とUR・UL・DR・DL(左上・右上・左下・右下)の8つしか無いだろ
2回計算して終わりじゃん

448 :
>>447
2回で終わらないでしょ
頭冷やせ

449 :
2回かどうかは知らんが、最後に2パターンのうちの一つを作って回転もしくは反転させるだけだわな
入力ごとに馬鹿正直に駒を動かすようなプログラムを組む奴は壊滅的にセンスが欠けている

450 :
数学禁止

451 :
>>449
題意を正しく理解していないね

452 :
ごちゃごちゃ言う前にプログラム書けばええねん

453 :
お題:
以下のように操作を繰り返して単一リストになったらその要素を返す

[1,2,3,4,5,6,7,8,9]
-> [5,1,13,2,21,3,29,4]
-> [16,16,41,1,66,38,91]
-> [8,8,124,69,33,19]
(中略)
-> [4,216]
-> [2]

テスト例:
[1,2,3,4,5,6,7,8,9] -> 2
[9,8,7,6,5,4,3,2,1] -> 2496
[3,1,4,1,5,9,2,6,5,3,5,8,9,7,9,3,2,3,8,4,6] -> ?

454 :
操作がわからん

455 :
操作を考える問題
と思う

456 :
>>453 Java
https://ideone.com/QcHstO

457 :
>>456
要素が1個になるまで繰り返す
奇数の場合3で掛けて右の数値を足す
配列の右端を切り捨てる

とか、どこ情報なの?

こんなの読み取らなきゃいけないのなんて「プログラミングのお題」ではない
こんな糞問題出すなや >>453

458 :
誰でも簡単に出来るお題じゃあつまらんから
数学だったりパズルだったりの要素があってもいいかと

459 :
答えが出ちゃうとツマランな

460 :
自演じゃなくても疑われるぞ

461 :
>>457
1行目間違えた

偶数の場合2で割る

462 :
なぜ朝鮮人はプログラムを書かないのか
それは書かないからではなくて「書けない」からである

463 :
>>457
算数クイズだな

464 :
>>451
題意はわかってるけど頭の中でコマを動かせないんだと思うぞ

465 :
>>488
例えばこんな風に動くとかわかる?
よく考えてみて

元のボード
abcdefghi.
12345678..
..........

'DRUL' 適用
1abcdefgh.
2345678i..
..........

もう一度'DRUL' 適用
21abcdefg.
345678ih..
..........

さらに'DRUL' 適用
321abcdef.
45678ihg..
..........

466 :
ああ>>447, >>449は勝手に駒の区別をしないことにしたうえで難癖付けてたのか
プログラミング以前に日本語のセンスが「壊滅的に欠けている」なw

467 :
日本語の問題なんだろうなとは俺も思った。それにしてもちょっとでもコーディングしてみれば勘違いに気づきそうなものだが…
コーディングしない系プログラマなのか

468 :
×コーディングしない系プログラマ
◎コーディングはできない、プログラマでもない、人にいちゃもんつけるのが得意なだけの嫌われ者

469 :
ボコボコに突っ込まれてて得意でもなさそうだけどw

470 :
>>466
俺はIQ高いから頭ん中でシミュレーションしてみたんだわ
ただ、駒が全部真っ黒で見分けが付かなかった
すまんな

471 :
このスレもう4年以上経つのか
時の流れって怖すぎだよな

472 :
>>465
それってそんなにコマ沢山使わなくてもわかるよね。
3つのコマを2*2の4枠の中に入れれば傾けるだけでくるくる回せるから。

473 :
>>472
>>447で本人が言っている8種
>>449で反転だの言ってるからその倍にして16種

結果の盤面がそれ以下のバリエーションだと
「やっぱり8種類以下しかないじゃないか!」とかになるだけだろ

474 :
もちろんもっと少ないコマでも結果が16種より多くなる盤面はあるけど、
幾らでも多くなるよというのをイメージしやすいように大きめにした

475 :
>>359
勉強をかねてこれやってるが、ある程度、できたところでアップしてみる。
考えてる方針が速いとはおもうが・・・

476 :
>>379 HTML5 + Web Audio API
(1) を音声出力
https://ideone.com/9aOhLO

477 :
>>476
これ面白いな

478 :
お題

スペース区切りで入力された文字列をすべて含むリング状の文字列を出力し、
その後に、各入力文字列に対応するインデックスと長さを出力せよ

出力文字列の構成・格納順に関しては特に制約は設けない
インデックスと長さは出力文字列の先頭からの最短マッチで求める

[制約] (なくしてもいい)
文字列の構成文字は0と1の二種類とする
入力の各文字列長は最大9文字とする
入力要素数は最大255個とする

[入力例1]
0 1 01 10 111 1001
[出力例1]
01110
(0,1) (1,1) (0,2) (3,2) (1,3) (3,4)

[入力例2]
01 1000 1010 100 0 0010 110 0000 00 0111 101 0100 11 10 111 0110 1101 010 000 1 001 0001 011 1001 1011 1100
[出力例2]
010100001101110
(0,2) (3,4) (1,4) (3,3) (0,1) (14,4) (8,3) (4,4) (4,2) (10,4) (1,3) (2,4) (8,2) (1,2) (11,3) (7,4) (8,4) (0,3) (4,3) (1,1) (6,3) (5,4) (7,3) (13,4) (9,4) (12,4)

関連 >>379 >>420

479 :
>>475
じゃあ競争しよう

私はこれからスタートであまり時間もないので
ちょっと時間がかかるかも知れないけど

480 :
>>478
入力文字列を単純につなげば解の1個だが...

求める文字リングが短いほど良い解っていう条件?

481 :
>>480
そんな感じです
ほどほどに圧縮できてれば必ずしも最短でなくても

482 :
>>479 です
とりあえずこれだけ出来ました
4770でシングルスレッドのC++で15分くらい
半径を倍にすると16倍くらいは時間がかかりそうなので
マルチスレッド&アセンブラ&AVXでガシガシに最適化したくらいじゃ
大して検索範囲は増えなそう
何かアイデアがないか考え中
----
3 : r=1.178511
4 : r=0.707107
5 : r=5.892557
6 : r=2.500000
7 : r=23.890677
8 : r=1.581139
9 : r=15.320647
10 : r=12.500000
11 : r=57.536370
12 : r=3.535534
13 : r=111.621856
14 : r=62.500000
15 : r=76.603235
16 : r=5.700877
18 : r=32.500000
20 : r=17.677670
24 : r=12.747549
28 : r=88.388348
32 : r=23.505319
36 : r=45.961941
40 : r=63.737744
48 : r=52.559490
64 : r=117.526593

483 :
ピタゴラス素数(4n+1型の素数、5、13など)は2乗和で表わせて。
逆に、2乗和(X^2+Y^2)は、2とピタゴラス素数の積の表わせる、もしくはこの問題を考える上でそれだけに限定していいとおもってる。

2^i * 5^j * 13^k * ・・・・をピタゴラス合成数と名付けると。
X^2 + Y^2 = ピタゴラス合成数、の解とその個数は比較的カンタンに求まる。

それを利用して、拡大(縮小)と並行させたやつで、最小半径を与えるのは全て表せるはず。

具体的には、上の解が求まっていれば、
(mx + a)^2 + (my +b)^2 = ピタゴラス合成数、の解と個数もそれなりの低コストでもとまる。
mの剰余を考えれば、解があるaとbの範囲も限定できる。

484 :
ノーヒント、全て自力で求めようと思ってたんだけど
だから競争って

まあいいや
使えそうなら使わせていただきます

485 :
ピタゴラス素数は2乗和であらわせて。
(a^2 + b^2) (x^2 + y^2) = (ax + by)^2 + (bx - ay)^2 が常に成立するので、

ピタゴラス素数と 2 = 1^2 + 1^2 の積で、新たな2乗和の式が作り出せる。
この式から、解とその個数も求まるはず。

しかし、これがわかっても最小値を求めるのは簡単ではないとおもう。かなりの計算量がいるはず。

486 :
z = x + yiという複素数でいうと、このノルムは|

487 :
z = x + yiという複素数でいうと、ノルムは|z|^2 = x^2 + y^2 であって
|z||w| = |zw|を満たすので、
>>485の式は、新たな複素数 zwを作り出すことと一緒。

488 :
お題

ケブンリッジジェネレータ

知らない人のために解説すると、人間の認識力の問題で単語の最初と最後が正しいと途中の文字順序が違っていても正しい単語と見間違えるというのがある。
例えば「よこうそ」は「ようこそ」と見間違える。「およはう」は「おはよう」と見間違える。(これは違うと分かっていても見えてしまうという、空耳アワーの歌みたいでもある)。

以前2chでこのことについてケブンリッジで発見されたというような内容の文章がコピペされて広まり一時期有名になりそれ用の変換をするケブンリッジジェネレータのページ(JavaScriptで作られてたと思う)が作られたりもしていた。
今はもうないようだが今回のお題はこれである。つまり、入力された単語の最初と最後はそのままで途中の文字順序をランダムに入れ替えた結果を出力する。
日本語の文章は普通は単語と単語の間にスペースがないが、これについては処理を簡単にするためにスペースありで入力された文章しか正常に処理しないということにして良い。

489 :
>>488 Ruby
str = <<~EOT
Alice was beginning to get very tired of sitting by her sister on the bank,
and of having nothing to do: once or twice she had peeped into the book
her sister was reading, but it had no pictures or conversations in it,
'and what is the use of a book,' thought Alice 'without pictures or
conversations?'
EOT

puts str.gsub(/(?<=\b\w)\w*(?=\w\b)/){|m| m.chars.shuffle.join}
#=>
Aclie was bngneniig to get very terid of sntitig by her seistr on the bnak,
and of hnvaig nnthoig to do: ocne or twcie she had ppeeed into the book
her sitser was rniadeg, but it had no piteucrs or cinsoentravos in it,
'and waht is the use of a book,' tohught Aclie 'wtihuot pricetus or
coenrovanstis?'

490 :
>>478
これってその条件内なら普通に最適解(圧縮度)出せる方法とか存在する?

491 :
全通りやれば良い

492 :
>>488 Squeak/Pharo Smalltalk

| input nonLetters |

input := 'Alice was beginning to get very tired of sitting by her sister on the bank,
and of having nothing to do: once or twice she had peeped into the book
her sister was reading, but it had no pictures or conversations in it,
''and what is the use of a book,'' thought Alice ''without pictures or
conversations?'''.

nonLetters := input reject: #isLetter.
(input findTokens: nonLetters keep: nonLetters) inject: '' into: [:acc :token |
(token first isLetter and: [token size > 1])
ifTrue: [acc, (token first: 1), token allButFirst allButLast shuffled, (token last: 1)]
ifFalse: [acc, token]
]

"=> Ailce was beingnnig to get vrey tierd of sttinig by her seitsr on the bank,
and of hvanig nohintg to do: once or twice she had peeepd into the book
her seitsr was riaendg, but it had no piercuts or coitnevnarsos in it,
'and what is the use of a book,' thuoght Alice 'wtiohut ptriecus or
ctnaseinroovs?' "

493 :
みんな日本語スルーしててワロタw

494 :
>>483
やってみたけど、
馬鹿正直に検索するのと大して変わらんね
半径1000以下を全て検索するのは厳しそう

円周を検索するする昔ながらのアルゴリズムは優秀だ

495 :
円周を検索するする昔ながらのアルゴリズムとは?

496 :
>>488 Squeak/Pharo Smalltalk 日本語文章処理例

| input nonLetters |

input := '以前2ch で このこと に ついて ケブンリッジ で はっけん された と いうような ないよう の ぶんしょう が コピペ されて ひろまり
いちじき ゆうめい になり それよう の へんかん を する ケブンリッジ ジェネレータ の ページ(Java Script で つくられ てたと 思う)が つくられ たりも していた。
今 は もうない ようだが こんかい の お題 は これ である。つまり、にゅうりょく された 単語 の さいしょ と 最後 は そのまま で とちゅう の もじじゅんじょ を ランダム に いれかえ た 結果 を しゅつりょく する。
にほんご の ぶんしょう は 普通 は 単語 と 単語 の 間 に スペース が ないが、これ に ついては 処理 を かんたん に するため に スペース あり で にゅうりょく された ぶんしょう しか せいじょう に 処理 しない ということ に してよい。'.

nonLetters := input reject: #isLetter.
(input findTokens: nonLetters keep: nonLetters) inject: '' into: [:acc :token |
(token first isLetter and: [token size > 1])
ifTrue: [acc, (token first: 1), token allButFirst allButLast shuffled, (token last: 1)]
ifFalse: [acc, token]
]

"=> 以前2ch で このこと に ついて ケブリンッジ で はっけん された と いうような なよいう の ぶんょしう が コピペ されて ひろまり
いちじき ゆうめい になり そよれう の へかんん を する ケンブッリジ ジレェーネタ の ページ(Jvaa Spcirt で つくられ てたと 思う)が つくられ たりも しいてた。
今 は もうない ようだが こんかい の お題 は これ である。つまり、にりゅうょく された 単語 の さしいょ と 最後 は そのまま で とちゅう の もゅんじじじょ を ラダンム に いかれえ た 結果 を しょゅつりく する。
にほんご の ぶんしょう は 普通 は 単語 と 単語 の 間 に スペース が ないが、これ に ついては 処理 を かんたん に すたるめ に スーペス あり で にゅうりょく された ぶしんょう しか せょじいう に 処理 しない といこうと に してよい。"

497 :
>>496
ランダムに入れ替えるのはいいけど、元の単語と同じ並びは排除しないと期待外れの出力になるね

498 :
完全にランダムなんだから、結果が同じ並びでもそのまま出力するのが筋だろ
変更するなら日本語の文章の方だ

499 :
>>488 Squeak/Pharo Smalltalk 同じ並びは排除

| input nonLetters |

input := '以前2ch で このこと に ついて ケブンリッジ で はっけん された と いうような ないよう の ぶんしょう が コピペ されて ひろまり
いちじき ゆうめい になり それよう の へんかん を する ケブンリッジ ジェネレータ の ページ(Java Script で つくられ てたと 思う)が つくられ たりも していた。
今 は もうない ようだが こんかい の お題 は これ である。つまり、にゅうりょく された 単語 の さいしょ と 最後 は そのまま で とちゅう の もじじゅんじょ を ランダム に いれかえ た 結果 を しゅつりょく する。
にほんご の ぶんしょう は 普通 は 単語 と 単語 の 間 に スペース が ないが、これ に ついては 処理 を かんたん に するため に スペース あり で にゅうりょく された ぶんしょう'.

nonLetters := input reject: #isLetter.
(input findTokens: nonLetters keep: nonLetters)
inject: ''
into: [:acc :token |
| middle |
(token first isLetter and: [token size > 3
and: [(middle := token copyFrom: 2 to: token size - 1) asSet size > 1]])
ifTrue: [
| shuffled |
[(shuffled := middle shuffled) = middle] whileTrue.
acc, (token first: 1), shuffled, (token last: 1)]
ifFalse: [acc, token]]

"=> 以前2ch で ここのと に ついて ケンブッリジ で はけっん された と いううよな なよいう の ぶしょんう が コピペ されて ひまろり
いじちき ゆめうい になり そよれう の へかんん を する ケリンッブジ ジネレェータ の ページ(Jvaa Srcpit で つらくれ てたと 思う)が つらくれ たりも しいてた。
今 は もなうい よだうが こかんい の お題 は これ である。つまり、にりょうゅく された 単語 の さしいょ と 最後 は そまのま で とゅちう の もじじんゅじょ を ラダンム に いかれえ た 結果 を しょつゅりく する。
にんほご の ぶしんょう は 普通 は 単語 と 単語 の 間 に スーペス が ないが、これ に つていは 処理 を かたんん に すたるめ に スーペス あり で にうりょゅく された ぶょんしう"

500 :
単語の最初と最後が正しいと途中の文字順序が違っていても正しい単語と見間違える
というのは無いこともないが、やっぱりおかしな単語はおかしく見えるな

501 :
>>488
Kotlin
https://paiza.io/projects/vW2LiM_sGEYAb_l7QfaA_g

paiza.io の Kotlin はちょっとバージョンが古いようで shuffle() がなかったので自作した。

502 :
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

AI2XF

503 :
僕の 知合いりの 知合りいが できた パコソン 一台で お持れちにな金る やり方
役立につ かまれもしせん
グルグーで 検るす索と いかいも 『 ネットぐ方稼で法 モヌレアフニノ 』

AXI2F

504 :
荒しだけの2連投か

505 :
よく読み比べてみるとよい

506 :
荒らし業者の連投規制回避の小さな変更

さっさとアク禁になれ

507 :
2個目はどう考えても業者じゃなくてスレ住人だろ…
業者はアク禁になってほしいのは同意

508 :
>>507
お前のレスがあるまでケブンリッジジェネレータなのに気付かなかったわw

509 :
いや、流石にそれは鈍すぎ

510 :
まあ業者も日本語おかしいからね

511 :
人間の認識力はそんなもんなんだろうな。ちょっと似てると同じと判断しまう。そうやって脳は省力化してエネルギーあまり使わないようにしてるのかも知れない。脳を動かすには糖分沢山必要だからな。

512 :
単なる老化

513 :
逆に言えばいちいち全部の文字を正確に認識してたらちょっと誤字脱字や書き損じがあっただけで意味がわからなってしまうぞ

514 :
わからなって

515 :
でもちゃんと読めちゃうってういね

516 :
ういね

517 :
くらだなといこに突っこんじんでゃねーよw

518 :
botの書き込みなんていちいち推敲モードで読まないからな

519 :
推敲は読むときにするもんじゃないぞ書くときだぞw

520 :
>>519
あ、ホントだ、恥ずかしいww
校正というべきだったか

521 :
くらだなといこに

522 :
>>488
Scala
https://scalafiddle.io/sf/QK0Wdt3

523 :
お題:モリカケ問題を解くプログラム

524 :
numpyのdotを再現せよ

525 :
お題: RFC 5321, 5322 に従ったメールアドレスの文字列をテキストファイルから抜き出すプログラム

参考
Javaで正規表現を使って抜き出すプログラム(最初に正規表現のパターンが出力される)
https://paiza.io/projects/Rc2wknAxofvjPfcs9MuYcQ

以下は日本語訳されたRFC
http://srgia.com/docs/rfc5321j.html
http://srgia.com/docs/rfc5322j.html

526 :
あ、ごめん。テキストファイルじゃなくて標準入力からでもいい。
何処から入力するかはたいした問題ではない。

527 :
http://www.din.or.jp/~ohzaki/mail_regex.htm
RFC通りのメールアドレス判定なんて不毛だってはっきりわかんだね

528 :
>>527
わらたwwwww

529 :
昔仕事で MUA 作った時に >>527 にある
folding white space をぶち込んでくる送信元がいて苦労した記憶が…

530 :
>>527
ここはお題スレだから不毛で良いんだよ。パズルを解くようなもんなんだから。

531 :
>>476に感化されて>>379の(1)(2)(3)を勉強しながら書いてみた
https://scalafiddle.io/sf/ZGr8M2X/1

532 :
お題: バイオリズム計算

計算結果の出力だけでも良いが、なんだったらアスキーアートやGUIで波形の絵を出したりしても良い。その辺は自由。

バイオリズムとは何かについては Wikipedia 参照。
https://ja.wikipedia.org/wiki/%E3%83%90%E3%82%A4%E3%82%AA%E3%83%AA%E3%82%BA%E3%83%A0

実際に計算して図を出すサイトもある。
https://keisan.casio.jp/exec/system/1231994137

533 :
計算式まで示されちゃってるから出力形式に凝らないと厳しいかな・・・

534 :
お題:
ある数値nが与えられた時に、次の条件を満たす2つの数値a,bを求め、表示するプログラムを作成しなさい。
●aとbの最小公倍数がnとなる
●a<bかつaとbの差(b-a)が最小となる

例:n= 360→a= 36,b= 40
  n=1000→a=125,b=200


例が間違ってたらゴメン

535 :
数学板で

536 :
数学板はアルゴリズムは範疇じゃない

537 :
>>534
n=1000だとa=200,b=250?

538 :
>>534 Java
https://ideone.com/TJSzrf

539 :
>537

申し訳ない。その通りです。

540 :
>>534 Java (>>538を修正)
https://ideone.com/vmgMtp

541 :
>>539
a=1
b=2
じやあかんか?

542 :
数学板じゃなくてもさすがに最小公倍数くらいは
このスレならみんな知ってると思ってた

543 :
>>542
公倍数は最小公倍数の倍数
公約数は最大公約数の約数

…当たり前のように思えて実際の証明は結構イメージしにくく、一回読んだだけではよくわからないのでした…

544 :
お題:標準入力からhtmlが一行ずつ与えられるのでh1,h2などのhタグを階層化して出力しなさい。タグ内のテキストも一緒に出力し、タグ内にimgが含まれていたらそのaltを出力しなさい。

出力例:
h1 2ちゃんねるにようこそ
....h2 クソスレ乙
........h3 逝ってよし
....h2 オマエモナー

545 :
>>532 C++
https://ideone.com/zLWLhl
>>534 C++
https://ideone.com/TS6iHb

546 :
>>532
Kotlin
https://paiza.io/projects/1cs_1FmFyWgV8HYYxdNWYg

547 :
任意の文字列を含む有効なビットコインのアドレスを生成するプログラムを作成せよ。有効な形式のアドレスでなければブロックチェーンエクスプローラで検索しても認識されない。ビットコインアドレスの形式については下記サイトを参照。
https://qiita.com/pokochi/items/4d536a4a24067505abea

例:下記サイトの二番目にあるようなアドレス、
https://bitflyer.com/ja-jp/glossary/address

548 :
>>534
C++(使ってるのはほとんどCですが)
https://ideone.com/S4H5Mo

自分の考えてたアルゴリズムをCで記述してみました。
模範解答、とはとても言えない代物です。もっと改良の余地がありますし、バグも取りきれてないかもしれません。

それと>534出題時に考えてたアルゴリズム(手計算でやってましたが)を↓に記述してみました。
こちらは明確に誤った答が出されてしまいます。参考程度に orz
https://ideone.com/HdfYPe


549 :
お題:三捨四入せよ
負の丸め方向はどちらでも良い
https://ideone.com/Z6fTGh

550 :
>>549
これでいいの?なんか妙に簡単に感じるんだが。

Kotlin
https://paiza.io/projects/6DxRoEDJdya5lyflPo2P9Q

551 :
だれか
>>547
にも挑戦してくれ

552 :
解いてくださいお願いしますだろ

553 :
説いてくださいお願いします

554 :
やれるものならやってみろ。

などと挑発してみるとアホが大漁に釣れるかも知れない。

555 :
やれるものならやってみろ

556 :
問題は釣れるのがアホなのでものすごく頑張った揚げ句たいしたものができない率が非常に高いことにある。

557 :
やっとできた〜

558 :
https://ideone.com/7plTpl

559 :
やれるものならやってくださいお願いします

560 :
ライブラリを入れ込んだver
https://ideone.com/6WfH7S

561 :
これでこんなこともできる
https://chainflyer.bitflyer.jp/Address/1MayukoMuraokaXXXXXXXXXXXXXXX5f8QC

562 :
>>544
io !(?<_><.?>)(.)\k<_>! <- '\1'

563 :
>>549
d~-(n+1).round

564 :
>>562>>563
それなんてエロゲ、じゃない、なんて言語?

565 :
>>544
Perl
https://paiza.io/projects/dRg6gJ5qeJb_MNSQRS0agg

566 :
情報オリンピックの問題って組合せ最適化ばかりなのかなぁ?
ttps://www.ioi-jp.org/joi/problem_archive-light.html

567 :
VXU

568 :
567

569 :
568

570 :
鈴木貫太郎
灘中 中学入試 整数問題
https://youtu.be/okKan0C_--E

問1
4つの異なる数字、1, 3, 9, x から、
異なる数字を取り出して並べる、3桁の整数は24個あり、それらの平均値は555 である時、x は何の数字か?

問2
5桁の36の倍数で、2, 3, 5 のどれもが、
いずれかの桁に、1回以上現れる整数のうち、最小のものを求めよ

答え、問1 : 7、問2 : 13,572

571 :
瞬殺
灘中入れるかな?

572 :
灘中の問題は、以下の性質を使うものが多い

2 の倍数は、下1桁が偶数
4 の倍数は、下2桁が4の倍数

3 の倍数は、各桁の数字を足したものが、3の倍数
9 の倍数は、各桁の数字を足したものが、9の倍数

だから数字を因数分解して、これらに該当するかどうかで、問題を判別できる

573 :
いただきぃ!!
https://goo.gl/uAcy7u

574 :
>>570
問1 を、Ruby で作った。
問2 は、難しくて作れない

nums_3 = [1, 3, 9]
nums_4 = nums_3 + [0]

(0..9).each do |num|
next if nums_3.include? num # 含まれていれば

nums_4[-1] = num

sum = 0
nums_4.permutation(3) { |a, b, c| sum += (a*100 + b*10 + c) }

puts num if sum == 24 * 555 #=> 7
end

575 :
じゃあ問2を酷いコードで
>>570 Java
java.util.stream.IntStream.range(10000, 100000).filter(i -> i % 36 == 0).mapToObj(Integer::toString).filter(s -> s.matches("(?=.*2)(?=.*3)(?=.*5).*")).findFirst().ifPresent(System.out::println);

576 :
コンピュータを使ってブルートフォースで答えを探す方法はわかってもコンピュータを使わずに数学的に解く方法が思い浮かばない。
しかしそれを小学生が解いて入学するという現実。orz

577 :
>>570 Squeak/Pharo Smalltalk

"問1"
((0 to: 9) copyWithoutAll: #(1 3 9)) detect: [:n |
| set |
set := Set new.
'139', n asString combinations: 3 atATimeDo: [:comb |
comb permutationsDo: [:perm |
perm first ~= $0 ifTrue: [set add: (perm as: String) asInteger]
]
].
set size = 24 and: [set average = 555]
] "=> 7 "

"問2"
((10000 roundTo: 36) to: 99999 by: 36) detect: [:n | n asString includesAllOf: '235'] "=> 13572 "

578 :
このスレprologニキっていないの?
手続き型以外の解法見たい
あとJニキ最近見なくて寂しい

579 :
>>570
問1
4種の数字から作られる24個の数字の平均が555
→合計が1110になる12組の数字にまとめられる→どの桁も合計が10になる2組の数字の組合せで構成される
→1,3,9,xのうち1と9を除外した3と「足して10になる数」→x=7

問2
36の倍数→4の倍数かつ9の倍数
→5桁の数字は9の倍数なので各桁の数字の合計が9の倍数になる
→5桁の数字には「2,3,5」が少なくとも1つ以上含まれているので、この時点で各桁の数字の合計は10より多くなる。
→各桁の数字の合計は9ではないので、18とする。残り2桁の数字の合計は8。この中で一番小さな数が作れるのは1,7。
→「1,2,3,5,7」の組み合わせの内、下2桁が4の倍数で最も小さい数は13572となる。

かなり乱暴に書くとこんな感じで解けば良いのかな?
しかし、これをプログラムで表現しようとするのはかなり骨っぽい(数を1桁ずつ分解するのに余計な手間がかかりそう)。
それよりも総当たりで解いた方がコンピュータ的には手っ取り早い気がしますね。

580 :
>>579
最初の「合計が1110になる12組の数字にまとめられる」が何故なのかわからん。

581 :
>>580
作成される数字を順列とみなした時に
「ABCD ABDC ACBD ACDB ...」を逆順にした
「DCBA DCAB DBCA DBAC ...」という列を組み合わせたら…なんて考えてたんですが、後で見ると意味不明でした。申し訳ない。

問1について、それよりも単純な方法がありました。

xがどの桁で使用されてるかで場合分けし、それぞれを合計する
x不使用:139 193 319 391 913 931 :2886
xが1の桁:13x 19x 31x 39x 91x 93x :2860 + 6x
xが10の桁:1x3 1x9 3x1 3x9 9x1 9x3 :2626 + 60x
xが100の桁:x13 x19 x31 x39 x91 x93 :286 + 600x
上記をすべて合計:8658 + 666x
24個の数字の平均が555だから合計は 555*24=13320
8658+666x=13320
666x=4662 x=7

若干手続きはコンピュータ向けと言えなくもないですが、やはりプログラミングするには手間ですね。

582 :
問1
24=4! なので4個の数字はすべて異なる
24通りを並べると各桁1, 3, 9, x が同じ回数出現する
これらの平均が555なので
1, 3, 9, x の平均が5とわかる
1, 9の平均が5なので3, xの平均が5となる7が答え

問2
最小を求めるので10000の位が1になる数を考える
(考えて、なければ他を考える)
各桁の合計が9の倍数から1, 2, 3, 5, 7とわかる
この中で偶数は2だけなのでこれが1の位
1の位が4で割りきれないので10の位は奇数であれば4の倍数
つまり10の位が3, 5, 7のどれでも36の倍数になる
3, 5, 7を小さい順にならべて13572が答え

583 :
以上が東大数学科卒の考え方
両方で20秒くらい

584 :
問1
x = 111 * (24 * 5 - 6 * (1 + 3 + 9) ) / (6 * 111)
= 7
問2
5つの数を A, B, 2, 3, 5 とすると
A + B + (2 + 3 + 5) = 0 mod 9 <=> A + B + 1 = 0 mod 9
かつ末尾2桁が4の倍数になる
従って一番左の桁は1で確定し {A, B} = {1, 7}も確定
2が末尾に来ることは確定していてかつそのとき任意の並びで4の倍数になるため13572が題意を満たす数

以上が東大理学部物理学科卒の考え方
両方合わせて40秒くらい

585 :
やっぱ紙と鉛筆で解く問題だよね。
最初から解析的に解けない問題出して欲しい。

586 :
>>581
小学生が解く場合に途中で 8658+666x=13320 のような数学的表現で考えるのはありなのか?
回答者個人にそれができるかできないかの問題ではなく小学校が教えている範囲にそれが含まれるのかの問題ね。
もし含まれていないとしたら他の方法で解く事が可能という事になる。

587 :
>>584
「従って一番左の桁は1で確定し」
がわかりません

>>585
だよね

588 :
36の倍数は、4, 9 の倍数で、それらの特徴を利用できるかどうかだけ

捨て問題だろ。
考えたり解いたりすると、2問で10分使うから、落ちるだけ。
即座に無視しないといけない。
新パターンの問題は、時間を使わせるから無視しろっていう、受験テクニック

灘中高は、100%塾の生徒しか受からない。
灘用の受験技術だから、その授業を受けていないと受からない

文系が東大工学部に入る、受験技術のマンガ「ドラゴン桜」と同じ。
賢い者ではなく、塾代という貧富の格差で決まる

大型資格もそう。
TAC, 大原などに行ってないと受からない

貧富の格差、貧富の遺伝

589 :
>>588だと灘の問題全て捨て問題になりそう

590 :
>>587
ものすごくかみ砕いて言うと
A + B + 1 = 0 mod 9 (A, B ∈ {0, 1, ..., 9}) を満たす A, B に関して
任意のAに対して対応するBが少なくとも1つは存在することは自明なので
A = 1 として 1XX32 という数を考えればこの数は36の倍数でありかつ 2, 3, 5 を各桁に含む
(XXには A = 1 に対応する B の値の内の1つと 5 が入る)
解は10000以上1XX32以下の整数なので左端の桁は1であると確定する

591 :
えらい省略したねえ

592 :
>>570
問1のみ
Kotlin
https://paiza.io/projects/rG4rKSs27X473v0qxyicHQ
何も考えずに全パターン調べているだけ。

593 :
>>570
問2のみ
Kotlin
https://paiza.io/projects/RS3SPZeRhx0caTVXDHQmaw
こっちの方が簡単だったな。

594 :
>>570
Rubyで問1。

def odai_11_569_1(a_ary, a_avg)
(a_ary.size + 1) * (a_avg / 111) - a_ary.inject(:+)
end

w_ary = [1, 3, 9]
w_avg = 555
p odai_11_569_1(w_ary, w_avg)

結果:7

595 :
>>570
Rubyで問2。

def odai_11_569_2(a_ary, a_base, a_col)
a_ary.map!(&:to_s)
w = 10**(a_col - 1)
w = w / a_base - (w % a_base > 0 ? 0 : 1)
w *= a_base
loop do
w += a_base
next if (a_ary - w.to_s.split('')) != []
return w
end
end

a_ary = [2, 3, 5]
a_base = 36
a_col = 5
p odai_11_569_2(a_ary, a_base, a_col)

# 結果:13572

596 :
rubyならさくっとワンライナーで
p (10000-10000%-36).step(10**5,36).find{|i|(i.digits&[2,3,5])[2]}
#=> 13572

597 :
>>570
Rubyで、問2

str_ary = %w(2 3 5)

(10_000...100_000).select do |num|
next unless num % 36 == 0

# 2, 3, 5 をすべて含む
if str_ary.all? { |s| num.to_s.include? s }
puts num #=> 13,572
break
end
end

598 :
国際数学オリンピック
問3反パスカル的三角形
https://twitter.com/worapolketanond/status/1017612366840717312

599 :
そろそろ新しいお題を。
既出なら申し訳ない。

お題:
再帰・スタックを使用しないマージソートを実装し、整数型のデータn個の配列をソートするプログラムを作成しなさい。
データの個数は不定とし、特定の条件を満たす個数の配列にのみ有効なプログラムは不可とします。
データの内容はランダムとします。乱数の生成法はお任せします。
出来ればソート完了後に配列(の一部)を表示する、正しくソート出来たかチェックする処理を追加してみて下さい。

追加お題:
上記のマージソート処理の際、作業領域を元のデータの半分の量しか確保せずにソートを実行するプログラムを作成しなさい。

600 :
1から100までの数字から4つを取り出したそれぞれに番号を振る速い方法ありますか?
メモリもあまり使わずに

1 2 3 4 -> 1
1 2 3 5 -> 2
1 2 3 6 -> 3

96 97 98 99 -> 3921221
96 97 98 100 -> 3921222
96 97 99 100 -> 3921223
96 98 99 100 -> 3921224
97 98 99 100 -> 3921225

601 :
>>599
残念ながら余り良い問題じゃない希ガス

602 :
スタック不可だとスタック操作が隠蔽されてる高級言語はほぼ使用出来ない
無理やりCやC++でやるとしてもローカル変数や関数呼び出しを殆ど封印しなければならない
これを良い問題と見るか悪い問題と見るかは分からないが俺はやる気が出ない

603 :
>>600
組み合わせか

北大の湊 真一のZDD とか。
本も出てる

604 :
お題:Hello, World!を出力せよ。ただし出力系の関数を使ってはならない。

605 :
>>602

すみません。>599の「スタック」はデータ構造としての利用のみを想定していて、他関数呼び出しの禁止などは意図してませんでした。
問題文が不明瞭ですみません。

>>601
ご期待に添えず申し訳ない。他のお題を思いついたら、また出題させていただきます。

606 :
お題: マップの広さと部屋の個数及び部屋間の繋がりが与えられた時、ダンジョンを作成せよ
・ダンジョンは部屋と通路からなる
・部屋は少なくとも3x4の大きさを持つ
・通路の幅は1
・部屋同士は接しない
・マップ外に部屋や通路は無い
一応、想定としては標準出力に'#'と'.'で表示を考えてる
生成方法は自由だからゲーム的面白さのあるマップ作っても良い

607 :
解釈がいろいろあり過ぎて
コードに対して仕様の説明文が必要になるぞ

608 :
>>605
>>599 の問題はおもしろいし、お題として成立していると思います
・再帰を使用しないマージソートを実装
・作業領域を元のデータの半分の量しか確保せずにソートを実行する
で考えているところです

609 :
>>604
出力せよといいつつ、出力系は使うなとは、まるで一休さんのような

610 :
まて、関数は、とある
つまりはシステムコールを直につかうんだ!

611 :
>>604
じゃあC言語で。

#include <stdio.h>

int main()
{]

612 :
ごめん途中で書き込みボタン押してしまった。

613 :
>>604

#include <stdio.h>

int main()
{
 system("echo Hello, World!");
 return 0;
}

614 :
>>610
システムコールの内部は関数
だったりして

615 :
>>613
それ関数

616 :
>>610
クラスもありかも知れない。クラスの中にはメソッドがある。メソッドはメソッドであって関数ではない。
あるいは procedure でも良いのかも知れない。procedure は手続きであって関数ではない。
サブルーチンもありかも知れない。
昔のマイコン用のBASICでVRAMに直接 POKE で値を書き込んだりするのもありかも知れない。

もはや一休さん並のトンチであり言葉遊びである。

617 :
>>615
出力系の関数は一切使っていない。

618 :
関数を使わないとなると
int 21
とかじゃないの?

619 :
>>604
J
'Hello, World!'

REPL な処理系なら簡単

620 :
>>600
とりあえず出来たけどもっと簡単に変換する方法があるような気がする
https://ideone.com/EnmoNU

621 :
cat
Hello, World!

もはやプログラムですらない。

622 :
>>600
100この中から4個を選ぶことだから完全最小ハッシュ関数が使える

623 :
>>604
紙にペンでHello, World! と書く。

624 :
>>604
紙にペンでHello, World! と書く。

625 :
10 PRINT "Hello, World!"

626 :
「何々禁止で何々を書け」って類いの問題で面白くなることはあんましないな

627 :
>>600 Java
https://ideone.com/oI3bvA
完全最小ハッシュ関数でぐぐっちゃった

628 :
>>622
>>627
考え方分かりました
ありがとうございました

629 :
質問一回許すとなし崩しに宿題だらけになるぞ。警告はした。

630 :
これ宿題じゃないですよ
ここに書く前にコードも書いてたしもっと効率いい方法ここの人達なら知ってそうだと思ったから

631 :
>>600
1 2 3 4 -> 001002003004
97 98 99 100 -> 097098099100

632 :
>>630
よし、そのコードを貼るのだ

633 :
>>620のもっと効率悪い奴だよ
元は100C4じゃなくて28C4だったけど
int cc[4][32][32];
こんな二次元の配列使ってた

634 :
いいから貼れ

635 :
https://ideone.com/VFv36f
2年前に書いたやつで今は何やってるかよく分からないけど
>>620のは昨日元のこのコードを見ないで30分くらい考えて作った

636 :
それの何が不満?
何をどう改善したいのかわからないと

テーブル作成の速度?
テーブル検索の速度?
コードサイズ?
バイナリサイズ?
コードの分かりやすさや移植性?

637 :
何がってほぼ全てが不満だけど

638 :
ああ、
速度とメモリって書いてあったね

639 :
宿題スレでやれ

640 :
605、出題しておいて何だがこれめっちゃ難しいな
マップの大きさの制約があると通路引くのが難しすぎる

641 :
いちおう解けるのを自分で確認してから出してくれないと困る

642 :
>>640
>>607

643 :
入力と出力の例とかあると良いよね

644 :
>>608
で、出来てる?

645 :
>>644
一般に、再帰を非再帰に書き下すのは難しいのです…

646 :
お題
ポーランド記法による計算機を実装せよ
演算子は加算(+)と乗算(*)をサポートすること

* + 1 5 + 2 3
=> 30

* * * * 2 3 4 5 6
=> 720

647 :
ただし、スタックを使用してはならない

648 :
さらに、分数と複素数をサポートすること

649 :
まーた、〜を使わないで、か。
宿題か何かかな

650 :
>>646 Ruby 2.5.0
[
"* + 1 5 + 2 3",
"* * * * 2 3 4 5 6"
].each do |_exp|
exp = +-_exp
nil while exp.gsub!(/([^\d\s]+) +(\d+) +(\d+)/){$2.to_i.send($1, $3.to_i)}
puts '%s => %s' % [_exp, exp]
end
#=>
* + 1 5 + 2 3 => 30
* * * * 2 3 4 5 6 => 720

651 :
>>646
Kotlin で二つ作った。

Stack 使ったやつ。
https://paiza.io/projects/Qnrrux74abDRsr1kh77FNA

Stack 使わずに MutableList で 計算記号、数、数のパターンを計算できなくなるまで繰り返し計算するやつ。
enumも使用。
https://paiza.io/projects/rHKDVtB2yjTvymuFLlBL7g

652 :
お題

N個の整数(a_1, a_2, ..., a_n, ..., a_N)と*+/()を使った数式の値が、ある整数aにもっとも近い数式とその値(実数)を出力せよ

引き算はなし
a_n = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

653 :
うんざり

654 :
>>607
>>606のは要はローグライクの部屋を作れってことだろ

出題者の説明不足
画像の1枚でも張れば見て分かる

ttps://cdn-ak.f.st-hatena.com/images/fotolife/g/gaou2/20170905/20170905111314.png

655 :
これ見た目では普通だけどかなり横に長い部屋なんだよな

656 :
部屋と通路以外の場所も存在するのかよ

657 :
>>655
今だと全角文字で作ればいいかな。絵文字もまじえて。

658 :
>>598 Java
https://ideone.com/VUgSXO
1行〜5行までしか答え出ないな

うちの環境で
9行を探索するのに4.6秒
10行を探索するのに61.6秒
2018行はあかんww

659 :
いやさすがに数学板でやれや。
国際数学オリンピックて自分で言うてるやんけ

660 :
数学とか使わずに総当たりでやってるのに数学板に行けとな

661 :
いやこれは総当たりでは計算量的に無理だろ
コードは書けるだろうけど
存在することを帰納法で証明するしかないから数学板の問題だ

662 :
まーた数学コンプレックスが暴れてるのか
数オリに出るくらいの賢さがないから計算機の力も借りて解くっていう方向性は別にスレチじゃないだろ

663 :
ここでレスリングの話しだして苦言を呈されると「まーたレスリングコンプレックスが暴れてるのか」
極端に言うとこういうこと。
レスリング板、数学板があるだろ。
わざわざここでオナニーしたいのは専門以外の板でマウント取りたいのかな?
そんなひねくれた根性だから現実世界でミジメな生活なんだよ。

664 :
早速暴れてて草
正攻法で数オリの問題を解く話を延々してたんならうざいけど
飽くまで計算機使って解いてみようぜって言ってる人にまでその理屈が当てはまるわけないだろ
それとも数学だけじゃなくて論理的思考もできないタイプか?それなら納得だわw

665 :
数学で解ける問題をわざわざコンピューターでムダな解き方するの??
突き詰めていくと数学で出した解法そのまま引き写すだけになるのが分かりきってるのに。

666 :
だからわざわざ「数オリに出るくらいの賢さがないから」って言ってるだろ日本語読めねえのかよ
そりゃ灘の入試レベルならその通りだろうけど数オリで正解率1割切ってたような問題なんだから計算機使ったアプローチしてみるのもプログラミングのお題としては面白いだろ
それともなんだ、円周率の計算だってペンと紙でできるんだから無駄だっていうのか?w
そんな極論言うレベルの頭だから数学もできないんだよw

667 :
そういう無駄に一般化した話も結構だけど、
個別具体的な話として>>598は計算機を併用することに効果が無いから数学の問題だと言ってるんだよ。

2018を解けるほど効率化できるなら既に人力で解けているだろうからね。

668 :
それは総当たり以外にうまい方法が思い浮かばないから言えるだけでしょうよ。
あと素数判定アルゴリズムなんか考えればわかるけど、効率化できることと人力で解けることに相関はないぞ。
少なくともスレチではないと思うよ。

669 :
部外者だが

嫌なら回答しなきゃいいだけなのに
何文句言ってるの?
って感じ

670 :
そんなことより野球のはなししようぜ!嫌なら無視すりゃいいだけ。

671 :
さすがにそれはスレチ

672 :
アプローチ以前に
>>598の問題って存在するの
それとも無いの

673 :
作るのは無理な気がするがよーわからん

一番大きい数値 1+2+…2018 = 2037171 は差の絶対値で作れないので最下段確定
一番大きい数値を出来るだけ上段に伝搬させるために小さい数値(1~2017)と組み合わせていっても最上段に残るのは 2018
→ 2019 以上と組み合わせると 2017 未満の数値がダブる
最下段で 2037171 と 1 を組み合わせた場合、 2037169 も最下段に設置する必要がある
2037169 は 1~2018 の大部分と組み合わせられないので上のほうまで伝搬できずにアウト

674 :
その長々とした理屈は2018が7でも6でも同様のことが言えるよね
そして7や6には解がある

675 :
>>674
適当に作ったプログラム(>>658)じゃ5までしか見つかっとらんのだけど、6や7にも解あるんか

676 :
ないのかごめん
でも5でも同じことは言えるような

677 :
5以下の場合は数字が足りなくなる前に最大値からの流れに合流出来てるんじゃね?

678 :
>>675
>>658じゃなくてCで書いたけど6〜40までは解無し

679 :
数オリ経験者、東大数学科卒だけど
今度挑戦してみるか

680 :
お題
非負整数nが与えられるので、以下に示すような六角形状の螺旋を描画せよ
https://ideone.com/MmH3N6

681 :
>>680

質問です。
n>100の場合はズレが生じてくると思いますが、その時はどうしますか?
それともn≦99で範囲を絞ってもよろしいんでしょうか?

まぁ、私が作れるかどうか分からないんですがorz

682 :
ご自由にどうぞ

683 :
難しそうだが良いお題だな
こういうお題を考えられるようになりたい

684 :
まずは数学から入るか

中心つき六角数 - Wikipedia
ttps://ja.wikipedia.org/wiki/%E4%B8%AD%E5%BF%83%E3%81%A4%E3%81%8D%E5%85%AD%E8%A7%92%E6%95%B0

685 :
>>681
nの大きさに合わせて-の数を決めれば、歪にならないと思うよ。

686 :
こんな資料がありました
https://ja.scribd.com/document/383589785/toads-pdf
http://w3.math.sinica.edu.tw/bulletin/bulletin_old/d51/5120.pdf

687 :
>>686
へ〜やっぱ n = 5 までしかないんだな
後でちゃんと読んどくわ

688 :
出題者は自分で書けるのを一度確認してから出題してほしいわ

689 :
お題:パソコンのCPU温度を表示せよ

690 :
ちょっと待ってね。温度計持ってくるから。

691 :
>>689 BF
+>+<-][+[->+[+>-<]<]<+[>+[.>]-]-]

692 :
>>689
こうすると分かるんだって。
https://qiita.com/koara-local/items/1fac13704123717f5cc8
但し Linux 。

693 :
>>689
awk
Linux 用

awk '{printf "%.3f℃n", $1 / 1000}' /sys/class/thermal/thermal_zone0/temp

実行例

56.000℃

694 :
あれ?\n が抜けた。
これね。

awk '{printf "%.3f℃\n", $1 / 1000}' /sys/class/thermal/thermal_zone0/temp

695 :
>>680 C
https://ideone.com/Xpz0s9

696 :
8888

697 :
鈴木貫太郎
灘中 中学入試問題シリーズ 整数問題
https://youtu.be/98U2qVDQltc

6桁の整数、5AB,C15 が999 の倍数である時、ABC を求めよ

答え
A=8, B=4, C=4

698 :
数学板でやれ

699 :
>>697 C
https://ideone.com/fQBfz1

700 :
お題:与えられた正の整数nを2進数〜16進数に変換して表示する。
11進数以降の10以上を表す文字はABCDEFを使用。
(10=A, 11=B, 12=C, 13=D, 14=E, 15=F)
例:12進数の11 ---> B

出力例:
n=123456
base(2) ---> 11110001001000000
base(3) ---> 20021100110
base(4) ---> 132021000
base(5) ---> 12422311
base(6) ---> 2351320
base(7) ---> 1022634
base(8) ---> 361100
base(9) ---> 207313
base(10) ---> 123456
base(11) ---> 84833
base(12) ---> 5B540
base(13) ---> 44268
base(14) ---> 32DC4
base(15) ---> 268A6
base(16) ---> 1E240

701 :
>>700
http://mevius.2ch.sc/test/read.cgi/tech/1480579110/909
https://mevius.2ch.sc/test/read.cgi/tech/1434079972/29

702 :
>>697
500015 + <ABC00> = 0 mod 999
<=> 4151 + <ABC> = 0 mod 999
<=> 4151 + <ABC> = 999*5
<=> <ABC> = 844

>>700 Ruby
#!ruby -p
b, n = $_.scan(/\d+/).map &:to_i
puts n.to_s(b).upcase
#=>
12進数の11
B
2進数の123456
11110001001000000
3進数の123456
20021100110
16進数の123456
1E240

703 :
>>697
何も考えてないPerlのワンライナー

perl -e 'for(0..999){$n=sprintf"5%03d15",$_;if($n%999==0){print"$n\n"}}'
584415

704 :
>>700
Linux等で動くGNUのbcコマンド
プログラムをファイルに入れておいてbcの引数で指定し、変換させたい数値は標準入力から読ませる。

ibase = 10
n = read()
for (i = 2; i <= 16; i++) {
obase = 10
print "base(", i, ") --> "
obase = i
print n, "\n"
}

705 :
>>700
Kotlin
https://paiza.io/projects/DLXMRKXWtRvwOyxd6wDtRw

706 :
>>700
C
https://ideone.com/5bUk4j

707 :
>>701
既出でしたか 失礼しました
では追加でもう1つ

お題:
時間を表わす文字列(hh:mm:ss形式の8文字)の秒数を求める
最上位の時間だけは99時間を超えた場合拡張される
例:123時間45分6秒 ---> 123:45:06

出力例:
01:23:45 = 5025 sec
333:33:33 = 1200813 sec

出題者の回答例:C言語 https://ideone.com/pnrcQ6

708 :
>>700
C言語 (再帰処理)
https://paiza.io/projects/-8zTD_hGtIvLskFVO3sCZw

709 :
>>707
Perl

https://paiza.io/projects/g2tBzJeNk0M_FJZMylBjuA

ワンライナーにもできるが、今回はこれで。

710 :
>>707
bash

https://paiza.io/projects/_3ZfQe1fXiGUBKS_z3JrJg

711 :
>>707 Ruby ゴルフ気分で
#!ruby -palF:
$_='%d sec'%(0..2).map{|i|$F[~i].to_i*60**i}.sum

# input
01:23:45
333:33:33

# output
5025 sec
1200813 sec

712 :
>>707
bash (かぶった)
https://paiza.io/projects/ESODDaszatdKxnhAzHsFWA

713 :
>>712
あ、そうか。その方が簡単だな。

714 :
お題:10兆までの素数のリストを作ってみませんか?
https://tech.nikkeibp.co.jp/it/article/Watcher/20100519/348242/

条件:既存のライブラリ、モジュール、外部コマンド等を利用するのは不可
すべて自分で記述すること
int64_t, uint64_t の使用は許可する

715 :
Ruby では百万までで、処理に数秒掛かって、78,498個の素数があった

class PrimeNumber # 素数
def initialize (to = 20)
@to = to
@prime_numbers = []
end

def add_table (n)
limit = Math.sqrt(n).ceil

@prime_numbers.each do |prime_num|
# 割り切れたら、素数ではない
return if n % prime_num == 0
# sqrt より大きいなら、確かめずとも素数である
break if limit < prime_num
end
@prime_numbers.push n # 割り切れない
end

def print
(2..@to).each do |n|
add_table n
end
puts @prime_numbers.length
end
end

716 :
>>714
perl

一応これで理屈の上ではできるとは思うんだが、477577まで行ったところでアホらしくなって止めたw

#!/usr/bin/perl

use strict;
use warnings;

my @pn = (2);

my $n = 1;

print "$n: $pn[0]\n";

$n++;

LOOP:
for (my $i = 3; $i <= 10000000000000; $i += 2) {
 for (@pn) {
  next LOOP unless ($i % $_);
 }
 push(@pn, $i);
 print "$n: $i\n";
 $n++;
}

717 :
>>714 Ruby
10兆なら改良されたAtkinの篩を使ってガシガシやるしかないだろう
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.192.4926&rep=rep1&type=pdf

sup = 10**7
primes = [2, 3]
5.step(sup, 6){|i|
2.times{
primes << i if primes.none?{|pr| break true if pr*pr > i; i % pr == 0}
i += 2
}
}
primes.pop if primes[-1] > sup
p primes.size #=> 664579

718 :
>>714
昔やった
アセンブラ & AVX & マルチスレッド
探してみる

719 :
みつかりました
そんなに昔じゃなかった
2年半前
41兆くらいまで求めてます

マルチスレッドではありませんでした
処理内容はよく覚えていません

素数表作成
ビットパターン作成
ふるい

のようなコメントがあります

105単位でなにかやってます

720 :
だんだん思い出してきました
6n+1, 6n+5 に対応するビット列を保持
小さな素数の倍数はマスクを作ってAVX命令でANDしていって
大きな素数の倍数はp(210n+48個の値) にしぼって
ビット命令でひたすらふるう感じ

キャッシュサイズを考えて小さなバッファでやってます

721 :
いいからコード貼れや

722 :
お題:
ロト6で申込数字のいずれかが必ず5等以上に当選する
最小の申込数字の組み合わせを作ってください

ロト6は01〜43の数字から異なる数字6個を順番不問で選び
申込数字6個のうち3個以上が本数字と一致すれば5等以上に当選となります

723 :
>>722
・5等の当選条件を満たしている
・5等以上のいずれかの当選条件を満たしている
この2つは同値なの?

724 :
>>723
それを聞いてどうするの?

725 :
>>724
1〜5等に該当するならば必ず当選番号と同じ数字が少なくとも3つ入っているということがはっきりしない限り解けないでしょ

726 :
ごめん
申込数字6個のうち3個以上が本数字と一致すれば5等以上に当選となります

申込数字6個のうち3個以上が本数字と一致すれば5等に当選となります
と読み間違えてたわ

727 :
>>723>>725の質問内容が違う件

728 :
>>727
同値だよ

729 :
15万個くらいの数字を吐き出して終わり?

730 :
>>728
>>723>>722とは無関係だが
>>725は(>>722の解釈次第では)無関係ではない

731 :
>>725
3個以上一致 <===> 5等以上に当選
3個以上一致 ====> 5等以上に当選
のどちらかをたずねたのかと思った

732 :
>>731
そもそもこっちが>>723>>725で「申込数字6個のうち3個ちょうど本数字と一致すれば5等に当選」って誤解してたのが始まりなんだ
わけわかんないこと言ってごめんね

733 :
>>707 Squeak Smalltalk

('01:23:45' subStrings: ':') reversed polynomialEval: 60 "=> 5025 "
('333:33:33' subStrings: ':') reversed polynomialEval: 60 "=> 1200813 "


Pharo Smalltalk

(('01:23:45' substrings: ':') collect: #asInteger) reversed polynomialEval: 60 "=> 5025 "
(('333:33:33' substrings: ':') collect: #asInteger) reversed polynomialEval: 60 "=> 1200813 "

734 :
>>714 Squeak/Pharo Smalltalk で 100億まで

| count |
count := 0.
Integer primesUpTo: 1e10 do: [:prime | count := count + 1].
count '=> 455052511 '

組み込みだけど、書くとしても同じアルゴリズムで書くと思うので…

https://ideone.com/zKMZYx

735 :
>>722 C++
https://ideone.com/gCsPec

コンビネーション使う方法と、確率DPの二通りでやってみた。

(ちなみに5個当り222本は 6本が2等で、216本が3等)

※確率、期待値系は苦手だ

736 :
お題:ローカルホストの一覧を出力しなさい

737 :
>>735
>>722って、
・抽選される6個の数字が43C6通りのどの組み合わせでも5等以上が当たるようにくじを買う。
・くじの購入数はできるだけ少なくなるようにする。
ってことじゃないのん?

738 :
それ以外にどんな解釈が?

739 :
>>737
完全に恥ずかしい誤読しました。

740 :
>>736
いいのかこんなんで?

cd /etc
grep localhost hosts

741 :
>> 699 Ruby
実数、逆関数
https://ideone.com/lflSc0

742 :
>>736
訂正
お題:LANに繋がっているホストの一覧を出力しなさい

743 :
>>742
Linux 等の UNIX 系OSで

ping -b ブロードキャストアドレス

とやると同じセグメントに繋がっているやつは ICMP ECHO を返して来て IP アドレスが分かるかも知れない。
但しファイヤーウォールの設定で返さないかも知れない。また他のセグメントにはパケット送らないのでわからない。

744 :
あ、ごめん。これは IPv4 限定の話かも知れない。

745 :
身長と体重がいくつか与えられるのでBMIを求めなさい
なお身長と体重は1以上1000未満の整数とする
出力精度は小数第三位を四捨五入
各言語で一番短くかけた人が勝ち

例 ruby
while gets

end

# input
150 50
160 55
180 120

# output

746 :
ミスった。

単位は身長cm, 体重kg

例 ruby
while gets
 h, w = $_.split.map &:to_i
 puts '%.2f' % (1e4 * w / h**2)
end

# input
150 50
160 55
180 120
150 225

# output
22.22
21.48
37.04
100.00

747 :
https://ideone.com/lsWdqo

748 :
>>747
67Bまで縮めてみた
C
https://ideone.com/ivxfS2

749 :
>>745
Perl
https://paiza.io/projects/4DM4_8fx_EiOXO4D3aOV4A

普通ならダブルクォーテーション使いそうな箇所で qq() 使ってクォートしている理由は今Androidのタブレット使っててうまく入力出来なかったため。

750 :
>>746
Python3で66バイト
https://ideone.com/qWiKey

751 :
鈴木貫太郎
灘中
https://youtu.be/BnS7vMsVV2s

6桁の整数、ABCDEF の一番上の位のAを、
一の位へ移動した数、BCDEFA が、元の数の3倍になるとき、
この条件を満たす、元の数をすべて(2つ)答えよ

ヒント。x = BCDEF とおいて考える

答え、142857, 285714

752 :
>>751
n/7 循環列問題ですか…

753 :
>>745
Ruby 43 bytes
#!ruby -pa
$_='%.2f'%eval('1e4/'+$F*'**2*')

>>751
3 * ABCDEF = BCDEFA ∧ A != 0
<=> 42857 * A = BCDEF ∧ A != 0
<=> 42857 * A = BCDEF ∧ A = 1, 2
<=> ABCDEF = 142857, 285714

754 :
>>751 C(ただの力技)
https://ideone.com/MljBH1

755 :
お題:
1.BINGOカードを作る
2.BINGO抽選機を作る

ここで使われるビンゴカードは5x5のマス目に1から75までの数字が
ランダムに配置されており、数字が見つけやすいように左の列から
B列(1〜15), I列(16〜30), N列(31〜45), G列(46〜60), O列(61〜75)が
配置された一般的によく使われるタイプ。
5x5のマスの中央はFree(すでに開いた状態)。

出力例:https://ideone.com/R6eADP
(この形に従う必要はないです)

回答例(C言語):
 カード作成 https://ideone.com/aJBJ9v
 抽選機 https://ideone.com/NuIRYm

756 :
>>751
Kotlin
https://paiza.io/projects/BFd9v2qeKaNcdssTQuj5Jw

これも力業だな。ただループして調べているだけ。
尚、最上位桁が0の場合も含めると0も該当する値になる。

757 :
>>755
Kotlin
カード作成 https://paiza.io/projects/YeZEal6Ke6l3goeaDt9JuQ
抽選機 https://paiza.io/projects/j-F4qhKHa_nNTCBEtFbk_w

758 :
>>755
Perl
カード生成 https://ideone.com/82oHLD
抽選機 https://ideone.com/ZICMOi

759 :
お題:【構造のあるテキストの処理】各項目の内容をそれぞれソートして元のテキストに埋め込め。
====== 標準入力 ==========
* Fruit
apple
banana
orange
banana

* Animal
dog
cat
penguin

====== 標準出力 ==========
* Fruit
apple
banana
orange

* Animal
cat
dog
penguin

条件:ソートには外部コマンドを用いること。

760 :
ソートに外部コマンドを使うのは、テキストの処理を取り替える拡張を想定しています。
例えば sort -u コマンドを tr '[a-z]' '[A-Z]' に置き換えて
* Fruit
APPLE
のようにできるようにしたい。

UNIXプログラミング質問スレにて、
このような処理はシェルスクリプトには荷が重く Powershell や Ruby が向いている、みたいなことを伺いました。
ぜひ回答を参考にしたいです。

761 :
>>759 Ruby

ext_cmd = 'sort -u'

ary = $<.read.scan(/\*.*?\n(?:(?=\n)|\z)/m)
str = ary.map.with_index do |s, i|
  temp_fname = "temp#{i}"
  File.write(temp_fname, s[/\n\K.*/m])
  heading = s[/\A.*/]
  execed = `#{ext_cmd} #{temp_fname}`
  File.delete(temp_fname)
  [heading, execed] * $/
end

puts str * $/

762 :
catを使うように修正
catのヒアドキュメントさえ使えれば一時ファイル作らなくて済むんだけど

ext_cmd = 'tr a-z A-Z'

ary = $<.read.scan(/\*.*?\n(?:(?=\n)|\z)/m)
str = ary.map.with_index do |s, i|
  temp_fname = "temp#{i}"
  File.write(temp_fname, s[/\n\K.*/m])
  heading = s[/\A.*/]
  execed = `cat #{temp_fname}|#{ext_cmd}`
  File.delete(temp_fname)
  [heading, execed] * $/
end

puts str * $/

763 :
>>759
Perl
https://paiza.io/projects/8vYRslCsu29ZvqFXGkZC7A

項目の区切りは連続した2つの改行になってます。

764 :
>>759 zsh
setopt rcquotes; sed -n '/^*/h; /^*/!{x;p;x;p;}' | paste - - \
| awk -F' ' -v OFS=' ' '$2 { print $1,$2 } ! $2 { printf "%c",0 }' \
| xargs -0 -n 1 -I@ -- zsh -c 'echo ''@'' | tee >(read -e | cut -f 1) | sed ''$d;'' | cut -f 2 | sort -u ;echo'

null区切りでチャンク分け。構造がもっと複雑になるとこの方針では対応できない。

765 :
>>759
bash
https://paiza.io/projects/Xq6KyZBO0dqynoJNUYhlEg

766 :
単純に、別々のファイルに、分割すれば良いのでは?

* Fruit のファイル
* Animal のファイル

各ファイルを、sort, unique する

767 :
一旦、別々のファイルにしたなら、PowerShell で、

cat .\test.txt | sort | gu

gu は、Get-Unique のエイリアス。
漏れのPowerShell では、uniq のエイリアスは使えない

768 :
このスレでbashが多いのは何故?

769 :
今見返したらそんなに多くなかった‥

770 :
>>768
Linuxのディストリビューションでは最初からインストールされてるのがよくあってある程度有名で、sh互換でshしか知らなくても書けるからではないかな。
それとWebの実行環境があるというのも理由かも。こういう所で公開するのには都合が良い。

771 :
>>770
そうなんですね!
みんなの回答見てると正規表現や少ないコードや難しい表現でコーディングできてて関心します‥
自分にはとても到達出来ない‥

772 :
>>759 zsh
setopt rcquotes; sed -E -e 's:^(\* .*):{ echo ''\1''; sort -u; echo } << *:' -e 's:^$:*:' | zsh
xargsの区切り文字の辛さからは開放されたが、echo ''\1'' がイマイチだ。

なるほど、構造のあるデータはむしろファイル階層として表現したほうが自然か…

773 :
>>759 Vim
$ cat odai-pt11-758.input | vim -es '+:g /\%(^\*.*\n\)\@<=/,/[ \t\n]*\%(\n\*.*\|\%$\)/ !sort | tr a-z A-Z | nl' '+%p' '+:q!' /dev/stdin
* Fruit
1 APPLE
2 BANANA
3 BANANA
4 ORANGE

* Animal
1 CAT
2 DOG
3 PENGUIN
$

774 :
64ビットWindows10 なら、WSL で、Ubuntu を入れると、
bash, vim, Python は最初から入っている

WindowsのExplorer では、BOMなしUTF-8 のファイルは検索できないから、
WSL でLinux側から、grep で検索している

シェルスクリプトの欠点は、パイプラインがテキスト渡しになる。
オブジェクトの型が無くなって、すべて文字列になる

一方、PowerShell ではオブジェクト渡しだから、オブジェクトの構造・型が維持できる

>>759-760
外部コマンドを切り替えるという抽象的な処理を、処理間にはさむのは難しい。
すべての処理の冒頭か最後で、一括でフィルターする方がバグらない

775 :
>>774
なるほど…
Powershellでの完全な回答例を見せていただけませんか?
標準入力からファイルに落として出力に吐くまで。オブジェクト渡しの雰囲気を感じたいです。

776 :
Set-PSDebug -Strict # 変数宣言を強制する

$file = ( cat in.txt ) # 入力ファイル
$dat_basenames = @() # 拡張子なしのファイル名の配列

foreach ( $line in $file ) { # 各行
if( $line.Length -eq 0 ){ continue } # 空行は処理しない

if ( $line.Substring( 0, 1 ) -eq '*' ) { # 1文字目が、* なら
$fname = $line.Substring( 2 )
$dat_basenames += $fname # 追加
$fname += '.dat' # 拡張子つき
} else {
Add-Content $fname $line # 追記
}
}

foreach ( $dbname in $dat_basenames ) { # 各 .dat ファイル
$fname = $dbname + '.dat' # 拡張子つき
$str = "* ${dbname}`r`n"
$tmp = cat $fname | sort | gu # sort, unique
$str += ( $tmp -join "`r`n" ) # 改行区切り
echo $str
}

PowerShell で作った。
cd で、作業フォルダへ移動してから実行して

入力ファイル、in.txt から、各ファイルへ分割する。
分割後のファイル名を、Fruit.dat, Animal.dat として、各ファイルを処理した

777 :
点が10個一直線に並んでおり、各点が他の点との右方向の距離をいくつか知っている時、最も左にある点を求めよ

最も左にある点が求められない時はあと何の情報があれば求められるのかを最低個数で列挙すること

例1
a,b,cの点がある。
a点はb点が30右にあることを知っている。
b点は何も知らない。
c点はb点が-40右にあることをしっている。
結果
最も左にある点はa点

例2
a,b,c,dの点がある。
a点はb点が30右にあることを知っている。
b点は何も知らない
c点はd点が20右にあることを知っている。
d点は何も知らない。
結果
求められない。必要な情報は
a点からc点までの距離

778 :
>>777
実際に自分で書いてみて、求められたら解答例を提示できる?

779 :
「知っている」の主語が点に見えるけど
そうじゃないよね?

なんでそういう文にしたの?

780 :
連結リストを使って、出来上がったグラフが連結なら求められる
つまり、出来上がったグラフが二つ三つそれ以上に分かれている非連結グラフになってると、距離は分からない

……直感的には多分こうだが、何かしらの証明は必要
「連結グラフだが距離が分からない」反例があればいい

781 :
>>777
点が10個あるなら例1,2両方とも判断不能。どっちもあと最低7個必要
しかも直線がRなのかR∪∞∪-∞なのかで解が変わるから提示しろ
あと出力はともかくデータの与えられ方くらい提示しろ

782 :
text = File.read 'in.txt' # 入力ファイル

header = ""
str_hash = { }
result = [ ]

def sort_string ( head, hash, res )
res.push head
Hash[ hash.sort ].each_key { |key| res.push key } # sort
hash.clear # 空にする
end

text.each_line do |line| # 各行
line.chomp! # 末尾の改行を削除する
next if line.empty? # 空文字は処理しない

if line.start_with? '*' # 先頭文字が、* なら
sort_string( header, str_hash, result ) unless str_hash.empty? # 空でなければ
header = line
else
str_hash[ line ] = true
end
end

sort_string( header, str_hash, result )
puts result

Ruby で作った。
PowerShell よりは断然、作りやすい。
ただ、sort_string( ) を2か所で呼ぶのが、ダサイ

783 :
お題
将棋の初期状態の駒40枚を
利き筋に他の駒がないように配置する

784 :
1000垓通り表示しろとでも?

785 :
明記されてない条件は好きにしていいのがこのスレのルールですよ

786 :
お題を出す前に出題者は自分の解答を(解くことが可能かの確認も兼ね)作っておくのもルールだ
適切な入出力例や問題文にあるべき条件が抜けてるっていうのはそれをやってない証拠

787 :
>>783
有名な作品がいくつかあるね
全て同じ方向を向いたヤツも

>>784
全ての組み合わせを数えた人がいるの?

788 :
トランプの配置についてのアルゴリズムを考えてます。
トランプの横幅をX
トランプの高さをYとし
並べるトランプは偶数枚
全てのトランプを配置した時の全体を、トランプ配置と呼ぶとして
トランプ配置の横幅と縦幅の割合を、おおよそX:Yとしたい

この場合、アルゴリズムはどう考えたらいいでしょうか?

789 :
ゴリ押しの総当たり

並べる枚数横にx縦にyが無尽蔵に大きくなれば比率に近づく
並べるトランプの上限が決まって無くて偶数枚だけが条件なら延々と並べる枚数を増やせばいい
一兆枚くらい並べれば比率はX/Yに近づく
1000000000億兆枚くらいのトランプを使えば横幅X高さYなんて充分に蟲出来るから全体の割合を調整するのは枚数が多ければ多いほどラク
10那由多ほど並べれば、本当にカードは点くらいなもので、縦横比率はx、yの枚数だけで決まる

790 :
>>788
おおよそとかいまいちよくわからん
例を示して

791 :
>>789
バカなの?
> 並べるトランプの上限が決まって無くて偶数枚だけが条件
なら、縦横2枚ずつ(計4枚)並べればいいだけ

792 :
n枚をnX nYの長方形の対角線上に斜めにならべれば
X:Yになるけど

問題あってる?

793 :
>>788
┌─┐
│ ?│
└─┘
これを偶数枚並べて縦横比同じにするなら
こうだよね

┌─┬─┐
│ ?│ ?│
├─┼─┤
│ ?│ ?│
└─┴─┘
アルゴリズムもクソもないように思うのだが?
問題の書き方間違ってない?

794 :
さすがに、
枚数は外から与えられるのでは?

795 :
枚数nに対して p * q = n を満たす正の整数 p, q の内 |p - q| / |p^2 + q^2| が最小になる組み合わせを求めるだけでしょ?

796 :
https://mevius.2ch.sc/test/read.cgi/tech/1480579110/981
に引き続いて、現に困ってしまった問題を出題

windows コマンドラインの xcopy コマンドを実装せよ
コマンドラインから「xcopy パス1 パス2」 と入力すると
パス1 以下にあるファイルをすべてパス2以下にコピーするようにせよ
ディレクトリについては、再帰的にコピーせよ

・現実の xcopy コマンドには色々なオプションがあるが、それは実装しなくてもよい
・読み込み対象のファイルの属性については考慮しなくてよい、読み込めるファイルのみ所定のパスにコピーできればそれでよい
・その他、コピーに問題のある状態が発生したときには、標準エラー出力にエラー内容を表示すればそれでいい

Windows Update の度にPCが激遅になるのに堪えかねて、C ドライブを SSD に換えることにしました。OS は再度インストールしなおすつもりです。
現在の C ドライブの内容は別途コピーしておいて、困ったときには参照できるようにしたいと思いました。
ところが、「xcopy c: x:/tmp」とすると、「メモリーが足りなくなった」といって途中で止まるのです…困りました…

797 :
>>796
条件を追加します
ハードリンクやシンボリックリンクは考えなくともよい
xcopy パス1 パス2
のパス2 がパス1 の下にある場合、実装がまずいと永遠にコピーし続ける困ったことになるが、それも考慮しなくてもよい
(今回やりたいことは、「xcopy c: x:/tmp」であるので、これが問題なく動けばそれでよい…)

798 :
お金くれたら書くよ

799 :
>>798
ビットコインではいかがでしょう?

800 :
>>796
https://qiita.com/himrox/items/3dc7dec2c0e584a78e3d
xcopy メモリで検索したらこんなページ出たがこれじゃあかんと?

801 :
>>796
Windowsならエクスプローラ使ってただコピーするのでは何か不都合があるのか?

まあ、お題としてそういうのなしで作れというのはアリだが、なんとなくWindowsの場合はエクスプローラが使っているのと同じライブラリ関数を一回呼び出すだけで終わってしまいそうな気がしてならない。

802 :
xcopy ではなく、robocopy を使えば?

803 :
>>793
他の人も勘違いしてるけど、横縦比をx:yにする問題だよ。おおよそらしいけど。

804 :
>>803
問題を読んでみな

805 :
失礼しました…

806 :
>>803
トランプの横幅がYで高さがXでしょ?
で、偶数枚並べてX:Yにするんでしょ?
4枚でなるじゃん。およそどころかぴったりX:Yに。

807 :
ごめん。逆か。まあしかしわかるよね。

808 :
>>796-797
https://mevius.2ch.sc/test/read.cgi/tech/1434079972/52

>>800
有用な情報ありがとうございます
なるほど、256バイト以上のパスは受け付けない、ですか…
MSDN https://msdn.microsoft.com/ja-jp/library/cc429198.aspx
なんかをみると、「この関数の Unicode 版を呼び出し、パスの前に "\\?\" という接頭辞を追加してください。」と書いてありますね
でも、C++ でユニコードバージョンに対応させるってどうするのだろう?#define UNICODE だけではダメみたいだし…

809 :
>>808
https://qiita.com/jugemjugemu/items/4db1dfd3d2737d3979df
CreateFileW

810 :
>>808
そろそろ適切なスレに移動したら?

811 :
>>810
>適切なスレ
って、あなたはどこを想定しているのですか?

812 :
スレタイも読めないのかこいつは・・・

813 :
>>806
流石に与えられた枚数は全て使うだろ
アスペかよw

814 :
>>813
与えられると何処に書いてある?

815 :
とりあえず>>788はちゃんと問題書くか取り下げるかしろよ…

816 :
>>814
近似値も想定している文意から汲めないならアスペ

817 :
>>816
とりあえずお前の解釈を書いてみな

818 :
>>817
ぱっと見て
カードの数nとカードの縦と横の長さx, yが与えられたときに
総てのカードを並べて作った矩形の縦と横の長さをX, Yとして
|X/Y - x/y|が最小になるような(X, Y)を求める問題かと思ったんだけど
というか>>788は言葉足らず過ぎるしアスペ云々は言い過ぎだったわすまん

819 :
n枚を矩形になるように並べる
なんてことは書いてないけど

あと
『|X/Y - x/y| が最小』
は数学的センスが無い
x,yを入れ替えても値が変わらない誤差の定義にしたい

820 :
>>819
矩形じゃないと縦幅と横幅が定義できないからそこはいいんでない?
>『|X/Y - x/y| が最小』は数学的センスが無い
はその通りだね
m := min{x, y}, M := max{x, y}, λ_x = X, λ_y = Y として
として |m/M - λ_m/λ_M|の最小値を求めるべきだね

821 :
>>820 前半
どんな形に並べても縦と横の方向が決まっていれば縦幅と横幅はある

>>820 後半
さらにセンスが無い

822 :
>>821
『どんな形に並べても縦と横の方向が決まっていれば縦幅と横幅はある』
これは偽
少しは検討してから書き込んだらどうなんだ

後半が理解できないなら「テンソル」で調べてね

823 :
横方向をx軸、縦方向をy軸としたx, y平面上に
トランプを並べるとする
有限サイズ(>0)のトランプを有限枚(>0)並べるので
トランプは有界で非空

xの上限 - xの下限 = 横幅
yの上限 - yの下限 = 縦幅

824 :
>>820 後半
さらにセンスが無い

825 :
オレオレ解釈でマウント取合いかよ w

826 :
>>823
勝手な距離空間持ち出してこないでくれませんかねぇ

827 :
勝手な距離空間www
後に引けなくなってさらに痛くなる

828 :
はいはい。頭いいね坊や
今度からは算数をきちんと勉強してからレスしてね

829 :
>>816
お前は勝手に汲み過ぎ

830 :
>>829
はいはいよかったですねー

831 :
>>830
君が元の問題を書いた人か?

832 :
お題:標準入力から(で始まり)で終わる顔文字が与えられる。この顔文字を太らせて標準出力に出力しなさい。

833 :
>>831
ちげーよ、出題者ならまともな条件追加してるわw
自分では何も提示しないのに難癖つけてくるアホがうざったいだけ

834 :
テンソル君頑張ってるね

835 :
トランプを並べる問題で
非ユークリッド空間を前提にしちゃう
頭がおかしい人

836 :
頓珍漢なオレオレ解釈提示してドヤってる方がウザいわ

837 :
>>788

並べるのが矩形に限らないのであれば
>>792のとおり任意の枚数で可能

矩形に並べるとして
枚数が与えられないなら>>793のとおり4枚で可能

与えられるなら>>795のとおり
与えられた自然数を最も僅差の2つの自然数の積で表す問題と同値
ただこの場合、問題文の不備を不問にしても
>並べるトランプは偶数枚
って条件がなぜ必要になるのか疑問が残るが…

いずれにしても問題としては終わってるので
これ以上長引かせるのは不毛

838 :
× 問題としては終わってる
○ 人間としては終わってる

839 :
どこからも
矩形に隙間なく並べる
とは読めないのだけど

840 :
書かれていない条件は勝手に解釈すればいい
その条件の問題を解くのが楽しいと感じるならその条件で回答すればいいだけ
グダグダと問題自体を統一する必要は無い

841 :
さすがに非ユークリッド空間は無いだろ

842 :
偶数枚並べるようなゲームを想定してるんでしょ

843 :
>>840
「問題を解く」という言葉がふさわしいような条件が見つからないから困っているわけで

844 :
面白みが無いならスルーでいいだろ

845 :
>>832
Kotlin
https://paiza.io/projects/R255MQByNDBUFUfADcsP5w

スペース入れただけなんだけど、これでいいのかな?

846 :
>>845
OKです

847 :
>>248
java
pastebin,com/7cnjtkNG

848 :
>>847
変数宣言を増やせばいくらでも行けるけどこれが限界かも
リフレクションはやっぱりクソだな

849 :
>>248 Squeak Smalltalk, インスタンス変数で254個まで

| obj n limit |
obj := Object new assureUniClass.
n := 0.
[[obj addInstanceVarNamed: 'i', (n := n + 1) asString withValue: n] repeat] ifError: [].
limit := obj class instSize. "=> 254 "
obj instanceVariableValues asArray = (1 to: limit) asArray "=> true "

850 :
自然数nに対して
3Σ_{k = 0}^{2n}(-2)^k / (2n + 1)^2
が整数となるnを総て求めよ

851 :
数学厨は帰れ

852 :
>>850
数式というか文字が何を表しているのか分からない。最初の { の直前の _ は何を意味するんだ?
更に { } で括った部分と ( ) で括った部分の違いは?

まあわかったとしても解く気は起きないかも知れないので面倒なら解説しなくても良い。

853 :
>>850じゃないけど

_はΣの下
^はΣの上

テキスト限定でのよくある表記

854 :
数学板でお題スレ立てようかと思ったらすでに似たようなスレがあった

面白い問題おしえて〜な 27問目
https://rio2016.2ch.sc/test/read.cgi/math/1532793672/

855 :
>>796-797
>>808
https://mevius.2ch.sc/test/read.cgi/tech/1434079972/53

856 :
>>853
そういう意味だとすると>>850はこうかな。

Kotlin
https://paiza.io/projects/3ObT5j3XNNkuKqDXdk6E7g

しかし、本当にこれで全てなのかは不明。
Double 型で計算できる所まで計算して結果が整数の時の n を出してるだけなので。

857 :
>>850
(1 + 2 ^ (2n + 1)) / (2n + 1) ^ 2
に変形できる
答えは多分n=1だけだと思う

python3で時間いっぱいまで総当たり
https://ideone.com/GGijCL

858 :
>>850は数学オリンピックのマスターデーモンだな
答えはn=0, 1のみ

859 :
ごめん。>>856は3倍するのを忘れていた。

860 :
>>856
Forkして3倍にするの入れてみたけど大差ない・・・
https://paiza.io/projects/IZQxz8kWTqR-Fw04EN9o1w

861 :
>>858
あれ?そうなの?
じゃあプログラム何か間違ってんのかなあ?

862 :
>>861
double型の精度の問題
計算結果は指数関数が支配しているからnが大きくなると有効桁数が足りなくなる

863 :
>>862
なるほど。とすると32以上はもうダメな値ってことだな。
かといってBigDecimalとか使って延々と計算しても意味ないな。
数学的に答え出てるし。

864 :
プログラミングならここからだな

https://site.moshimo.com/rhino/0002.html

865 :
質問スレからパクってきた配列の易しい問題

質問者は他レス見るにプログラミング自体経験なさそうだが
893 デフォルトの名無しさん (アウアウカー Sa8f-aTuM [182.250.241.36])[sage] 2018/09/08(土) 21:43:04.65 ID:6/Xg/XCUa

どこで質問するべき内容なのか迷っていたのですが調べているとプログラミング関係のようなのでここで質問させていただきます

例えば
1〜50までの数字の中で数字を10個ランダムで選ぶ乱数ツールは検索するとすぐにでてきます

しかし、自分が求めているものは2つあり
@
1〜50までの数字の中で2.16.22.23.42.50を除いて10個ランダムで選ぶことができるもの
A
1.2.5.6.16.18.20.21.23.28.30.33.39.4047.49.50の選択した数字中から10個ランダムで選ぶことができるもの

@とAで挙げた数字は適当ですが場合によっては@で除外した数字やAの選択した数字は変えたいです

このような場合自分でプログラミングしないといけないのでしょうか?

866 :
百錬の覇王と召喚少女の奴隷魔術

867 :
>>866
誤爆

868 :
>>865 Squeak/Pharo Smalltalk

"@"
((1 to: 50) copyWithoutAll: #(2 16 22 23 42.50)) shuffle first: 10.

"A"
#(1 2 5 6 16 18 20 21 23 28 30 33 39 40 47 49 50) shuffle first: 10.

869 :
>>865 Ruby
([*1..50] - [2, 16, 22, 23, 42, 50]).sample(10)
[1, 2, 5, 6, 16, 18, 20, 21, 23, 28, 30, 33, 39, 40, 47, 49, 50].sample(10)

というか1~44までの数字の中で数字を10個ランダムで選ぶ乱数ツール使えばいいだけなのに質問者が謎

870 :
ロト6を当てたい一般人だろ
そんくらいは察してやれよ

871 :
>>869>>870
自演

872 :
>>869
アスペ

873 :
お、質問者様の登場か?w

874 :
>>873
糖質かよ

875 :
発達障害イライラでワロタ

876 :
くこけ?😗

877 :
とうふさんはすこか??😍

878 :
自演R

879 :
                イ             '、
                /       ハ        ',
                i   ハ   ノ |  i、     | 
   r‐-、   ,...,,      |   リ从-ノ ノリノノ-)リ、  l 
   :i!  i!  |: : i!|     |  リ ‐=・-;  -・=‐ Y  l     イェ〜イ〜プログラミング好きなオタクみってるう?なんJ民デース!
    !  i!.  |  ;|  .    .i从 | ` ̄,:     ̄´ |从!   
     i! ヽ |  |      i リ,i   ゚人,,__,,人:.   | リ}  
    ゝ  `-!  :|! .     ハ: i.  , __ij..__ 、:  'iノ´ 
   r'"~`ヾ、   i!      彡、  `Zエlフ'´ /ミ 
  ,.ゝ、  r'""`ヽ、i!      彡イ\ ` ̄´ / ト ミ
  !、  `ヽ、ー、   ヽ    _/ ∧ > ―<  ∧ \
   | \ i:" )     ─ ' ¨: : : : | \     / |: : : \


880 :
くこは罠🙅‍♀

881 :
ここでしたか

882 :
グレイシアちゃんのふたなりチンポ

883 :
【怒報】ワイ 専門板にて1人からアスペやら糖質認定を受ける【援護求む】
http://swallow.2ch.sc/test/read.cgi/livejupiter/1536469396/

884 :
なんJから来たンゴwwwwwwww

885 :
なんjの絆舐めるな!

886 :
試合中やぞ

887 :
なんだこのスレ😨

888 :
アスペの>>869が居ると聞いて

889 :
なんj書き込んだキッズ
今度から一人で解決しようね🤗

890 :
>>872
>>874
実はこいつがなんJでスレ建てたんやで
>>869
は被害者や

891 :
はい��

892 :
ここになんjに助けを求めたガイジはいませんかー?🙋
負け犬は何処かな🤔

893 :
くこけ?

894 :
なんJにスレ立ててまでするチンパンジーが見れると聞いて来ました

895 :
恥ずかしがらずに出てこいよ😘
ガイジくん😁
それとも顔真っ赤で出てこれないかな?🤔

896 :
>>895
負け犬はお前定期

897 :
>>896
キターーー😁
本物ですわ😏

898 :
>>896
スレ立てガイジ本人いて草

899 :
図星か

900 :
>>896
大丈夫か?��

901 :
意味わからないんだがw
ハンJでしょうもないプログラミングの質問した人がいたってことか?

902 :
ハンJじゃないなんJ

903 :
また日本語怪しいじゃん君なんJでもまともに喋れなかったよね?

904 :
>>872が建てたのはこれかw
http://tomcat.2ch.s c/test/read.cgi/livejupiter/1536469396/

905 :
で元のレスがこれか
https://mevius.2ch.sc/test/read.cgi/tech/1526606537/893

906 :
>>904
立ててないぞ
人になすりつけるな

907 :
>>901でなんjをハンjと打ち間違える時点で通報騒動知ってるやつやん
>>873で自分に都合の悪いレスつくと本人認定するような奴だしなんでもかんでも人のせいにしてきたんだろうな

908 :
あ、これ俺に成りすまして他板でクソスレ立てて人をこっちに呼び込んでんのね
今理解したわ
このスレの住人なら>>871-872程度のことで他の板にスレ立てるわけないってわかってもらえると思うけど
荒れると嫌なんでしばらくROMりますわ

909 :
>>908
今理解したわとか嘘だろ
>>904>>872が建てたと認定してる時点でお前はとっくにわかってただろ

910 :
単発ばっかだし質問を小馬鹿にされた質問者が自演で荒らしてんだろ
いちいち反応すんなkz

911 :
>>910
kzとかいつの時代やねん
お前はミスターアンモナイトかwwwww

912 :
a-zからなる単語のペアが与えられるのでそれぞれの元を辞書順にソートした上で同値類を求めなさい
なお同一のペアが2度以上入力されることはなく、また出力時の各行は順不同とする


-*- input -*-
goose pigeon
cat dog
eel goldfish
goose duck
horse dog
cod eel
dove pigeon
dog rhino
goldfish squid
goose lark

-*- output -*-
dove duck goose lark pigeon
cat dog horse rhino
cod eel goldfish squid

913 :
>>912
同値類とは?

914 :
>>913
入力のペア"A B"は A = B を表しているものとして等しいもの同士をグループにまとめて出力してねという問題
正確には「同値類に分割せよ」か「商集合を出力せよ」と言うべきだったか

例えば S = {A, B, C, D, E, F, G} に対して
A = B, C = A, D = F, E = G ……(☆) が成り立っているとすると
S の全ての要素は A = B = C と D = F と E = G っていう同じもの同士に分類できるよね
で (☆) の下で A の S における同値類とは {A, B, C} のことであり、
(☆) の下での S の商集合とは {{A, B, C}, {D, F}, {E, G}} のことを言うよ

問題を解く上で数学的な要素は無いから数学の言葉を使わないで出題すべきだった

915 :
>>912 Squeak Smalltalk

| input groups |
input := 'goose pigeon
cat dog
eel goldfish
goose duck
horse dog
cod eel
dove pigeon
dog rhino
goldfish squid
goose lark'.

groups := OrderedCollection new.
input linesDo: [:line |
 | pair |
 pair := line subStrings.
 (groups detect: [:group | group includesAnyOf: pair] ifNone: [groups add: Set new])
  addAll: pair
].
(groups collect: [:each | each asSortedCollection joinSeparatedBy: ' ']) asStringWithCr

"=> 'dove duck goose lark pigeon
cat dog horse rhino
cod eel goldfish squid' "


916 :
>>914
それは良いとしても>>912の問題における同値類とはなんなのか?

例として出されているのは入力が動物の名前のようで、出力は重複をなくした上で大まかな種類ごとに分類されているようではある。
しかしこのそれぞれの分類は一体いかなる基準によって同じと判別したのか?

もしこれが単語の意味、およびそれの分類(動物なら四つ足だとか哺乳類だとか)によって分けなければならないとすると、単語の意味やその分類がプログラムの側でわかっていなければならない。
しかも入力にはどんな単語が来るかわからないというのであれば辞書並みの単語数に関してそれを保持していなければまともに分類できない。

917 :
>>915
え?それでいいの?ペアになってるなつが同じ種類ってこと?

918 :
>>916-917
>入力のペア"A B"は A = B を表している

919 :
なるほど。また最初の問題が不備で無限の回答が出るか一つも回答が出ないパターンだったと。

920 :
見た感じ問題に不備はない
まだ何か勘違いしてるのでは

921 :
>>912 Squeak Smalltalk (>>915 は入力順等によっては機能しないので差し替え)

| fn input |
fn := [:str |
 | groups |
 groups := OrderedCollection new.
 str linesDo: [:line |
  | pair found |
  pair := line subStrings asSet.
  found := (groups select: [:group | group includesAnyOf: pair])
   ifEmpty: [{groups add: Set new}].
  groups removeAll: found; add: (found inject: pair into: #,)
 ].
 (groups collect: [:group | group asSortedCollection joinSeparatedBy: ' ']) asStringWithCr
].
input := 'goose pigeon
以下略'.

fn value: input.

"=> 'cat dog horse rhino
cod eel goldfish squid
dove duck goose lark pigeon' "

fn value: input, String cr, 'squid lark'.

"=> 'cat dog horse rhino
cod dove duck eel goldfish goose lark pigeon squid' "


922 :
>>918
「それぞれの元を辞書順にソートした上で」
これは間違いってことね。

923 :2018/09/11
cat dog horse rhinoとかってアルファベット順に出力するよう要請してるのだから少なくともそのフレーズに間違いはないよ

十進BASIC
関数呼出しはgoto文である
Message Passing Interface (MPI) 統合スレ
Ruby>>>>>Java
次世代言語10[Rust Swift TypeScript Dart]
Java有償化まとめ
【DI】Java Spring Frameworkを語るスレ 5.0
Xamarin Part6
スレ立てるまでもない質問はここで 149匹目
Gitをより良くするための運用ガイドライン作成スレ
--------------------
馬連一発物語2
英雄伝説 閃の軌跡 反省会スレ★47
押忍!番長3 part69
俺ゴキブリだけど、何か質問ある? 問2
長崎新聞「仮に韓国が日本を併合し日本人を徴用し強制的に働かせたらどう思う?」
世界ふれあい街歩き 52nd St.
セルDVD経営者スレ☆32 解除宣言 。その後
【あでやか】萌える厚化粧を撮ろう【かわいい】
学校って不要じゃね?
しりとりしよう!
森山春香【モアイ】Part2
4chan民「OKマーク��は白人至上主義って架空ネタを流行らせようずwww」 →ユダヤ団体が正式にヘイトシンボル認定 [701470346]
Civilization6 (Civ6) Vol.100
35ぐらいすぎるとアトピーは治ってくると皮膚科医に
運転手になりたい人が質問するスレ 2ド素人目
( ‘д‘)y-~~ おうワシや、あいぼんや 387本目
☆★★★ 【2018】秋季九州大会 IDなし特設会場B 各県秋大会情報 ★★★★
黒柳徹子総合スレッド
【話題】三浦瑠麗「私権制限に反対してきたリベラルが政府にもっと果断な対応しろと要求、それに政府が消極的になるシュールな状況」 ★2 [緑の人★]
【限界】地質調査業界について【耐力】 part6
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼