X



プログラミングのお題スレ Part11
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん垢版2018/04/24(火) 20:45:14.49ID:ZY7R7Sru
プログラミングのお題スレです。

前スレ
プログラミングのお題スレ Part10
https://mevius.5ch.net/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/

宿題は宿題スレがあるのでそちらへ。
0004デフォルトの名無しさん垢版2018/04/24(火) 21:57:24.56ID:+2ez/H34
出題に際しては
- お題の意図を汲みやすい入出力例も示す
- 事前に自分でもコードを書いてみる
0007デフォルトの名無しさん垢版2018/04/24(火) 23:28:41.47ID:b5LehDYo
>>6
過去ログから持ってきた訳じゃないんだけど、こういうお題を考えた

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

でも何か既視感あるんだよな
過去ログに似たようなお題があったかもしれない
0009デフォルトの名無しさん垢版2018/04/25(水) 01:02:21.48ID:Xk9Nens/
数学じゃん。
紙と鉛筆で解いて算出は電卓でやれ。
プログラムでやっても電卓でできる程度のことしかしないじゃん。
0010デフォルトの名無しさん垢版2018/04/25(水) 04:59:23.37ID:uzp6LfsA
>>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 "
0011デフォルトの名無しさん垢版2018/04/25(水) 07:24:05.48ID:OIcVuxa9
過去ログから、さすがにこれはプログラミングの問題でしょ

お題:
下図のように山の麓(標高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" -> ?
0014デフォルトの名無しさん垢版2018/04/25(水) 08:57:14.64ID:s6Mh195j
スレの宿題のをやってみた (規制対象なので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
0015デフォルトの名無しさん垢版2018/04/25(水) 09:00:27.95ID:s6Mh195j
>スレの宿題のを
「前スレの宿題の」と書こうとしてミスしました。
実際のとこ宿題なのかどうかは知らないけど。
0017デフォルトの名無しさん垢版2018/04/25(水) 10:26:52.48ID:tAxnUvIH
>>11
テスト例の最初のやつはなぜ18になるのか?7+3+7=17ではないのか?
0018デフォルトの名無しさん垢版2018/04/25(水) 10:28:30.47ID:tAxnUvIH
あ、ごめん。寝ぼけてた。すまん。
0022デフォルトの名無しさん垢版2018/04/25(水) 12:51:35.60ID:/CvNfD/i
>>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
0023デフォルトの名無しさん垢版2018/04/25(水) 15:06:56.64ID:eqJJBtIM
>>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と同じだから、どうなるんだ?
002422垢版2018/04/25(水) 15:15:39.29ID:/CvNfD/i
>>11
理解できてなかったわ
"07362:450" の解がもうわからん
002522垢版2018/04/25(水) 15:29:44.32ID:/CvNfD/i
>>23
Bはa,bどちらも5点ならどちらを選んでも良い

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

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

ストレートなMin-Max戦略だなこれ
0026デフォルトの名無しさん垢版2018/04/25(水) 15:30:57.61ID:ucQtsZek
>>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時間
002722垢版2018/04/25(水) 15:37:00.23ID:pPLIJyjZ
>>26
ありがとう
問題は理解できていて頭が悪いだけでした
002823垢版2018/04/25(水) 18:07:14.08ID:eqJJBtIM
>>25
Bのa・b 戦略が、共に5点の同点で、その2つをA に戻すから、

Aは両方を比較しなければならないから、複雑だと思って
0031デフォルトの名無しさん垢版2018/04/25(水) 20:26:41.27ID:ucQtsZek
>>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
無いんじゃね?
003429垢版2018/04/25(水) 21:33:09.38ID:/CvNfD/i
適当に折り返すことによって山谷の数を合わせられる
あとは略、って感じか
003529垢版2018/04/25(水) 21:38:29.30ID:/CvNfD/i
数じゃなく高さを合わせるのか
眠くて頭が回らない
0036デフォルトの名無しさん垢版2018/04/28(土) 14:30:11.12ID:O8BM7Wua
e^(z) + 1 = 0 を満たす全ての z∈C の絶対値の集合をSとする.
この時、Sの中でN番目(N≦10^5)に小さい元を求めよ.
なお, e = Σ{n∈N}(1/n!) である.
0040デフォルトの名無しさん垢版2018/04/28(土) 17:14:48.72ID:GokrK/uL
簡単なところで。

【お題】
与えられた整数のリストを、
すべての奇数がすべての偶数の前に来るよう並べ替えなさい。
ただし奇数、偶数、それぞれの順番は変えないこと。

[-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]
0042デフォルトの名無しさん垢版2018/04/28(土) 18:15:08.94ID:7FInXxAw
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では_が負の符号)
0043デフォルトの名無しさん垢版2018/04/28(土) 18:19:04.17ID:XQamhGXx
>>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]
0044デフォルトの名無しさん垢版2018/04/28(土) 18:21:14.38ID:PugBvw3H
> _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 になるはず?
0047デフォルトの名無しさん垢版2018/04/28(土) 19:06:51.88ID:bUTNgJY5
>>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
0050デフォルトの名無しさん垢版2018/04/28(土) 19:16:25.16ID:bUTNgJY5
カンマはあっても良いんだけど _2 を -2 と書くと
,- なる演算子のコンビネータで世にも奇妙な動きになる
0052デフォルトの名無しさん垢版2018/04/28(土) 19:20:47.82ID:e4v0vK3x
違った

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

マイナスがそれまで連結したそれより右、
上の例だと 2 3 全体に作用してた
0054デフォルトの名無しさん垢版2018/04/28(土) 20:34:22.01ID:7FInXxAw
あー!
ソートするだけか。グッと短くなるな
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
0055デフォルトの名無しさん垢版2018/04/28(土) 21:15:59.30ID:Ie6V8ZCt
>>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) "
0056デフォルトの名無しさん垢版2018/04/28(土) 21:55:04.43ID:efxIQEuI
>>40
# Rubyで。
def f040(a)
a.select(&:odd?) + a.select(&:even?)
end
0057デフォルトの名無しさん垢版2018/04/28(土) 21:58:00.35ID:fbonRnOo
>>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
0059デフォルトの名無しさん垢版2018/04/28(土) 22:24:14.64ID:kOoyKfN/
安定なソートである必要は無いのかな
0061デフォルトの名無しさん垢版2018/04/29(日) 00:30:13.18ID:VMPsXvec
>>36って S = {(2m + 1)π / √((2nπ)^2 + 1)|(m, n)∈N^2}だから最小値存在しなくね?
複素数の複素数乗って多価関数だよね?
0062デフォルトの名無しさん垢版2018/04/29(日) 01:45:04.33ID:eN7o88HV
>>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
0063デフォルトの名無しさん垢版2018/04/29(日) 01:48:41.58ID:eN7o88HV


\ になってる文字は本来バックスラッシュ
Jはスマフォアプリがあるので暇で困っている人にはパズル的に遊ぶのにお勧め
0064デフォルトの名無しさん垢版2018/04/29(日) 02:09:53.25ID:VMPsXvec
>>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)π}はありえないよ
0067デフォルトの名無しさん垢版2018/04/29(日) 03:00:09.99ID:zLWhc+ki
>>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]);
0077デフォルトの名無しさん垢版2018/04/29(日) 21:35:33.15ID:f+z04ZEq
お題: 文字列をソートしなさい。ただし、英字のみをソートし他はそのままにすること。
例:
 "213cba213cba213cba" -> "213aaa213bbb213ccc"
0080デフォルトの名無しさん垢版2018/04/29(日) 22:50:48.02ID:WuAwAiPA
お題
二次元平面上の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
0082デフォルトの名無しさん垢版2018/04/29(日) 23:11:38.79ID:wF7FhsU6
>>77 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' "
0083デフォルトの名無しさん垢版2018/04/29(日) 23:14:55.98ID:UI+loYQZ
>>77 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
0085デフォルトの名無しさん垢版2018/04/29(日) 23:22:03.47ID:WuAwAiPA
>>77 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;
}
0086デフォルトの名無しさん垢版2018/04/29(日) 23:46:37.03ID:wPb3/3m7
>>77
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" []
0088デフォルトの名無しさん垢版2018/04/30(月) 00:14:03.81ID:wP9Edy/s
それは概念的な方?それとも実際に仕事に影響する方?
後者ならプレミアムフライデー列挙は0文字でできるが
0090デフォルトの名無しさん垢版2018/04/30(月) 03:49:27.01ID:XX4FB8lc
あれ?strdup() で警告出てるな。strdup() って標準ではないか。
まあでもCコンパイラのアバウトな処理によって動くバイナリは作られたようだがw
やりたいことは分かると思うのでそのままにしておく。
0093デフォルトの名無しさん垢版2018/04/30(月) 09:43:30.53ID:6GiCfUEC
>>77 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' "
0094デフォルトの名無しさん垢版2018/04/30(月) 11:03:34.34ID:6GiCfUEC
>>87 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} "
0095デフォルトの名無しさん垢版2018/04/30(月) 11:06:46.51ID:51rF4oVe
>>77
>>86のアロー版
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"
0097デフォルトの名無しさん垢版2018/04/30(月) 15:39:38.12ID:3TseVeeC
>>77 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"
0099デフォルトの名無しさん垢版2018/04/30(月) 20:05:33.19ID:AG7SQVmm
>>98
書き込んでから気がついたけど、お題の5個の入力では問題を起こさないが
差ベクトルが短すぎる場合や外積の面積が細過ぎる場合の打ち切りは、
nextで一階層ブロック脱出ではなく更にもう一階層外側のloopに脱出すべきか…orz
ま、いいか、テヘペロ
0101デフォルトの名無しさん垢版2018/04/30(月) 21:29:33.47ID:i4YlDPUd
>>100
e^z = -1 に対して z = (2m + 1)i は十分条件でしかないよ
必要十分条件は z = (2m + 1)π/(2nπ - i) なの
で今 e^z = -1 を満たす「すべての」zって言われてるから十分条件じゃ意味なのは分かる?
そもそも十分条件って言葉は知ってるかな?
exp(x) と e^(x) が違うことはわかってる?
0102デフォルトの名無しさん垢版2018/04/30(月) 21:50:54.13ID:vxN19J44
お題
大人数で一斉にじゃんけんを行った
各人の手のリストが与えられるのでその中で勝者が何人いるか答えよ
(g=グー,c=チョキ,p=パー)

gccgc -> 2
ggggggg -> 0
cppcppppccpppppc -> 5
cppcppppccpgpppc -> 0
0103 ◆QZaw55cn4c 垢版2018/04/30(月) 21:51:16.28ID:TVB5RPq5
>>101
それ、おかしくない?
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
ってどういう意味なの?
0105デフォルトの名無しさん垢版2018/04/30(月) 22:07:39.31ID:i4YlDPUd
>>103
exp(z) := Σ{n∈N}z^n/n!
pv log(z) := log(z)の主値
arg(z) := 複素数zの偏角
リンクの wolfram-alpha はそりゃ値が一致しないよ。前提が違うんだから
0106 ◆QZaw55cn4c 垢版2018/04/30(月) 22:51:37.38ID:TVB5RPq5
>>101
>>105

>>101
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 によっていろいろ変わるのはおかしいね
0108デフォルトの名無しさん垢版2018/04/30(月) 22:58:05.91ID:3TseVeeC
>>102 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
0109 ◆QZaw55cn4c 垢版2018/04/30(月) 23:18:07.22ID:TVB5RPq5
>>107
え?
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 しか取り得ないと思いますが…
0110デフォルトの名無しさん垢版2018/04/30(月) 23:25:43.22ID:i4YlDPUd
>>109
同じことを何度言えば理解してもらえるんですかね
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!)は全く別の値なんです
0111デフォルトの名無しさん垢版2018/04/30(月) 23:41:24.15ID:i4YlDPUd
ついでになんか勘違いしてるみたいだから指摘しておきますけど
xが実数であっても exp(x) != (2.7...)^x じゃありませんからね(e.g. x=0.5などとすれば直ちに自明でしょう)
高校数学の感覚ではこれらは同じ値なのでしょうけど複素解析の文脈では指数関数は一般に多値関数ですからね
0113 ◆QZaw55cn4c 垢版2018/04/30(月) 23:58:31.96ID:TVB5RPq5
>>112
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

ですね

でも >>110 の欠点がみえない
exp(z) = exp(z + 2nπj)(複素指数関数の周期性)
なのは理解しているつもりなんですが
0114デフォルトの名無しさん垢版2018/05/01(火) 00:10:24.66ID:W5y6CuNF
>>113
再三再四申し上げますが一般に exp(z) と ネイピア数のz乗は別物です
あと何百回言えばこれを理解してもらえるんですかね
従ってAの定義は「exp(x + jy) = exp(x)・(cos(y) + j・sin(y))」としなければならないし
偽な命題を前提とすればそりゃどんな結論だって導けるってものです
というのも P ⊃ Q は P が偽の時常に真ですから
0117デフォルトの名無しさん垢版2018/05/01(火) 00:29:59.90ID:zX/Wrdt+
お題
o,d,a,iからなる文字列Sが与えられる。
Sからいくつかの文字を取り除くことで"odai"をN回繰り返した文字列が得られたとする。
Nの最大値を求めよ。

odaiodai -> 2
ooddaai -> 1
idao -> 0
ododoadioadioadioadioadioadiodaioadodioadiaodi -> ?
0118デフォルトの名無しさん垢版2018/05/01(火) 00:33:21.72ID:6vH9r7He
>>102 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
0119デフォルトの名無しさん垢版2018/05/01(火) 01:08:35.42ID:sD3/P01t
>>77 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())))
0120デフォルトの名無しさん垢版2018/05/01(火) 01:09:16.19ID:6vH9r7He
>>117 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
0121 ◆QZaw55cn4c 垢版2018/05/01(火) 01:13:28.97ID:bK+upqA8
>>114
>一般に 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

以上の議論は手元の教科書の引き写しです。
0122 ◆QZaw55cn4c 垢版2018/05/01(火) 01:14:36.19ID:bK+upqA8
>>121 続き
>従って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 になります
つまり
>>114 をより正確にいえば
「exp(x) は e^x の自然な拡張」となり、>>112 は誤りとなります

また 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
に書いてありました
0123 ◆QZaw55cn4c 垢版2018/05/01(火) 01:33:38.84ID:bK+upqA8
>>122 続き
今 exp(z) = -1, z ∈C

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

>>109
exp(z) の絶対値は z の実部にのみ影響されます
exp(z) = -1 から |exp(z)| = 1
|exp(z)| = e^x
ですから
e^x = 1
これを満たすのは x = 0 のみ、という推論はどうでしょうか?
0124デフォルトの名無しさん垢版2018/05/01(火) 01:43:11.17ID:W5y6CuNF
>>121-123
>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は多価関数なのでこれらが等しくないことは計算するまでもなく自明なんですが、
なんでここにこんなにつっかかってくるんですかね……
0125デフォルトの名無しさん垢版2018/05/01(火) 01:56:50.61ID:sD3/P01t
>>102 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
0126 ◆QZaw55cn4c 垢版2018/05/01(火) 02:00:54.53ID:bK+upqA8
>>124
>>121 >>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 の収束は別途長い議論を経ないといけませんが、ここでは既知としています

最終的には >>121
exp(x + jy) = e^x(cos(y) + j・sin(y))
を導きだすのが目的です
0128デフォルトの名無しさん垢版2018/05/01(火) 02:12:20.66ID:sD3/P01t
>>125
((a,b) => ({g:'c',c:'p',p:'g'})[a] == b)(d[0],d[1])
は単純に
({g:'c',c:'p',p:'g'})[d[0]] == d[1]
でよかった。
最初関数として作ってあったもので単純化し忘れ。
0129デフォルトの名無しさん垢版2018/05/01(火) 02:19:47.25ID:6vH9r7He
>>77 Perl5 >>83を書き込んだけど気に入らなかったので少し修正した。
@s = split '','213cba213cba213cba';
@k = grep{$s[$_] =~ /[a-z]/} 0..$#s;
@s[@k] = sort @s[@k];
print @s,"\n";

実行結果
$ perl 11_77_2.pl
213aaa213bbb213ccc
0130デフォルトの名無しさん垢版2018/05/01(火) 02:24:25.71ID:85dldNJr
>>126
>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!が収束するだけでは弱くて、
「絶対収束」(絶対に収束するという意味ではありません)を仮定する必要があると言っているんですけど
まあ枝葉末節なので不問とします
0131 ◆QZaw55cn4c 垢版2018/05/01(火) 02:26:11.46ID:bK+upqA8
>>124
>exp(x)が収束することしか仮定されていないためこの変形は成り立ちません
>きちんと絶対収束(absolute convergence)することを示すか仮定しましょう。

厳しいですね…手元の教科書(高木・解析概論、ただ結構いい加減な本だそうですが)の引き写しなんですが…
虚数単位を j と置いていることからもわかるように、工科系の出自で、厳密な話は苦手です

>なんでここにこんなにつっかかってくるんですかね……
そのようなつもりはなく、純粋に数学的関心から書いているものです
>>123-121 >>113 >>109 >>106 >>103 を見返しても問題はないと思いますが

>あなたはまず複素解析の文脈で任意の実数xに対して exp(x) = (2.7...)^x となる事を証明しなければなりません
>尤も、expは単射なのに対してa^zは多価関数なのでこれらが等しくないことは計算するまでもなく自明なんですが、
exp(z) = exp(z + 2nπj) なので exp(z) は周期関数であることはわかるのですが、
これ以上のことはちょっとわかりません、今日はここまででお休みします
お付き合いくださりありがとうございました
0134デフォルトの名無しさん垢版2018/05/01(火) 02:46:03.00ID:6vH9r7He
そこまでのろわなくてもよい希ガスるけど、、
数学的お題でもいいけど、明快なお題を出すか、回答を書き込むかを重視し
解釈のかみ合わない議論は程々にした方が医院ジャマイカ
0135デフォルトの名無しさん垢版2018/05/01(火) 03:31:48.56ID:7ekaWt6m
>>117 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
0139デフォルトの名無しさん垢版2018/05/01(火) 07:17:35.34ID:dg2b7E11
>>131
純粋に数学的関心ならもうプログラミング関係ないんだから、適切な板、スレを探してそっちで好きなだけやってこい
0141デフォルトの名無しさん垢版2018/05/01(火) 09:28:24.04
数学やってる奴は頭悪いってことは分かった
0144デフォルトの名無しさん垢版2018/05/01(火) 11:01:22.65ID:V5+E1IVs
>>117 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 "
0145デフォルトの名無しさん垢版2018/05/01(火) 11:23:10.29ID:PxRnJhKl
>>102 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 "
0146デフォルトの名無しさん垢版2018/05/01(火) 11:50:43.04ID:PxRnJhKl
>>80 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 "
0147デフォルトの名無しさん垢版2018/05/01(火) 12:02:35.06ID:pz418p4m
>>117
お題のサンプル程度なら正規表現で十分かと
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
0150デフォルトの名無しさん垢版2018/05/01(火) 12:30:10.65ID:in398Y2z
お題
大きさ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
0152デフォルトの名無しさん垢版2018/05/01(火) 13:56:33.70ID:w7H89JvO
>>150 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
0153デフォルトの名無しさん垢版2018/05/01(火) 13:59:50.83ID:w7H89JvO
>>151
やっぱ公約数に帰結するんだ、
>>152書いてて繰り返し不要な解法がありそうだという気がしてきた
まいいや自分で考えることも面白いから
0154デフォルトの名無しさん垢版2018/05/01(火) 15:18:38.67ID:V5+E1IVs
>>150 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 "
0155デフォルトの名無しさん垢版2018/05/01(火) 19:12:45.94ID:sD3/P01t
>>117 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
>>147と同じ
0157デフォルトの名無しさん垢版2018/05/01(火) 21:15:49.14ID:oZjmv7dj
お題
大きさが(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
と荷物及びナップサックが与えられた時、最大の価値を求めよ
可能ならどれを詰めたかも求めよ
なお荷物は回転させて詰めても良いものとする
0160デフォルトの名無しさん垢版2018/05/01(火) 22:40:45.68ID:7ekaWt6m
お題
政令指定都市名を受け取り, 隣接する区を異なる色になるように塗り分けるのに必要な最少の色数を返す.

f(Sagamihara) => 2
f(Yokohama) => 4
0161デフォルトの名無しさん垢版2018/05/01(火) 22:43:51.19
>>157は、巡回セールスマン問題に並んで有名なナップサック問題である。
なお、この手の問題をNP完全問題だとかNP困難問題だとか呼ぶのは
「ナップサック」(NaPpsuck)に由来する。
0167デフォルトの名無しさん垢版2018/05/02(水) 00:16:51.78ID:WLxRJQ+g
Текущая версия страницы пока не проверялась опытными участниками и может
значительно отличаться от версии, проверенной 11 апреля 2015;
проверки требуют 20 правок.
Бу́ря (шторм) — собирательное понятие, обозначающее очень
сильный ветер (а также сильное волнение на море), возникающий по
различным причинам и в разных областях Земли. Скорость
приземного ветра (на стандартной высоте измерений 6—12 м над
земной поверхностью) при буре составляет, по разным источникам,
15—20 м/с и более (21-25 м/с или 75-88 км/ч). Бури бывают снежные,
песчаные и водные. Скорость ветра при буре гораздо меньше, чем при
урагане, однако буря чаще всего сопровождается переносом песка,
пыли или снега, что приводит к ущербу сельскому хозяйству, путям
сообщения и другим отраслям экономики.
0168デフォルトの名無しさん垢版2018/05/02(水) 00:18:35.47ID:WLxRJQ+g
Буря может наблюдаться:
при прохождении тропического или внетропического циклона;
при прохождении смерча (тромба, торнадо);
при шквале — кратковременном усилении ветра, связанном с местной или фронтальной грозой.
К бурям по шкале Бофорта относятся ветры скоростью более 20 м/с (9 баллов), а к ураганам — ветры со
скоростью более 32,6 м/с (12 баллов). Кроме того, по этой шкале различают:
сильную бурю со скоростью 24,5-28,4 м/с (10 баллов);
жестокую бурю со скоростью 28,5-32,6 м/с (11 баллов).
0169デフォルトの名無しさん垢版2018/05/02(水) 00:19:06.57ID:WLxRJQ+g
Термин «ураган» имеет также более узкое значение — тропический циклон. По месту образования тропические циклоны делят на:

Субтропический шторм
Тропический шторм
Ураган (Атлантический океан)
Тайфун (Тихий океан)
Если скорость ветра в тропическом циклоне превышает 60 км/ч, ему присваивается собственное имя.
0170デフォルトの名無しさん垢版2018/05/02(水) 00:20:01.14ID:WLxRJQ+g
По мнению американских учёных, для областей, расположенных в
северных широтах, снежной бурей можно считать зимний сильный
ветер, во время которого скорость ветра достигает и превышает 15 м/с (56 км/ч).
При этом температура воздуха опускается до −7 °C и ниже.
Территория распространения снежной бури может быть сколь угодно обширной.
0171デフォルトの名無しさん垢版2018/05/02(水) 00:32:41.39ID:Ahv/tBZs
数学は少なくとも話してる本人は内容を理解している
一方お前のクソみたいなロシア語はお前はその内容を理解していない
一つ聞くが、お前がコピペした文章の中には原意が支配するという意味のロシア語の単語が出てくるが、
その単語の性数態をお前は適切にこたえられるか?
答えられないだろうな。奇を衒って知りもしない外国語の文章をコピペしただけなんだから
0172デフォルトの名無しさん垢版2018/05/02(水) 00:46:25.46ID:bQ3xZw0Z
>>157
これは普通のナップザック問題と違って、荷物を積む積まないの選択肢のみならず
それに加えナップザック中に残されているスペースの形状・大きさ、
荷物を積むならば配置する向きと位置
そういったすべての条件の組み合わせに配慮して、最終価値最大の解を探索せねばならず、
単に荷物の重さと価値のみに着目して動的計画法で価値最大化プログラムをちょいちょいと書く
ような課題とは全然違った難しさがあるな…
0173デフォルトの名無しさん垢版2018/05/02(水) 00:47:08.25ID:WLxRJQ+g
なるほど。じゃ落語で埋めてくわ。
本人が理解してりゃスレ違いでもいいらしいからな。
0174デフォルトの名無しさん垢版2018/05/02(水) 00:49:53.30ID:Ahv/tBZs
>>173
数学が理解できなくてそんなに悔しかった??
自分がロシア語も理解できないのにコピペしたのがバレてそんなに悔しかった??
本当に惨めだね。あ、僕は落語なら浜野矩随が好きだからよろしくね、ど低能くん^^
0175デフォルトの名無しさん垢版2018/05/02(水) 00:50:17.20ID:WLxRJQ+g
こんな話がございます。

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

八丁堀の玉子屋新道に、魚屋を営む定吉ト申す者がございました。
もっとも、魚屋とは名ばかりで、その実は博奕打ちでございます。
毎日を遊んで暮らしている。
0176デフォルトの名無しさん垢版2018/05/02(水) 00:50:56.06ID:WLxRJQ+g
この日も、朝湯の帰りに馴染みの三河屋という居酒屋に立ち寄りまして。
風呂あがりの一杯とばかりに、呑気に引っ掛けておりますト。
ポカッ、ポカッと、頭の上から妙な音が聞こえてくる。

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

――板に何かを叩きつける音がする。
なるほど、やってやがるな――
0177デフォルトの名無しさん垢版2018/05/02(水) 00:51:47.73ID:WLxRJQ+g
ト、てっきり丁半博打の壺を伏せる音と勘違いいたしまして。

「おい、六さん」

店の者を呼びつけます。

「なんだい、水臭えじゃねえか。やってるならやってるで、教えてくれてもいいだろうに。俺も仲間に入れてくれ。取り次いでくんなよ」
「博奕ですか。滅相もない。うちではそういったことはさせません。二階は物置ですよ」
0178デフォルトの名無しさん垢版2018/05/02(水) 00:53:01.26ID:WLxRJQ+g
それでも、確かに音がするのは妙でございます。
店の者が二階へ上がっていって、やがて下りてまいりました。

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

こういった店は、商売柄、どうしても猫が寄ってくる。
今朝も早くに仕入れておいたイナダを、勝手に食ってしまったそうで。
あんまり腹が立つから、焼け火箸で目玉を刺してやろうかとも思ったが。
店の主人が、せめて橋の上から放り投げる程度にしてやれと言ったという。
0179デフォルトの名無しさん垢版2018/05/02(水) 00:54:13.04ID:WLxRJQ+g
「それで柱にふん縛っておいたんですがね。今、見に行ったら、なんとか逃げ出そうとして、立ち上がっては倒れてやがる。あれはその音ですよ」

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

差し毛の一本も見当たらない、正真正銘の黒猫です。
定吉は懐に入れるト、店を出て家に帰った。
0180デフォルトの名無しさん垢版2018/05/02(水) 00:54:44.10ID:WLxRJQ+g
家では女房のお滝が待っています。
定吉が懐から黒猫を取り出しますト、途端に渋い顔を浮かべまして。

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

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

定吉は、自分が命を救ってやった猫ですから。
恩を着せるわけではないが、やはり可愛い。
一人残った家の中で、猫を抱き上げて話しかける。
0181デフォルトの名無しさん垢版2018/05/02(水) 00:55:53.83ID:WLxRJQ+g
「そういや、名前を聞いてこなかったな。大抵の猫ならタマとかミケとか付けるんだが、お前はそんなガラじゃねえ。全身真っ黒で、熊みてえだもんな。そうだ。クマってのはどうだ」

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

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

ト、猫に博奕の講釈をいたします。
0182デフォルトの名無しさん垢版2018/05/02(水) 00:57:44.85ID:WLxRJQ+g
「一つでやるのをチョボイチ、 二つ使うのを丁半、三つ使うのをきつねと言う。俺がやってるのは丁半だ。グニの半、二ゾロの丁ってな」

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

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

猫は相変わらず、にゃーごト鳴く。
0183デフォルトの名無しさん垢版2018/05/02(水) 00:58:41.40ID:WLxRJQ+g
「俺は、丁が出ると思うな。お前は何だ。にゃーごか。よし、俺が丁で、お前がにゃーご。勝負ッ」

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

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

すると、今度は猫がにゃご、にゃごト、二回鳴く。
0184デフォルトの名無しさん垢版2018/05/02(水) 00:59:18.14ID:WLxRJQ+g
「なんだい、妙な鳴き方をしやがる。今度はにゃごにゃごの丁ってか」

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

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

「お前、本当に恩返ししてくれるつもりだな。こいつはいい」
0185デフォルトの名無しさん垢版2018/05/02(水) 01:00:01.79ID:WLxRJQ+g
それから定吉は、賭場へ行くたびにこの猫を懐に忍ばせていく。
にゃーごの半、にゃごにゃごの丁で、どんどん金が儲かりまして。
羽振りがよくなるト、兄い、親分と立てられるようになる。
猫を始終連れて歩くので、そのうちに猫定と呼ばれるようになった。
0186デフォルトの名無しさん垢版2018/05/02(水) 01:03:08.53ID:WLxRJQ+g
博徒の世界では、あだ名がついたら一人前ト申すそうでございますが。
一人前になるト、自然、悪評も目立つようになる。
そのうちに江戸にいられなくなり、ふた月ばかり旅に出ることにいたしまして。
定吉は、猫を女房に預けて家を出た。

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

――チョット、一息つきまして。
0188デフォルトの名無しさん垢版2018/05/02(水) 01:04:21.64ID:WLxRJQ+g
どこまでお話しましたか。
そうそう、博奕打ちの定吉が、猫の鳴き声で賽の目を当て、兄い、親分ト立てられるようになるところまでで――。

亭主の定吉が家を空けますト。
女房のお滝は、子分の若い者を家に引き入れるようになりまして。
長屋の住人たちが眉をひそめるのも、まったく気にしておりません。
0189デフォルトの名無しさん垢版2018/05/02(水) 01:13:03.09ID:p96PUqzp
数学ができないやつは論理的思考もできないということを示す良い例だな
頼むからスレから未来永劫消えてくれ
0192デフォルトの名無しさん垢版2018/05/02(水) 01:22:07.91ID:WLxRJQ+g
自分が理解できれば何を書いてもいいというのは数学厨が示したルールだが。
文句を言われたらこう言って開き直ればいいそうだ。
「自分が理解できないからって荒らし呼ばわりは惨めすぎるね」
0195デフォルトの名無しさん垢版2018/05/02(水) 01:24:29.12ID:WLxRJQ+g
そのうちに、人の噂も七十五日トばかりに。
ほとぼりが覚めた頃を見計らって、定吉が江戸に帰ってくる。

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

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

定吉がいては、お互い落ち着いて逢瀬を楽しむこともままならない。
いっそ、ひと思いに殺してしまってほしい。
0196デフォルトの名無しさん垢版2018/05/02(水) 01:24:49.92ID:p96PUqzp
>>192
数学は少なくともスレのお題と関係があったがお前のクソみたいなコピペはスレと無関係のただの荒らしだろうが
どっちもウザイのは同じだが、一緒くたにすんなハゲ!
0197デフォルトの名無しさん垢版2018/05/02(水) 01:25:10.76ID:WLxRJQ+g
若い者は、親分の家の姉御に見込まれたことで、男が上がったつもりになり。
箒を斜に切って油をかけ、ジリジリと火で炙る。
これは竹槍を作っているのでございます。

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

定吉は、馴染みの賭場へやってきておりましたが。
その晩はどうしたことか、猫が一向に鳴きません。
0198デフォルトの名無しさん垢版2018/05/02(水) 01:26:10.04ID:WLxRJQ+g
体の具合が悪いのだろうか。
まあ、今まで稼がせてもらったのだから。

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

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

一杯やりながら、猫に鰻の切れ端をやるのが、この頃の楽しみでございます。
ところが、いつもはよく食う猫が、これまた今日に限って口をつけようといたしません。
0200デフォルトの名無しさん垢版2018/05/02(水) 01:29:36.61ID:p96PUqzp
責任転嫁すんなハゲ
お前のせいで直近のお題が迷子だっつーの
もう二度とこないでください
0201デフォルトの名無しさん垢版2018/05/02(水) 02:28:44.50ID:/DSye1oK
>>200
お前さんがやってる煽りも、ロシア語はってるいじけた小学生みたいな奴と同じレベルだよ。数学ができたとしても精神レベルは同程度。お前さんにどんな言い分があろうとも、周囲からはそう見える。
0202デフォルトの名無しさん垢版2018/05/02(水) 02:46:19.96ID:7KO0UxVX
重み付き3次元箱詰め問題みたいなもんをここのお題に出すバカ
各都市の区の具体的なグラフが必要な問題をそれぞれのグラフも与えずに出すバカ

自分で解いて楽しいかどうか考えろよ
0205デフォルトの名無しさん垢版2018/05/02(水) 03:36:28.18ID:XZO+Bco0
お題が流れたみたいなのでリンクまとめ

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

>>77
"213cba213cba213cba" -> "213aaa213bbb213ccc"

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

>>117
odaiodai -> 2
ooddaai -> 1
idao -> 0
ododoadioadioadioadioadioadiodaioadodioadiaodi -> ?
0206デフォルトの名無しさん垢版2018/05/02(水) 05:46:42.10ID:hUDFoTxj
お題:Hello, World!を10回出力してください。ただし、偶数文字を小文字、奇数文字を大文字にすること。さらに3の倍数の文字をランダムな英字にすること。
0207デフォルトの名無しさん垢版2018/05/02(水) 07:40:02.20ID:bQ3xZw0Z
>>206 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!
0208デフォルトの名無しさん垢版2018/05/02(水) 09:59:45.49ID:hcdKMJ5x
>>206 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!
0211デフォルトの名無しさん垢版2018/05/02(水) 12:51:34.17ID:lkl981AK
お題
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
0212デフォルトの名無しさん垢版2018/05/02(水) 12:58:12.60ID:Zqd7NSI/
>>206 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!
0213デフォルトの名無しさん垢版2018/05/02(水) 16:46:53.87ID:Zqd7NSI/
>>211 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
0216デフォルトの名無しさん垢版2018/05/02(水) 17:52:43.41ID:ja0hTifx
>>211
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
0217デフォルトの名無しさん垢版2018/05/02(水) 18:09:55.15ID:ja0hTifx
>>211
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
0226デフォルトの名無しさん垢版2018/05/02(水) 20:02:43.46ID:ja0hTifx
>>225
「大きい方から順に取って、既存の列の大きい端の外側に配置」を繰り返せばいい

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
0228225垢版2018/05/02(水) 20:32:00.70ID:QUr6vWwN
面倒なので証明しないで全パターンの面積を求めて最大のやつを出すように作ろうかと思ったが、
腹が減ったので飯食ってから考えよう。(というかこうするならほとんど考える必要ないなこれw)
0229211垢版2018/05/02(水) 20:37:30.10ID:lkl981AK
問題思いついた後、ググって>>227見つけたので出題した次第です。
最小化については上手い方法があるんだろうか?
0230デフォルトの名無しさん垢版2018/05/02(水) 20:44:42.35ID:ja0hTifx
>>227
そのπってのが真ん中から左右に配置して行くインデックス列。
でその証明は不完全(*1)だけど結論は合ってる。

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

小さくするには山谷の数を多くする(小さいのと大きいのがなるべく隣接するように置く)
ってことは直感的にわかるんだけど具体的な構成法は考察がいるな
0231デフォルトの名無しさん垢版2018/05/02(水) 22:20:26.25ID:hcdKMJ5x
>>211 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) "
0232デフォルトの名無しさん垢版2018/05/03(木) 00:37:28.69ID:hmU6w2gD
>>230 最小を目指して, 山谷の数を多くしてみました.

(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
0234デフォルトの名無しさん垢版2018/05/03(木) 01:32:09.14
>>233
無為に捨てられる何千もの’Hello, World!’がかわいそうすぎね?(´;ω;`)
0236デフォルトの名無しさん垢版2018/05/03(木) 09:34:11.17ID:dYPbvGoR
【お題】
与えられた整数のリストで、
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]]
0239デフォルトの名無しさん垢版2018/05/03(木) 10:19:06.64ID:m6mdbiEz
>>236
Ruby。
ary.combination(2).select{|x|x.inject(:+)==100}
0240デフォルトの名無しさん垢版2018/05/03(木) 10:45:51.16ID:uFV+Z8SY
>>236 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)} "
0242デフォルトの名無しさん垢版2018/05/03(木) 13:12:32.47ID:N6jONgbj
>>236 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にはインストールされてないようでした
0244デフォルトの名無しさん垢版2018/05/03(木) 14:31:25.30ID:M52LYEAa
>>236 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]]
0246デフォルトの名無しさん垢版2018/05/03(木) 18:28:55.09ID:qi+bYfi0
それなりの規模の処理系(GUI付きOSモドキ)をセルフホスティングで構築・維持していると
イディオムがイディオムとして認識・共有されやすく、さらにメソッドとしてまとめられやすいのかも

たとえばスクリプト言語処理系でしかないGNU Smalltalkはあまり便利メソッドが増える感じがしないので
0247デフォルトの名無しさん垢版2018/05/04(金) 19:54:42.66ID:4Zt1BODM
お題
10,000個の単純変数に1から10,000の整数を代入する
0251デフォルトの名無しさん垢版2018/05/04(金) 21:16:29.34ID:sij7cbOA
>>247
Perl

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

こんなんでいいのか?
0252デフォルトの名無しさん垢版2018/05/04(金) 21:23:10.57ID:sij7cbOA
>>250
シェルもperlみたいにeval使えば簡単だと思うよ。その他の言語も同様。

てかこれ、インタープリタの言語にはできてもコンパイルする言語の場合は普通の方法ではできないんじゃないかな。
トリッキーな方法使ってようやっとできるかも知れないって感じじゃないだろうか。
0253デフォルトの名無しさん垢版2018/05/04(金) 21:49:18.32
Cプリプロセッサでもやろうと思えばできるけど面倒だからやらない
0255デフォルトの名無しさん垢版2018/05/04(金) 22:02:19.57ID:sij7cbOA
>>254
問題の意味がわからん
0256デフォルトの名無しさん垢版2018/05/04(金) 23:16:59.35
>>255
分からないときは好きに解釈していいのがこのスレのルール
0257デフォルトの名無しさん垢版2018/05/05(土) 00:33:22.15ID:1BpKS+ks
>>254 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
0258デフォルトの名無しさん垢版2018/05/05(土) 01:53:30.67ID:ia6t0Ogc
f, g のような変換関数を作ること自体は簡単な感じがするが、それと「パイ生地の折り畳み」がどう関係するのかがわからんな。
単にここでは折り畳んだらそういう並びになるというルールなだけ?
0260デフォルトの名無しさん垢版2018/05/05(土) 02:02:07.19ID:1dAfhim4
半分に折る->後半部を逆順に
折重ねたまま元の大きさまで伸ばす->前半部に合成

パイ生地の作り方からの連想だとは思う
0262デフォルトの名無しさん垢版2018/05/05(土) 02:13:33.62ID:1BpKS+ks
>>258 分からないと言うことをいろいろ言うつもりは無いけどm
>>254 のレスの内容とoctaveのコードから考えて
1 2 3 5 6
をパイ生地のように二つに折り畳んだ
1 2 3
6 5 4
を(下を先に選択して)リストで表すと
6 1 5 2 4 3
だということは想像に難くないので、そう解釈して解答を考えた。
gはその逆。誤解はあるかもしれない。

講釈がコードより長くなったけど、
「だけ?」って一体どういういみだよ?
0263デフォルトの名無しさん垢版2018/05/05(土) 02:43:53.26ID:ia6t0Ogc
>>262
「パイ生地の折り畳み」という言葉に他の意味がないかってこと。
0264デフォルトの名無しさん垢版2018/05/05(土) 07:20:49.47ID:lTVCLXC3
>>254
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
0265デフォルトの名無しさん垢版2018/05/05(土) 10:31:30.99ID:5+ZWBL/x
>>254 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]
0267デフォルトの名無しさん垢版2018/05/05(土) 14:19:41.02ID:E0VTmDdu
>>254 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) "
0268デフォルトの名無しさん垢版2018/05/05(土) 16:41:53.04ID:YacZpoVZ
>>254 Squeak/Pharo Smalltalk >>265っぽい方針も入れて書き直し

| 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) "
0270デフォルトの名無しさん垢版2018/05/05(土) 17:25:53.15ID:Js8QmTUw
お題
N×Mのフィールドが与えられる。各マスの意味は以下の通りとする。
'S':始点
'G':終点
'.':通行可
'#':通行不可

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

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

[example 2]
S.....G
.......
=> 12
0271デフォルトの名無しさん垢版2018/05/05(土) 17:33:36.44ID:5+ZWBL/x
>>269
配列の長さを L とすると、
f(パイをたたむ)は;
i(0 <= i < L)番目の要素を元の配列の (~...~[i / 2]) % L 番目から持ってくればよい
(~...~はビット反転を i 回繰り返したもの)
g(パイを開く)は;
i(0 <= i < L)番目の要素を元の配列の (- 0.5 - |2 * i - L + 1.5|) % L 番目から持ってくればよい
0273デフォルトの名無しさん垢版2018/05/05(土) 18:51:54.01ID:c0K4Xq7n
今抱えてる課題
1から100までインクリメントする変数iを用いて
300から1までの実数を100個出力せよ

i=1の時は300
i=100の時は1
となる式を考えてちょ(人・ω・)☆
0275デフォルトの名無しさん垢版2018/05/05(土) 19:06:07.33ID:j/DSqy58
お題:文字駒を滑らせろ
四方を囲いで被われ駒がこぼれる心配のない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くらいでやってみてください。最適化しないと結構時間かかっちゃうと思いますが。
0276デフォルトの名無しさん垢版2018/05/05(土) 19:17:21.84ID:c0K4Xq7n
>>274
ありがとうございます(^○^)
範囲を等分してiと合わせるだけだったんですね
これを思いつかないとは・・・寝てきます(・_・;)
0281デフォルトの名無しさん垢版2018/05/05(土) 22:58:44.12ID:Js8QmTUw
お題
Y円を支払うとき、同種の通貨の枚数を最小化する。

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

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

Y=40
=> 3

Y=60
=> 1
0288デフォルトの名無しさん垢版2018/05/06(日) 06:45:27.16ID:lHf8cLJR
>>281 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
0289デフォルトの名無しさん垢版2018/05/06(日) 08:03:16.30ID:939GOaZM
>>275
一度でも水平垂直の両方に傾けると
座標じゃなくて単に駒の二次元リストでいけると思うから
指示の短縮と合わせて早くできると思うけど
どう書けばいいか悩んでる・・・
0290デフォルトの名無しさん垢版2018/05/06(日) 08:16:38.56ID:xMaBOakW
>>281 Ruby >>288を修正
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
0294デフォルトの名無しさん垢版2018/05/08(火) 21:54:00.37ID:rppAglGz
はっ。それはもしや45の倍数・・・

おや?こんな夜中に誰だ?
0295デフォルトの名無しさん垢版2018/05/08(火) 22:14:46.30ID:8rfWV9vw
>>289
それって例えば初期配置が以下のとき(■が駒)
□■■□□■
□□■□■□
■■□■□■
□□■■□□
□■□■□□
■□■□□■
最初に例えばULが来ると以下のようになって…
■■■■■■
■■■■■□
■■■■□□
■□□□□□
□□□□□□
□□□□□□
□だけの行、□だけの列はこれからハブいてループ回せるじゃんってことだよね。この例だと下二行。
なるほど命令の最適化ばっかり考えてて全然気づかなかった。
0296デフォルトの名無しさん垢版2018/05/08(火) 23:30:03.25ID:y0JbAqkN
>>292 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 "
0299デフォルトの名無しさん垢版2018/05/09(水) 00:58:06.52ID:NS139TvC
>>296
Smalltalk なのに普通だ…いやtabulateが便利そう

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

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

先に,で1次元化してから足せば1文字短く
+/,(*/[)>:i.9
2025
0300デフォルトの名無しさん垢版2018/05/09(水) 01:51:50.10ID:bn/AH8fd
>>297
すごくでかくなったので分けた。ごめんよjsfiddle...
board(1980x1080, 文字列の配列形式)
https://jsfiddle.net/eqyuvgm9/

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

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

このサンプルでchromeのコンソールで試した結果、
最適化なしでは47.4秒
命令の最適化だけで1.8秒になった
>>289も試してみようと思う
0301デフォルトの名無しさん垢版2018/05/09(水) 01:56:38.20ID:qkLXPpHd
>>292
Kotlin

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

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

45
90
135
180
225
270
315
360
405
0304デフォルトの名無しさん垢版2018/05/09(水) 07:39:32.32ID:LEGAA83e
>>300
命令はもう LDRULDRU... で与えた方がいいかもね
この256文字?命令も URDLURDLU まで最適化できちゃうわけだし
0305デフォルトの名無しさん垢版2018/05/09(水) 14:54:31.24ID:LEGAA83e
>>300 Ruby
>>289を意識して最適化してみた
https://ideone.com/zwyM7p

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

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

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

と垂直、鉛直方向にそれぞれ反転するだけでいい
最適化された命令は時計回りか反時計回りに回すことになるけど、((駒の数)! + 1)回以内には必ずでループするのでそれも考慮
が、1980x1080には4秒要する模様
0306デフォルトの名無しさん垢版2018/05/09(水) 15:06:55.92ID:FhlfzW8k
>>295
マス単位で省けると思う
[a....,bcd..,efghi]を[a,bcd,efghi]って表現して
これを上に傾けて[acdhi,bfg,e]にする操作はこんなコードで出来る
https://ideone.com/i7EmbB
他の方向へは対称性を利用すれば書けるから
今は左下に寄ってるみたいな情報を持ってればいいし
その情報で行列表現にも戻せる
まあ駒の数が多い場合は大して速くならないけど
0307デフォルトの名無しさん垢版2018/05/09(水) 15:13:44.30ID:LEGAA83e
あとは2回目以降どうやって傾けても駒の配置は合同(かその反転)になるから
2回傾けた結果を使って4回目を求めて……ってやればO((駒の数)*log(最適化された命令の長さ))で済みそうだよね
0308デフォルトの名無しさん垢版2018/05/09(水) 15:37:49.24ID:FhlfzW8k
>>305
面倒なループ書かなくても反転でいけたのか・・・
数学力が足りなかった
0309デフォルトの名無しさん垢版2018/05/09(水) 18:01:06.55ID:tbbSaefy
>>275>>300のボードで

こういう処理は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
0311デフォルトの名無しさん垢版2018/05/09(水) 19:18:52.31ID:tbbSaefy
目先を変えて 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
0313デフォルトの名無しさん垢版2018/05/09(水) 21:40:14.20ID:7NiN2gcq
(そして今試してわかったが dispatch_group は
>>311のように使いまわさず wait 後破棄してまた create する方が高速、と)
0314デフォルトの名無しさん垢版2018/05/09(水) 21:57:48.63ID:bn/AH8fd
スクリプト言語のわりには速いと言われるjsだけど当たり前なのかもしれないが桁違いにぜんぜん敵わんくて糞ワロタww
0315デフォルトの名無しさん垢版2018/05/09(水) 22:18:37.30ID:7NiN2gcq
JS のは配列の初期化や文字列操作関数とかが足引っ張ってるんじゃないだろうか。
毎回メモリアロケートするからキャッシュも効きにくそうだし。
2次元配列に初期値セットしてからコードで操作した方が速い気がする。
0317デフォルトの名無しさん垢版2018/05/10(木) 08:16:30.90
各コマの最大可動範囲は最初に定まるし
ターンが進むにつれ狭まりもするから
それで最適化できん?

知らんけど
0318デフォルトの名無しさん垢版2018/05/10(木) 14:34:27.76ID:qHVZoDSH
>>305のやり方だと二回傾けて以降は駒の入れ替えだけでいいから
numpyでboard[board!='.']=np.fliplr(board)[np.fliplr(board)!='.']とかやれば速いかな
インデックスは毎回計算しなくてもいいけど
0321デフォルトの名無しさん垢版2018/05/10(木) 17:33:52.68ID:qHVZoDSH
本当は数値計算みたいにもっと速い命令を使ってくれるかなと期待してたんだけど
そういう上手くはいかなかった
0323316垢版2018/05/10(木) 18:04:31.86ID:CLWEept/
>>275のコードで>>300のデータを
C版を計測したMacのChromeで計測してみた
結果は>>300と似たような数字で性能差はあまりなさそう

actions(256個)そのまま
37.972秒

最適化した URDLURDLU を使用
1.861秒
0324デフォルトの名無しさん垢版2018/05/10(木) 18:30:24.64ID:O+ANAa9X
じゃあArray版作るか…
思ったんだけどこれWebGLでGPU計算出来るかな?いやGPGPU向きの問題かどうかすら分かんないんだけど詳しい人いるかと思って。
0325デフォルトの名無しさん垢版2018/05/10(木) 20:41:39.42ID:CLWEept/
>>275
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
0327デフォルトの名無しさん垢版2018/05/10(木) 21:44:01.34ID:CLWEept/
先頭2行のJらしい部分の解説

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

直感的で 読 み や す い
0330デフォルトの名無しさん垢版2018/05/12(土) 10:11:54.49ID:bX5i+Zj+
2つの普通のサイコロを
面と面をくっつけて直方体を作る
何種類の異なる直方体ができるか?
回転して同じものは同じ種類とする
0332デフォルトの名無しさん垢版2018/05/12(土) 10:56:43.70ID:pDgCeBjY
共同ツール 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/
0335デフォルトの名無しさん垢版2018/05/12(土) 13:04:25.66
>>330
C言語
#include <stdio.h>
int main(){ printf("%d¥n", (6+5+4+3+2+1)*4); return 0; }
0336デフォルトの名無しさん垢版2018/05/12(土) 13:50:20.72ID:UoMtV9Kh
>>330
直方体そのものは1つなのでは?各面に打ってある点の数は違うけど同じ直方体であることには変わりないよね。

などと言ってしまったら問題にならなくて全然面白くないので後で考えてみるよ。w
0337デフォルトの名無しさん垢版2018/05/12(土) 15:39:30.07ID:TjVuoOYn
まず数学的に考えると、6面の内の一面がくっつくのでこれで6種で、更にくっ付けられる面が6面なので6倍。そして4回回転できるので更に4倍。しかし同じ値の面がくっついた時はお互いに回転させても同じのができるのでこれを引く。
とすると6*6*4-6*4=6*4*(6-1)=6*4*5=120でいいのかな。
0338デフォルトの名無しさん垢版2018/05/12(土) 15:42:14.83ID:TjVuoOYn
ま、しかし、数学的に答え出しちゃったらプログラム作る意味なくなるような気がするので全パターン作って確かめるようなの作るか。
0342デフォルトの名無しさん垢版2018/05/12(土) 17:25:20.83
>>337
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面
0343KAC垢版2018/05/12(土) 17:50:27.68ID:7sNFtIfC
>>335
改行書くことすら惜しむくらいなら、「return 0;」省略すればいいのに・・・

>>338
そういうときはn面体に対するものにするとか、
m個くっつける場合のものにするとか、どこかの値を可変にすればいい。
0344デフォルトの名無しさん垢版2018/05/12(土) 18:04:42.08ID:TjVuoOYn
>>339
そうか。何が違うのか今のところ俺にはわからない。

>>342
その説明の意味がわからない。何を表しているのか?
0345デフォルトの名無しさん垢版2018/05/12(土) 18:38:44.14
>>344
くっついている面の組み合わせ(サイコロを2つ振って出る目と同じ)×4回転
0346デフォルトの名無しさん垢版2018/05/12(土) 18:57:16.30ID:TjVuoOYn
>>345
あ、そうか。例えば1、6は6、1と同じか。
0347デフォルトの名無しさん垢版2018/05/12(土) 19:09:45.48ID:TjVuoOYn
6*7/2*4=6*7*2=84てことだな。

じゃ、あとは無理矢理全パターン出して全件チェックするブルートフォースなプログラムでもゆっくり作るとするか。
0348347垢版2018/05/13(日) 03:37:21.95ID:YKXy/MBP
散々考えて作ったプログラムで 96 と結果が出てしまい、何がどう間違ってるのか探すの面倒なのでとりあえず休止。
またその内気が向いたらやってみよう。
0349デフォルトの名無しさん垢版2018/05/13(日) 17:57:36.41ID:lW+v/TK4
よくある総当たり戦の試合数を求める問題の変形だろ
いくらなんでも算数レベルはさすがに・・・
0350デフォルトの名無しさん垢版2018/05/13(日) 19:10:48.15ID:IsC8XoQl
算数レベルだと不満があるみたいなので類題を
正五胞体の各面に1〜10の番号が振られたサイコロが2つある
2つの正五胞体の面を合わせて新たな多胞体を作るとき、
面の模様の組み合わせ合わせてを合わせて何通り作ることができるか求めよ
0355デフォルトの名無しさん垢版2018/05/13(日) 22:02:39.26
出題者は学校の宿題をコピペしてるだけなんだからそんなの分かるわけないだろw
0356デフォルトの名無しさん垢版2018/05/13(日) 23:15:41.18ID:KchYOj5S
円周上の格子点を求めるプログラムをしこしこ作ってるが、
マルチスレッドで動かしたらPentium G6950とAtom x5-Z8350タブレットでほとんど変わらなくて(´・ω・`)
0358デフォルトの名無しさん垢版2018/05/13(日) 23:27:47.10ID:R9SlBBi+
これか



「自然数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)
0359デフォルトの名無しさん垢版2018/05/13(日) 23:55:53.09ID:VV8A9gRv
ああ、自称数学が出来る人がアホな事を言ってたヤツだな

最小値は存在しないとか
最小値が存在する証明は簡単だとか言いつつまったく出来てなかったり
0361KAC垢版2018/05/13(日) 23:59:19.53ID:n7+JE8gH
>>359
複数解があれば、その中で一番小さい物が最小値
という当たり前の定義に何か疑問でも?
0363デフォルトの名無しさん垢版2018/05/14(月) 00:07:14.94ID:1oWMeidW
>>361
最小値が存在するためにはいくつかの条件があって
その条件を全く考慮しないで「証明」と言い張ってたアホがいたと
まさか君じゃないよね?
0364 ◆QZaw55cn4c 垢版2018/05/14(月) 00:12:43.39ID:pLvY6PGg
それより数学のセンセが複素指数関数をなんだか誤解しているのを何とか説き伏せたいのだけれども…
0365デフォルトの名無しさん垢版2018/05/14(月) 02:08:50.73ID:nPZzHRVa
>>364
多値関数のことを周期関数とか見当違いのことを言っていたあなたが何か言えることなんてあるんですか?
でこの話題まだ続けたいの?
0369デフォルトの名無しさん垢版2018/05/14(月) 17:12:13.58ID:BXZtNaWp
せんせーともども数学板へどうぞ。
こいつら異世界転生もののアニメ見てそうだなワラ
0371デフォルトの名無しさん垢版2018/05/14(月) 21:29:45.96ID:EDnTjcK4
仲間内じゃうだつが上がらないのかな、誉められたくてこんなとこまで来てチンコしごいてんのか気持ち悪い。
リアルで軽んじられてる理由が透けて見えるよ。ほんと迷惑な話。
0373デフォルトの名無しさん垢版2018/05/14(月) 23:27:31.52ID:ByoIoZVn
お題
辺の長さと面の面積と体積の全てが整数である4面体を求める
0374デフォルトの名無しさん垢版2018/05/14(月) 23:35:45.52ID:D3cFptH9
>>368
もしかしてリーマン面とかも知らずに留数定理がどうのこうの言ってたのか?
厚顔無恥ってこのことだぜ
0377デフォルトの名無しさん垢版2018/05/15(火) 01:12:11.74ID:/OJ/weUW
数学コンプがプログラミングに逃げたが
やっぱり数学からは逃れられなかっただけ
0378デフォルトの名無しさん垢版2018/05/15(火) 02:50:42.43ID:cltBdwph
お題
(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
0379デフォルトの名無しさん垢版2018/05/15(火) 03:49:05.69ID:76+B/frM
>>350
問題そのものとは関係ないかもしれんが正五胞体の面同士を重ねても通常の多胞体にはならないんじゃ
次元をひとつ下げればふたつの正四面体の辺同士を重ねる操作にあたるよね
0382デフォルトの名無しさん垢版2018/05/15(火) 09:34:19.74ID:iN3NVkNj
その自称数学の専門家がなんでまたこんな場違いな板のスレに粘着してんの?
お前も実は数学コンプなんだろ
0383デフォルトの名無しさん垢版2018/05/15(火) 09:38:30.52ID:Jeovbfag
もう数学問題に特化したお題スレ作った方が良いのでは?
0384デフォルトの名無しさん垢版2018/05/15(火) 09:53:16.24ID:EjMHQE21
>>373
無い
0388デフォルトの名無しさん垢版2018/05/15(火) 11:53:29.05ID:s5avjWfm
全角の「ない」は化けていないのに不思議?不思議?
0389デフォルトの名無しさん垢版2018/05/15(火) 12:43:26.80ID:hqwVUKF+
円マークかな?Unicodeだとバックスラッシュとはコードが違うよね。
0390デフォルトの名無しさん垢版2018/05/15(火) 12:45:53.43ID:hqwVUKF+
前にLinuxの端末でバックスラッシュと円マークの両方が半角で普通に両方入力できて驚いたことがある。やっとまともになったのかとw
0394デフォルトの名無しさん垢版2018/05/15(火) 13:05:37.32ID:CiGj6Ypo
datをバイナリエディタで見たら化けてる所は 0xfc 0xfc になってるが、なぜそれになるのかは知らん。
0395デフォルトの名無しさん垢版2018/05/15(火) 13:26:15.15ID:hqwVUKF+
ていうかC言語等の文字のエスケープに使う文字は本来であればバックスラッシュだ。
円マークになってる入門書等が多い理由は歴史的な理由による。
どういう歴史的理由かは長くなるので省略。
0398デフォルトの名無しさん垢版2018/05/15(火) 15:00:25.50ID:s5avjWfm
5chなんだから
じゃんじゃん語るべき
0401デフォルトの名無しさん垢版2018/05/15(火) 16:23:07.72ID:eMeQgyCY
SIPやアプリや5chがどういう文字コードを扱ってどういう変換をしてるかがわからん
これは調べたり実験しないと

教えたがりの書き込みは全く役に立ってないから
書かなくて良いよ
釈迦に説法
0404デフォルトの名無しさん垢版2018/05/15(火) 18:18:50.58ID:GoFwWa3N
5ch はシフトJISだから1バイトのバックスラッシュは基本書けないし読めない
(U+00A5に対応する文字コードがない)
実体参照の使用が許可されてる板なら実体参照でU+00A5の字も書ける
fcfc はわかんないな

ググるとfcfcはシフトjisのibm拡張文字領域で、
aixの修正された不具合の説明で文字コード変換の際に
意味のないコードfcfcになるのがどうのこうのというページがあったから
libicu(ibmの文字コード関係ライブラリ。割と広く使われている)で
そういう不具合のあるバージョンがあるんだろうな
0406デフォルトの名無しさん垢版2018/05/15(火) 18:34:45.23ID:GoFwWa3N
>>404の補足
5ch は投稿されたfcfcをそのまま出してるだけで、
誤変換しているのは投稿しているアプリ

それはそれとしてこの板ではバックスラッシュ使いたいよね
0409デフォルトの名無しさん垢版2018/05/15(火) 20:10:00.78ID:r6+CqG6i
\\\\\\\\
できるかな?
0410デフォルトの名無しさん垢版2018/05/15(火) 20:10:17.25ID:r6+CqG6i
お。できた。
0412デフォルトの名無しさん垢版2018/05/15(火) 21:02:46.10ID:GoFwWa3N
>>407
そっかごめん訂正
u+00A5 はシフトjisの0x5c に変換されて書けるけど、
ユニコードの u+005c のバックスラッシュは書けない、が正解だった。
0413デフォルトの名無しさん垢版2018/05/15(火) 21:10:05.44ID:GoFwWa3N
バックスラッシュと言えば Visual Studio で c のソース編集時に
バックスラッシュが表示されてて、文字コードはshift jisなのに何故?

と思ってたが Visual Studio では0x5Cがどっちで表示されるかはフォント任せなんだな
shift jis (cp932) では円マークと規定されてるのに。
0420デフォルトの名無しさん垢版2018/05/16(水) 08:04:36.25ID:PomcYnKY
そんなに数学挑みたいならこれでもどうぞ
お題
2つ以上の正の整数が与えられる
この時、最後を除く自然数に対し四則演算及び括弧を使い数式を作ることで、最後の自然数と同値にせよ
複数の数式が考えられる場合、どれか1個を出力すれば良い

入力例1: 5 2 3 3 10
出力例1: -5+(2+3)*3=10
入力例2: 0 1
出力例2: Impossible
0421デフォルトの名無しさん垢版2018/05/16(水) 09:13:18.66ID:hkrElRSY
だから数学問題は新スレ作ってそっちでやれって。
0423デフォルトの名無しさん垢版2018/05/16(水) 09:51:29.86ID:9Q3+56hM
極度の数学コンプとそれを煽る人達のせいで訳わからなくなってるな
数学コンプの人らは数学に関するすべてを禁止したスレを立ててそっちに移住したほうが平和なんじゃないの
0424デフォルトの名無しさん垢版2018/05/16(水) 09:54:01.27ID:+2MSwW5R
スレが荒れるなら分岐したほうがいいのかね
プログラミングのお題スレ(数学)
みたいに
あんまり人がいないなら別にこのスレでも良いと思うがな(俺は)
0426デフォルトの名無しさん垢版2018/05/16(水) 09:57:33.06ID:OColoMR4
プログラミングのお題には数学要素のあるもの多いな
0428デフォルトの名無しさん垢版2018/05/16(水) 11:00:45.42ID:ZRgXOqOF
>>426
数学要素があること自体はいいんだけど、数学的に解いたら後は手計算の代わりに入出力と演算をプログラムにやらせるだけっていうお題は興醒めというか面白味がないね。
0430デフォルトの名無しさん垢版2018/05/16(水) 11:37:48.24ID:OColoMR4
お題スレ Part9 では、
tan() の値が有理数になる場合についての
数学的証明が活発に議論されていたな
0431デフォルトの名無しさん垢版2018/05/16(水) 12:03:53.05
数学者がプログラミングの領域にしゃしゃり出てくんなや

プログラミングはExcel方眼紙を操る文系の神聖不可侵領域なんや
0432デフォルトの名無しさん垢版2018/05/16(水) 12:05:10.39ID:OGup9rVZ
ディープラーニングとかAIとかモロ数学(知識)では?
0433KAC垢版2018/05/16(水) 12:46:11.09ID:2T+9VrOe
>>425
電子計算機に数学禁止て。。。
0434デフォルトの名無しさん垢版2018/05/16(水) 13:00:55.70ID:danjk40Q
プログラミングも一応数学の一部ではあるけどな。計算手順だし。
しかしプログラミングのお題として数学問題そのまま出されると数学的に頭で考えるだけで解けてしまってあまり意味がないだろう。
コンピュータに計算をさせるという要素がなくなりプログラミングのお題にならない。それは数学のお題だ。
0435デフォルトの名無しさん垢版2018/05/16(水) 13:15:33.84ID:sHhzsQ4l
>>430 の過去スレの有理数・無理数の問題が数学問題で、

このスレの>>420 は、プログラミング問題だな。
0438デフォルトの名無しさん垢版2018/05/16(水) 13:50:27.54ID:danjk40Q
数学ってアルゴリズム考える所までで終わりじゃない?算数や物理じゃないから式に値を入れて計算して答えを出す所までやる必要がなくて、式そのものを求めて終わり。
0439デフォルトの名無しさん垢版2018/05/16(水) 16:05:28.01ID:VFom9laO
このスレで数学って言ってるのは
式だけじゃなくアルゴリズムまで含んでる気がするけど

アルゴリズムは数学じゃないっていうなら
>>420なんか数学的要素ゼロになっちゃう
0440デフォルトの名無しさん垢版2018/05/16(水) 16:31:09.13ID:+2MSwW5R
プログラミング的な試行錯誤のあるお題を考えるのって難しくない?
まぁ俺には数学的なお題を考えるのも難しいが
0443デフォルトの名無しさん垢版2018/05/16(水) 17:57:39.97ID:GCTrNDIc
>>439
まあ、式を複雑にしたのがアルゴリズムみたいなものかな。
で、コンピュータを使う理由は普通はプログラムを作るためではなくて、実際にプログラムを動かして計算させて結果を得るためだ。
正解となるプログラムを作った段階で終わりにはしない。
0446デフォルトの名無しさん垢版2018/05/16(水) 21:57:47.05ID:+GN46IIl
やっぱり不気味だよ
例えば>>275なんて最終盤面がU・D・L・R(上下左右)とUR・UL・DR・DL(左上・右上・左下・右下)の8つしか無いだろ
2回計算して終わりじゃん
0448デフォルトの名無しさん垢版2018/05/16(水) 22:18:33.87
2回かどうかは知らんが、最後に2パターンのうちの一つを作って回転もしくは反転させるだけだわな
入力ごとに馬鹿正直に駒を動かすようなプログラムを組む奴は壊滅的にセンスが欠けている
0449デフォルトの名無しさん垢版2018/05/16(水) 22:20:40.95ID:RliGnokV
数学禁止
0452デフォルトの名無しさん垢版2018/05/16(水) 23:40:38.01ID:7XX9JZjA
お題:
以下のように操作を繰り返して単一リストになったらその要素を返す

[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] -> ?
0456デフォルトの名無しさん垢版2018/05/17(木) 00:59:40.10
>>455
要素が1個になるまで繰り返す
奇数の場合3で掛けて右の数値を足す
配列の右端を切り捨てる

とか、どこ情報なの?

こんなの読み取らなきゃいけないのなんて「プログラミングのお題」ではない
こんな糞問題出すなや >>452
0457デフォルトの名無しさん垢版2018/05/17(木) 01:17:23.95ID:AhjFsLsi
誰でも簡単に出来るお題じゃあつまらんから
数学だったりパズルだったりの要素があってもいいかと
0460デフォルトの名無しさん垢版2018/05/17(木) 01:25:32.48
>>456
1行目間違えた

偶数の場合2で割る
0461デフォルトの名無しさん垢版2018/05/17(木) 01:37:26.94ID:wTjk4UUR
なぜ朝鮮人はプログラムを書かないのか
それは書かないからではなくて「書けない」からである
0462デフォルトの名無しさん垢版2018/05/17(木) 02:42:47.50ID:OtjvMXsk
>>456
算数クイズだな
0464デフォルトの名無しさん垢版2018/05/17(木) 03:38:37.62ID:W4Rt98V+
>>488
例えばこんな風に動くとかわかる?
よく考えてみて

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

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

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

さらに'DRUL' 適用
321abcdef.
45678ihg..
..........
0465デフォルトの名無しさん垢版2018/05/17(木) 06:04:53.73ID:w9FSok0P
ああ>>446, >>448は勝手に駒の区別をしないことにしたうえで難癖付けてたのか
プログラミング以前に日本語のセンスが「壊滅的に欠けている」なw
0466デフォルトの名無しさん垢版2018/05/17(木) 09:34:22.60ID:rKf91ggF
日本語の問題なんだろうなとは俺も思った。それにしてもちょっとでもコーディングしてみれば勘違いに気づきそうなものだが…
コーディングしない系プログラマなのか
0467デフォルトの名無しさん垢版2018/05/17(木) 09:59:33.05ID:hUdRfKOZ
×コーディングしない系プログラマ
◎コーディングはできない、プログラマでもない、人にいちゃもんつけるのが得意なだけの嫌われ者
0469デフォルトの名無しさん垢版2018/05/17(木) 12:19:48.40
>>465
俺はIQ高いから頭ん中でシミュレーションしてみたんだわ
ただ、駒が全部真っ黒で見分けが付かなかった
すまんな
0471デフォルトの名無しさん垢版2018/05/17(木) 20:04:17.63ID:6aDUZAbl
>>464
それってそんなにコマ沢山使わなくてもわかるよね。
3つのコマを2*2の4枠の中に入れれば傾けるだけでくるくる回せるから。
0472デフォルトの名無しさん垢版2018/05/17(木) 20:12:27.33ID:3vBIE/+x
>>471
>>446で本人が言っている8種
>>448で反転だの言ってるからその倍にして16種

結果の盤面がそれ以下のバリエーションだと
「やっぱり8種類以下しかないじゃないか!」とかになるだけだろ
0473デフォルトの名無しさん垢版2018/05/17(木) 20:17:32.90ID:3vBIE/+x
もちろんもっと少ないコマでも結果が16種より多くなる盤面はあるけど、
幾らでも多くなるよというのをイメージしやすいように大きめにした
0474デフォルトの名無しさん垢版2018/05/17(木) 23:21:27.20ID:R4VP18xe
>>358
勉強をかねてこれやってるが、ある程度、できたところでアップしてみる。
考えてる方針が速いとはおもうが・・・
0477デフォルトの名無しさん垢版2018/05/18(金) 00:27:29.87
お題

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

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

[制約] (なくしてもいい)
文字列の構成文字は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)

関連 >>378 >>419
0478デフォルトの名無しさん垢版2018/05/18(金) 07:59:42.69ID:C1d8hfuw
>>474
じゃあ競争しよう

私はこれからスタートであまり時間もないので
ちょっと時間がかかるかも知れないけど
0480デフォルトの名無しさん垢版2018/05/18(金) 08:20:20.07
>>479
そんな感じです
ほどほどに圧縮できてれば必ずしも最短でなくても
0481デフォルトの名無しさん垢版2018/05/19(土) 01:06:44.60ID:YJKUc9vG
>>478 です
とりあえずこれだけ出来ました
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
0482デフォルトの名無しさん垢版2018/05/19(土) 01:35:39.77ID:/t1Y5z0r
ピタゴラス素数(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の範囲も限定できる。
0483デフォルトの名無しさん垢版2018/05/19(土) 01:54:04.51ID:YJKUc9vG
ノーヒント、全て自力で求めようと思ってたんだけど
だから競争って

まあいいや
使えそうなら使わせていただきます
0484デフォルトの名無しさん垢版2018/05/19(土) 03:42:04.50ID:/t1Y5z0r
ピタゴラス素数は2乗和であらわせて。
(a^2 + b^2) (x^2 + y^2) = (ax + by)^2 + (bx - ay)^2 が常に成立するので、

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

しかし、これがわかっても最小値を求めるのは簡単ではないとおもう。かなりの計算量がいるはず。
0485デフォルトの名無しさん垢版2018/05/19(土) 03:53:23.91ID:/t1Y5z0r
z = x + yiという複素数でいうと、このノルムは|
0486デフォルトの名無しさん垢版2018/05/19(土) 03:56:11.86ID:/t1Y5z0r
z = x + yiという複素数でいうと、ノルムは|z|^2 = x^2 + y^2 であって
|z||w| = |zw|を満たすので、
>>484の式は、新たな複素数 zwを作り出すことと一緒。
0487デフォルトの名無しさん垢版2018/05/19(土) 07:41:40.76ID:b7x1I7X/
お題

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

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

以前2chでこのことについてケブンリッジで発見されたというような内容の文章がコピペされて広まり一時期有名になりそれ用の変換をするケブンリッジジェネレータのページ(JavaScriptで作られてたと思う)が作られたりもしていた。
今はもうないようだが今回のお題はこれである。つまり、入力された単語の最初と最後はそのままで途中の文字順序をランダムに入れ替えた結果を出力する。
日本語の文章は普通は単語と単語の間にスペースがないが、これについては処理を簡単にするためにスペースありで入力された文章しか正常に処理しないということにして良い。
0488デフォルトの名無しさん垢版2018/05/19(土) 08:22:43.57ID:VUe7Kazw
>>487 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?'
0491デフォルトの名無しさん垢版2018/05/21(月) 12:42:55.71ID:DBB0b89i
>>487 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?' "
0493デフォルトの名無しさん垢版2018/05/21(月) 20:02:50.47ID:I0TPptnw
>>482
やってみたけど、
馬鹿正直に検索するのと大して変わらんね
半径1000以下を全て検索するのは厳しそう

円周を検索するする昔ながらのアルゴリズムは優秀だ
0494デフォルトの名無しさん垢版2018/05/21(月) 21:16:17.93ID:FH7zIseK
円周を検索するする昔ながらのアルゴリズムとは?
0495デフォルトの名無しさん垢版2018/05/21(月) 21:24:09.15ID:dve0ZlFL
>>487 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 で つくられ てたと 思う)が つくられ たりも しいてた。
今 は もうない ようだが こんかい の お題 は これ である。つまり、にりゅうょく された 単語 の さしいょ と 最後 は そのまま で とちゅう の もゅんじじじょ を ラダンム に いかれえ た 結果 を しょゅつりく する。
にほんご の ぶんしょう は 普通 は 単語 と 単語 の 間 に スペース が ないが、これ に ついては 処理 を かんたん に すたるめ に スーペス あり で にゅうりょく された ぶしんょう しか せょじいう に 処理 しない といこうと に してよい。"
0496デフォルトの名無しさん垢版2018/05/21(月) 21:36:05.44
>>495
ランダムに入れ替えるのはいいけど、元の単語と同じ並びは排除しないと期待外れの出力になるね
0497デフォルトの名無しさん垢版2018/05/21(月) 22:08:38.80ID:GTjH0Q6M
完全にランダムなんだから、結果が同じ並びでもそのまま出力するのが筋だろ
変更するなら日本語の文章の方だ
0498デフォルトの名無しさん垢版2018/05/21(月) 22:24:50.52ID:dve0ZlFL
>>487 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 で つらくれ てたと 思う)が つらくれ たりも しいてた。
今 は もなうい よだうが こかんい の お題 は これ である。つまり、にりょうゅく された 単語 の さしいょ と 最後 は そまのま で とゅちう の もじじんゅじょ を ラダンム に いかれえ た 結果 を しょつゅりく する。
にんほご の ぶしんょう は 普通 は 単語 と 単語 の 間 に スーペス が ないが、これ に つていは 処理 を かたんん に すたるめ に スーペス あり で にうりょゅく された ぶょんしう"
0499デフォルトの名無しさん垢版2018/05/21(月) 22:46:17.95ID:ivTUanMr
単語の最初と最後が正しいと途中の文字順序が違っていても正しい単語と見間違える
というのは無いこともないが、やっぱりおかしな単語はおかしく見えるな
0501デフォルトの名無しさん垢版2018/05/23(水) 19:05:30.98ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

AI2XF
0502デフォルトの名無しさん垢版2018/05/23(水) 22:43:13.42ID:0Sl9hrHV
僕の 知合いりの 知合りいが できた パコソン 一台で お持れちにな金る やり方
役立につ かまれもしせん
グルグーで 検るす索と いかいも 『 ネットぐ方稼で法 モヌレアフニノ 』

AXI2F
0503デフォルトの名無しさん垢版2018/05/24(木) 09:41:04.28ID:c64g4uzw
荒しだけの2連投か
0504デフォルトの名無しさん垢版2018/05/25(金) 03:35:14.49ID:thcmSanV
よく読み比べてみるとよい
0505デフォルトの名無しさん垢版2018/05/27(日) 20:01:12.45ID:zozk6gzj
荒らし業者の連投規制回避の小さな変更

さっさとアク禁になれ
0506デフォルトの名無しさん垢版2018/05/27(日) 20:37:36.93ID:Yc9D3hww
2個目はどう考えても業者じゃなくてスレ住人だろ…
業者はアク禁になってほしいのは同意
0510デフォルトの名無しさん垢版2018/05/28(月) 09:38:09.76ID:KmDsu5r7
人間の認識力はそんなもんなんだろうな。ちょっと似てると同じと判断しまう。そうやって脳は省力化してエネルギーあまり使わないようにしてるのかも知れない。脳を動かすには糖分沢山必要だからな。
0511デフォルトの名無しさん垢版2018/05/28(月) 11:55:04.24
単なる老化
0512デフォルトの名無しさん垢版2018/05/28(月) 16:45:42.01ID:3CvuwD8l
逆に言えばいちいち全部の文字を正確に認識してたらちょっと誤字脱字や書き損じがあっただけで意味がわからなってしまうぞ
0513デフォルトの名無しさん垢版2018/05/28(月) 19:20:35.39ID:wGAafxHd
わからなって
0515デフォルトの名無しさん垢版2018/05/28(月) 21:24:04.06ID:GjCLG5ws
ういね
0525デフォルトの名無しさん垢版2018/06/04(月) 21:34:02.48ID:i7Qhv+/y
あ、ごめん。テキストファイルじゃなくて標準入力からでもいい。
何処から入力するかはたいした問題ではない。
0529デフォルトの名無しさん垢版2018/06/05(火) 00:27:36.36ID:xCctA/+R
>>526
ここはお題スレだから不毛で良いんだよ。パズルを解くようなもんなんだから。
0531デフォルトの名無しさん垢版2018/06/18(月) 23:54:29.00ID:2+ok0PtZ
お題: バイオリズム計算

計算結果の出力だけでも良いが、なんだったらアスキーアートや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
0533デフォルトの名無しさん垢版2018/06/22(金) 00:11:10.49ID:3MP35Wby
お題:
ある数値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


例が間違ってたらゴメン
0541デフォルトの名無しさん垢版2018/06/23(土) 00:40:06.00ID:5Wb6fwhK
数学板じゃなくてもさすがに最小公倍数くらいは
このスレならみんな知ってると思ってた
0542 ◆QZaw55cn4c 垢版2018/06/23(土) 01:29:42.07ID:OlLfOCSW
>>541
公倍数は最小公倍数の倍数
公約数は最大公約数の約数

…当たり前のように思えて実際の証明は結構イメージしにくく、一回読んだだけではよくわからないのでした…
0543デフォルトの名無しさん垢版2018/06/23(土) 01:40:18.34ID:gWvFlQcl
お題:標準入力からhtmlが一行ずつ与えられるのでh1,h2などのhタグを階層化して出力しなさい。タグ内のテキストも一緒に出力し、タグ内にimgが含まれていたらそのaltを出力しなさい。

出力例:
h1 5ちゃんねるにようこそ
....h2 クソスレ乙
........h3 逝ってよし
....h2 オマエモナー
0546デフォルトの名無しさん垢版2018/06/25(月) 15:39:38.08ID:NIfex5vk
任意の文字列を含む有効なビットコインのアドレスを生成するプログラムを作成せよ。有効な形式のアドレスでなければブロックチェーンエクスプローラで検索しても認識されない。ビットコインアドレスの形式については下記サイトを参照。
https://qiita.com/pokochi/items/4d536a4a24067505abea

例:下記サイトの二番目にあるようなアドレス、
https://bitflyer.com/ja-jp/glossary/address
0547533垢版2018/06/27(水) 00:31:17.62ID:vFJz85Ce
>>533
C++(使ってるのはほとんどCですが)
https://ideone.com/S4H5Mo

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

それと>533出題時に考えてたアルゴリズム(手計算でやってましたが)を↓に記述してみました。
こちらは明確に誤った答が出されてしまいます。参考程度に orz
https://ideone.com/HdfYPe
0553デフォルトの名無しさん垢版2018/06/29(金) 09:46:26.83ID:8O35Zxb2
やれるものならやってみろ。

などと挑発してみるとアホが大漁に釣れるかも知れない。
0555デフォルトの名無しさん垢版2018/06/29(金) 10:00:35.27ID:8O35Zxb2
問題は釣れるのがアホなのでものすごく頑張った揚げ句たいしたものができない率が非常に高いことにある。
0556デフォルトの名無しさん垢版2018/06/29(金) 14:17:42.63ID:1XSLHtbi
やっとできた〜
0563デフォルトの名無しさん垢版2018/07/03(火) 10:14:17.19ID:2Hrfam1D
>>561>>562
それなんてエロゲ、じゃない、なんて言語?
0565デフォルトの名無しさん垢版2018/07/04(水) 21:23:39.48ID:N4SCi1OC
情報オリンピックの問題って組合せ最適化ばかりなのかなぁ?
ttps://www.ioi-jp.org/joi/problem_archive-light.html
0566デフォルトの名無しさん垢版2018/07/04(水) 21:52:08.71ID:gFgZc5FG
VXU
0569デフォルトの名無しさん垢版2018/07/08(日) 08:40:53.67ID:PyVF6x+z
鈴木貫太郎
灘中 中学入試 整数問題
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
0571デフォルトの名無しさん垢版2018/07/09(月) 14:21:35.87ID:RPo/jFjY
灘中の問題は、以下の性質を使うものが多い

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

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

だから数字を因数分解して、これらに該当するかどうかで、問題を判別できる
0573569垢版2018/07/11(水) 18:04:55.63ID:I//Y0R5O
>>569
問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
0574デフォルトの名無しさん垢版2018/07/11(水) 18:38:10.32ID:XuPZzMyT
じゃあ問2を酷いコードで
>>569 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);
0575デフォルトの名無しさん垢版2018/07/11(水) 21:04:09.51ID:9T5mO0zj
コンピュータを使ってブルートフォースで答えを探す方法はわかってもコンピュータを使わずに数学的に解く方法が思い浮かばない。
しかしそれを小学生が解いて入学するという現実。orz
0576デフォルトの名無しさん垢版2018/07/11(水) 23:18:42.60ID:83LTUfxJ
>>569 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 "
0577デフォルトの名無しさん垢版2018/07/12(木) 00:00:29.98ID:gpOSM7dO
このスレprologニキっていないの?
手続き型以外の解法見たい
あとJニキ最近見なくて寂しい
0578デフォルトの名無しさん垢版2018/07/12(木) 01:08:11.22ID:gc75XwOp
>>569
問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桁ずつ分解するのに余計な手間がかかりそう)。
それよりも総当たりで解いた方がコンピュータ的には手っ取り早い気がしますね。
0580578垢版2018/07/12(木) 07:07:01.02ID:gc75XwOp
>>579
作成される数字を順列とみなした時に
「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

若干手続きはコンピュータ向けと言えなくもないですが、やはりプログラミングするには手間ですね。
0581デフォルトの名無しさん垢版2018/07/12(木) 07:41:52.96ID:KB59nVpm
問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が答え
0583デフォルトの名無しさん垢版2018/07/12(木) 09:03:09.86ID:ax9CLQnp
問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秒くらい
0584デフォルトの名無しさん垢版2018/07/12(木) 09:17:45.00ID:kqFyQCjZ
やっぱ紙と鉛筆で解く問題だよね。
最初から解析的に解けない問題出して欲しい。
0585デフォルトの名無しさん垢版2018/07/12(木) 10:06:30.92ID:nIR9VMIg
>>580
小学生が解く場合に途中で 8658+666x=13320 のような数学的表現で考えるのはありなのか?
回答者個人にそれができるかできないかの問題ではなく小学校が教えている範囲にそれが含まれるのかの問題ね。
もし含まれていないとしたら他の方法で解く事が可能という事になる。
0587デフォルトの名無しさん垢版2018/07/12(木) 14:03:35.77ID:Jbx8ub/k
36の倍数は、4, 9 の倍数で、それらの特徴を利用できるかどうかだけ

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

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

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

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

貧富の格差、貧富の遺伝
0589デフォルトの名無しさん垢版2018/07/12(木) 18:14:20.08ID:ax9CLQnp
>>586
ものすごくかみ砕いて言うと
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であると確定する
0593デフォルトの名無しさん垢版2018/07/13(金) 07:35:11.88ID:isSSIGbX
>>569
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
0594デフォルトの名無しさん垢版2018/07/13(金) 08:03:43.23ID:isSSIGbX
>>569
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
0595デフォルトの名無しさん垢版2018/07/13(金) 08:58:11.48ID:IlVyAeDp
rubyならさくっとワンライナーで
p (10000-10000%-36).step(10**5,36).find{|i|(i.digits&[2,3,5])[2]}
#=> 13572
0596569垢版2018/07/13(金) 16:26:20.44ID:oo2UOY38
>>569
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
0598デフォルトの名無しさん垢版2018/07/14(土) 13:47:04.74ID:3J9Q4qmi
そろそろ新しいお題を。
既出なら申し訳ない。

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

追加お題:
上記のマージソート処理の際、作業領域を元のデータの半分の量しか確保せずにソートを実行するプログラムを作成しなさい。
0599デフォルトの名無しさん垢版2018/07/14(土) 15:13:06.98ID:QznZ4U7X
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
0601デフォルトの名無しさん垢版2018/07/14(土) 15:57:46.49ID:ETmmav0O
スタック不可だとスタック操作が隠蔽されてる高級言語はほぼ使用出来ない
無理やりCやC++でやるとしてもローカル変数や関数呼び出しを殆ど封印しなければならない
これを良い問題と見るか悪い問題と見るかは分からないが俺はやる気が出ない
0602デフォルトの名無しさん垢版2018/07/14(土) 16:00:11.93ID:4RxIMQwD
>>599
組み合わせか

北大の湊 真一のZDD とか。
本も出てる
0604デフォルトの名無しさん垢版2018/07/14(土) 18:41:01.92ID:3J9Q4qmi
>>601

すみません。>598の「スタック」はデータ構造としての利用のみを想定していて、他関数呼び出しの禁止などは意図してませんでした。
問題文が不明瞭ですみません。

>>600
ご期待に添えず申し訳ない。他のお題を思いついたら、また出題させていただきます。
0605デフォルトの名無しさん垢版2018/07/14(土) 20:04:39.81ID:wFLY+TGv
お題: マップの広さと部屋の個数及び部屋間の繋がりが与えられた時、ダンジョンを作成せよ
・ダンジョンは部屋と通路からなる
・部屋は少なくとも3x4の大きさを持つ
・通路の幅は1
・部屋同士は接しない
・マップ外に部屋や通路は無い
一応、想定としては標準出力に'#'と'.'で表示を考えてる
生成方法は自由だからゲーム的面白さのあるマップ作っても良い
0607 ◆QZaw55cn4c 垢版2018/07/14(土) 21:29:48.92ID:CBXc6tpD
>>604
>>598 の問題はおもしろいし、お題として成立していると思います
・再帰を使用しないマージソートを実装
・作業領域を元のデータの半分の量しか確保せずにソートを実行する
で考えているところです
0615デフォルトの名無しさん垢版2018/07/15(日) 00:23:22.27ID:upVjqm6g
>>609
クラスもありかも知れない。クラスの中にはメソッドがある。メソッドはメソッドであって関数ではない。
あるいは procedure でも良いのかも知れない。procedure は手続きであって関数ではない。
サブルーチンもありかも知れない。
昔のマイコン用のBASICでVRAMに直接 POKE で値を書き込んだりするのもありかも知れない。

もはや一休さん並のトンチであり言葉遊びである。
0629デフォルトの名無しさん垢版2018/07/15(日) 13:13:37.51ID:9lve5q3D
これ宿題じゃないですよ
ここに書く前にコードも書いてたしもっと効率いい方法ここの人達なら知ってそうだと思ったから
0630デフォルトの名無しさん垢版2018/07/15(日) 13:15:21.60ID:kiP00q0W
>>599
1 2 3 4 -> 001002003004
97 98 99 100 -> 097098099100
0632デフォルトの名無しさん垢版2018/07/15(日) 14:14:11.66ID:9lve5q3D
>>619のもっと効率悪い奴だよ
元は100C4じゃなくて28C4だったけど
int cc[4][32][32];
こんな二次元の配列使ってた
0635デフォルトの名無しさん垢版2018/07/15(日) 14:33:39.46ID:ugn7dRUi
それの何が不満?
何をどう改善したいのかわからないと

テーブル作成の速度?
テーブル検索の速度?
コードサイズ?
バイナリサイズ?
コードの分かりやすさや移植性?
0639デフォルトの名無しさん垢版2018/07/15(日) 21:44:41.62ID:WaX+Eind
605、出題しておいて何だがこれめっちゃ難しいな
マップの大きさの制約があると通路引くのが難しすぎる
0644 ◆QZaw55cn4c 垢版2018/07/16(月) 11:53:01.88ID:PLRcL5uS
>>643
一般に、再帰を非再帰に書き下すのは難しいのです…
0645デフォルトの名無しさん垢版2018/07/16(月) 13:51:43.31ID:yJ4dWfp7
お題
ポーランド記法による計算機を実装せよ
演算子は加算(+)と乗算(*)をサポートすること

* + 1 5 + 2 3
=> 30

* * * * 2 3 4 5 6
=> 720
0649デフォルトの名無しさん垢版2018/07/16(月) 14:36:11.63ID:dBK+PWCu
>>645 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
0651デフォルトの名無しさん垢版2018/07/19(木) 21:45:59.55ID:bv0mlJEL
お題

N個の整数(a_1, a_2, ..., a_n, ..., a_N)と*+/()を使った数式の値が、ある整数aにもっとも近い数式とその値(実数)を出力せよ

引き算はなし
a_n = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
0653デフォルトの名無しさん垢版2018/07/24(火) 10:08:13.30ID:Dnr6z2Ly
>>606
>>605のは要はローグライクの部屋を作れってことだろ

出題者の説明不足
画像の1枚でも張れば見て分かる

ttps://cdn-ak.f.st-hatena.com/images/fotolife/g/gaou2/20170905/20170905111314.png
0660デフォルトの名無しさん垢版2018/07/26(木) 03:14:46.46ID:64IGnOgv
いやこれは総当たりでは計算量的に無理だろ
コードは書けるだろうけど
存在することを帰納法で証明するしかないから数学板の問題だ
0661デフォルトの名無しさん垢版2018/07/26(木) 09:13:59.71ID:1RynmuAu
まーた数学コンプレックスが暴れてるのか
数オリに出るくらいの賢さがないから計算機の力も借りて解くっていう方向性は別にスレチじゃないだろ
0662デフォルトの名無しさん垢版2018/07/26(木) 09:22:17.32ID:NOsumJU/
ここでレスリングの話しだして苦言を呈されると「まーたレスリングコンプレックスが暴れてるのか」
極端に言うとこういうこと。
レスリング板、数学板があるだろ。
わざわざここでオナニーしたいのは専門以外の板でマウント取りたいのかな?
そんなひねくれた根性だから現実世界でミジメな生活なんだよ。
0663デフォルトの名無しさん垢版2018/07/26(木) 09:30:59.20ID:1RynmuAu
早速暴れてて草
正攻法で数オリの問題を解く話を延々してたんならうざいけど
飽くまで計算機使って解いてみようぜって言ってる人にまでその理屈が当てはまるわけないだろ
それとも数学だけじゃなくて論理的思考もできないタイプか?それなら納得だわw
0664デフォルトの名無しさん垢版2018/07/26(木) 10:44:43.72ID:NOsumJU/
数学で解ける問題をわざわざコンピューターでムダな解き方するの??
突き詰めていくと数学で出した解法そのまま引き写すだけになるのが分かりきってるのに。
0665デフォルトの名無しさん垢版2018/07/26(木) 10:51:14.48ID:1RynmuAu
だからわざわざ「数オリに出るくらいの賢さがないから」って言ってるだろ日本語読めねえのかよ
そりゃ灘の入試レベルならその通りだろうけど数オリで正解率1割切ってたような問題なんだから計算機使ったアプローチしてみるのもプログラミングのお題としては面白いだろ
それともなんだ、円周率の計算だってペンと紙でできるんだから無駄だっていうのか?w
そんな極論言うレベルの頭だから数学もできないんだよw
0666デフォルトの名無しさん垢版2018/07/26(木) 11:36:12.38ID:64IGnOgv
そういう無駄に一般化した話も結構だけど、
個別具体的な話として>>597は計算機を併用することに効果が無いから数学の問題だと言ってるんだよ。

2018を解けるほど効率化できるなら既に人力で解けているだろうからね。
0667デフォルトの名無しさん垢版2018/07/26(木) 13:48:16.24ID:YvrMO5FL
それは総当たり以外にうまい方法が思い浮かばないから言えるだけでしょうよ。
あと素数判定アルゴリズムなんか考えればわかるけど、効率化できることと人力で解けることに相関はないぞ。
少なくともスレチではないと思うよ。
0672デフォルトの名無しさん垢版2018/07/27(金) 00:30:20.41ID:1FlI+KkW
作るのは無理な気がするがよーわからん

一番大きい数値 1+2+…2018 = 2037171 は差の絶対値で作れないので最下段確定
一番大きい数値を出来るだけ上段に伝搬させるために小さい数値(1~2017)と組み合わせていっても最上段に残るのは 2018
→ 2019 以上と組み合わせると 2017 未満の数値がダブる
最下段で 2037171 と 1 を組み合わせた場合、 2037169 も最下段に設置する必要がある
2037169 は 1~2018 の大部分と組み合わせられないので上のほうまで伝搬できずにアウト
0673デフォルトの名無しさん垢版2018/07/27(金) 01:35:56.64ID:DQ/IIgai
その長々とした理屈は2018が7でも6でも同様のことが言えるよね
そして7や6には解がある
0676デフォルトの名無しさん垢版2018/07/27(金) 04:54:59.02ID:1FlI+KkW
5以下の場合は数字が足りなくなる前に最大値からの流れに合流出来てるんじゃね?
0680デフォルトの名無しさん垢版2018/07/27(金) 19:00:06.01ID:2ZGMtSH+
>>679

質問です。
n>99の場合はズレが生じてくると思いますが、その時はどうしますか?
それともn≦99で範囲を絞ってもよろしいんでしょうか?

まぁ、私が作れるかどうか分からないんですがorz
0683デフォルトの名無しさん垢版2018/07/28(土) 12:28:46.99ID:SHZi2qln
まずは数学から入るか

中心つき六角数 - 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
0689デフォルトの名無しさん垢版2018/08/01(水) 15:31:54.60ID:3rDDnIHy
ちょっと待ってね。温度計持ってくるから。
0692デフォルトの名無しさん垢版2018/08/02(木) 00:18:21.78ID:vClc7nAi
>>688
awk
Linux 用

awk '{printf "%.3f℃n", $1 / 1000}' /sys/class/thermal/thermal_zone0/temp

実行例

56.000℃
0693デフォルトの名無しさん垢版2018/08/02(木) 01:04:29.34ID:vClc7nAi
あれ?\n が抜けた。
これね。

awk '{printf "%.3f℃\n", $1 / 1000}' /sys/class/thermal/thermal_zone0/temp
0696デフォルトの名無しさん垢版2018/08/10(金) 02:32:41.77ID:3Gbr2Rmh
鈴木貫太郎
灘中 中学入試問題シリーズ 整数問題
https://youtu.be/98U2qVDQltc

6桁の整数、5AB,C15 が999 の倍数である時、ABC を求めよ

答え
A=8, B=4, C=4
0699デフォルトの名無しさん垢版2018/08/10(金) 04:27:27.01ID:MBG3l1c9
お題:与えられた正の整数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
0701デフォルトの名無しさん垢版2018/08/10(金) 10:02:14.32ID:GIxLf6/p
>>696
500015 + <ABC00> = 0 mod 999
<=> 4151 + <ABC> = 0 mod 999
<=> 4151 + <ABC> = 999*5
<=> <ABC> = 844

>>699 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
0702デフォルトの名無しさん垢版2018/08/10(金) 10:56:59.12ID:EBuB6o8O
>>696
何も考えてないPerlのワンライナー

perl -e 'for(0..999){$n=sprintf"5%03d15",$_;if($n%999==0){print"$n\n"}}'
584415
0703デフォルトの名無しさん垢版2018/08/10(金) 11:16:24.27ID:EBuB6o8O
>>699
Linux等で動くGNUのbcコマンド
プログラムをファイルに入れておいてbcの引数で指定し、変換させたい数値は標準入力から読ませる。

ibase = 10
n = read()
for (i = 2; i <= 16; i++) {
obase = 10
print "base(", i, ") --> "
obase = i
print n, "\n"
}
0706デフォルトの名無しさん垢版2018/08/10(金) 14:48:17.70ID:MBG3l1c9
>>700
既出でしたか 失礼しました
では追加でもう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
0710デフォルトの名無しさん垢版2018/08/10(金) 18:30:15.99ID:GIxLf6/p
>>706 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
0712709垢版2018/08/10(金) 19:22:50.97ID:q2LOavXt
>>711
あ、そうか。その方が簡単だな。
0714デフォルトの名無しさん垢版2018/08/11(土) 00:01:26.30ID:DgZEeL87
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
0715デフォルトの名無しさん垢版2018/08/11(土) 02:38:16.74ID:7kLiHGgf
>>713
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++;
}
0718デフォルトの名無しさん垢版2018/08/11(土) 07:37:04.51ID:N9ICkOCi
みつかりました
そんなに昔じゃなかった
2年半前
41兆くらいまで求めてます

マルチスレッドではありませんでした
処理内容はよく覚えていません

素数表作成
ビットパターン作成
ふるい

のようなコメントがあります

105単位でなにかやってます
0719デフォルトの名無しさん垢版2018/08/11(土) 09:37:18.90ID:y6G1YdWM
だんだん思い出してきました
6n+1, 6n+5 に対応するビット列を保持
小さな素数の倍数はマスクを作ってAVX命令でANDしていって
大きな素数の倍数はp(210n+48個の値) にしぼって
ビット命令でひたすらふるう感じ

キャッシュサイズを考えて小さなバッファでやってます
0721デフォルトの名無しさん垢版2018/08/12(日) 13:15:41.49ID:DNU8qmV7
お題:
ロト6で申込数字のいずれかが必ず5等以上に当選する
最小の申込数字の組み合わせを作ってください

ロト6は01〜43の数字から異なる数字6個を順番不問で選び
申込数字6個のうち3個以上が本数字と一致すれば5等以上に当選となります
0722デフォルトの名無しさん垢版2018/08/12(日) 14:21:49.33ID:ZHEExUj+
>>721
・5等の当選条件を満たしている
・5等以上のいずれかの当選条件を満たしている
この2つは同値なの?
0724デフォルトの名無しさん垢版2018/08/12(日) 15:09:35.79ID:ZHEExUj+
>>723
1〜5等に該当するならば必ず当選番号と同じ数字が少なくとも3つ入っているということがはっきりしない限り解けないでしょ
0725デフォルトの名無しさん垢版2018/08/12(日) 15:11:11.96ID:ZHEExUj+
ごめん
申込数字6個のうち3個以上が本数字と一致すれば5等以上に当選となります

申込数字6個のうち3個以上が本数字と一致すれば5等に当選となります
と読み間違えてたわ
0730デフォルトの名無しさん垢版2018/08/12(日) 15:29:22.68ID:1gNSypiF
>>724
3個以上一致 <===> 5等以上に当選
3個以上一致 ====> 5等以上に当選
のどちらかをたずねたのかと思った
0731デフォルトの名無しさん垢版2018/08/12(日) 15:39:13.61ID:ZHEExUj+
>>730
そもそもこっちが>>722>>724で「申込数字6個のうち3個ちょうど本数字と一致すれば5等に当選」って誤解してたのが始まりなんだ
わけわかんないこと言ってごめんね
0732デフォルトの名無しさん垢版2018/08/12(日) 17:47:14.42ID:9O3GHV+n
>>706 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 "
0733デフォルトの名無しさん垢版2018/08/12(日) 18:43:07.08ID:9O3GHV+n
>>713 Squeak/Pharo Smalltalk で 100億まで

| count |
count := 0.
Integer primesUpTo: 1e10 do: [:prime | count := count + 1].
count '=> 455052511 '

組み込みだけど、書くとしても同じアルゴリズムで書くと思うので…

https://ideone.com/zKMZYx
0736デフォルトの名無しさん垢版2018/08/12(日) 23:20:11.13ID:YPN3vVTA
>>734
>>721って、
・抽選される6個の数字が43C6通りのどの組み合わせでも5等以上が当たるようにくじを買う。
・くじの購入数はできるだけ少なくなるようにする。
ってことじゃないのん?
0739デフォルトの名無しさん垢版2018/08/13(月) 04:38:57.55ID:z6+TJcGX
>>735
いいのかこんなんで?

cd /etc
grep localhost hosts
0742デフォルトの名無しさん垢版2018/08/13(月) 16:34:44.91ID:z6+TJcGX
>>741
Linux 等の UNIX 系OSで

ping -b ブロードキャストアドレス

とやると同じセグメントに繋がっているやつは ICMP ECHO を返して来て IP アドレスが分かるかも知れない。
但しファイヤーウォールの設定で返さないかも知れない。また他のセグメントにはパケット送らないのでわからない。
0744デフォルトの名無しさん垢版2018/08/17(金) 15:41:32.33ID:N93NyTwd
身長と体重がいくつか与えられるのでBMIを求めなさい
なお身長と体重は1以上1000未満の整数とする
出力精度は小数第三位を四捨五入
各言語で一番短くかけた人が勝ち

例 ruby
while gets

end

# input
150 50
160 55
180 120

# output
0745デフォルトの名無しさん垢版2018/08/17(金) 15:47:03.36ID:N93NyTwd
ミスった。

単位は身長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
0748デフォルトの名無しさん垢版2018/08/17(金) 21:08:30.56ID:7hC1UKUq
>>744
Perl
https://paiza.io/projects/4DM4_8fx_EiOXO4D3aOV4A

普通ならダブルクォーテーション使いそうな箇所で qq() 使ってクォートしている理由は今Androidのタブレット使っててうまく入力出来なかったため。
0750デフォルトの名無しさん垢版2018/08/18(土) 02:50:37.57ID:K3y6E3T8
鈴木貫太郎
灘中
https://youtu.be/BnS7vMsVV2s

6桁の整数、ABCDEF の一番上の位のAを、
一の位へ移動した数、BCDEFA が、元の数の3倍になるとき、
この条件を満たす、元の数をすべて(2つ)答えよ

ヒント。x = BCDEF とおいて考える

答え、142857, 285714
0752デフォルトの名無しさん垢版2018/08/18(土) 15:32:13.56ID:h7OdrOPI
>>744
Ruby 43 bytes
#!ruby -pa
$_='%.2f'%eval('1e4/'+$F*'**2*')

>>750
3 * ABCDEF = BCDEFA ∧ A != 0
<=> 42857 * A = BCDEF ∧ A != 0
<=> 42857 * A = BCDEF ∧ A = 1, 2
<=> ABCDEF = 142857, 285714
0754デフォルトの名無しさん垢版2018/08/19(日) 01:18:54.67ID:tX8wxXbT
お題:
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
0758UNIXプログラミング質問スレより垢版2018/08/21(火) 03:04:43.91ID:34Jmks75
お題:【構造のあるテキストの処理】各項目の内容をそれぞれソートして元のテキストに埋め込め。
====== 標準入力 ==========
* Fruit
apple
banana
orange
banana

* Animal
dog
cat
penguin

====== 標準出力 ==========
* Fruit
apple
banana
orange

* Animal
cat
dog
penguin

条件:ソートには外部コマンドを用いること。
0759758垢版2018/08/21(火) 03:11:53.68ID:34Jmks75
ソートに外部コマンドを使うのは、テキストの処理を取り替える拡張を想定しています。
例えば sort -u コマンドを tr '[a-z]' '[A-Z]' に置き換えて
* Fruit
APPLE
のようにできるようにしたい。

UNIXプログラミング質問スレにて、
このような処理はシェルスクリプトには荷が重く Powershell や Ruby が向いている、みたいなことを伺いました。
ぜひ回答を参考にしたいです。
0760デフォルトの名無しさん垢版2018/08/21(火) 14:35:58.26ID:2YpoFUMY
>>758 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 * $/
0761デフォルトの名無しさん垢版2018/08/21(火) 14:40:47.02ID:2YpoFUMY
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 * $/
0763デフォルトの名無しさん垢版2018/08/22(水) 01:56:27.69ID:PmiUKg2L
>>758 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区切りでチャンク分け。構造がもっと複雑になるとこの方針では対応できない。
0765デフォルトの名無しさん垢版2018/08/22(水) 04:46:03.18ID:h82tfzI1
単純に、別々のファイルに、分割すれば良いのでは?

* Fruit のファイル
* Animal のファイル

各ファイルを、sort, unique する
0766765垢版2018/08/22(水) 05:05:39.72ID:h82tfzI1
一旦、別々のファイルにしたなら、PowerShell で、

cat .\test.txt | sort | gu

gu は、Get-Unique のエイリアス。
漏れのPowerShell では、uniq のエイリアスは使えない
0769デフォルトの名無しさん垢版2018/08/22(水) 09:44:37.32ID:zudhoHB+
>>767
Linuxのディストリビューションでは最初からインストールされてるのがよくあってある程度有名で、sh互換でshしか知らなくても書けるからではないかな。
それとWebの実行環境があるというのも理由かも。こういう所で公開するのには都合が良い。
0770デフォルトの名無しさん垢版2018/08/22(水) 12:27:54.30ID:AfGRGNs6
>>769
そうなんですね!
みんなの回答見てると正規表現や少ないコードや難しい表現でコーディングできてて関心します‥
自分にはとても到達出来ない‥
0771デフォルトの名無しさん垢版2018/08/22(水) 15:46:06.44ID:PmiUKg2L
>>758 zsh
setopt rcquotes; sed -E -e 's:^(\* .*):{ echo ''\1''; sort -u; echo } << *:' -e 's:^$:*:' | zsh
xargsの区切り文字の辛さからは開放されたが、echo ''\1'' がイマイチだ。

なるほど、構造のあるデータはむしろファイル階層として表現したほうが自然か…
0772デフォルトの名無しさん垢版2018/08/22(水) 23:06:19.28ID:YlEU3d3x
>>758 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
$
0773デフォルトの名無しさん垢版2018/08/22(水) 23:55:42.77ID:h82tfzI1
64ビットWindows10 なら、WSL で、Ubuntu を入れると、
bash, vim, Python は最初から入っている

WindowsのExplorer では、BOMなしUTF-8 のファイルは検索できないから、
WSL でLinux側から、grep で検索している

シェルスクリプトの欠点は、パイプラインがテキスト渡しになる。
オブジェクトの型が無くなって、すべて文字列になる

一方、PowerShell ではオブジェクト渡しだから、オブジェクトの構造・型が維持できる

>>758-759
外部コマンドを切り替えるという抽象的な処理を、処理間にはさむのは難しい。
すべての処理の冒頭か最後で、一括でフィルターする方がバグらない
0774デフォルトの名無しさん垢版2018/08/23(木) 00:19:08.54ID:FMBOl46f
>>773
なるほど…
Powershellでの完全な回答例を見せていただけませんか?
標準入力からファイルに落として出力に吐くまで。オブジェクト渡しの雰囲気を感じたいです。
0775765垢版2018/08/23(木) 09:28:38.07ID:qUZ5eK5Q
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 として、各ファイルを処理した
0776デフォルトの名無しさん垢版2018/08/24(金) 05:00:24.02ID:QxK4Y8yu
点が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点までの距離
0778デフォルトの名無しさん垢版2018/08/24(金) 08:02:12.41ID:ZkSPfVdV
「知っている」の主語が点に見えるけど
そうじゃないよね?

なんでそういう文にしたの?
0779デフォルトの名無しさん垢版2018/08/24(金) 10:33:50.94ID:phPhGhWW
連結リストを使って、出来上がったグラフが連結なら求められる
つまり、出来上がったグラフが二つ三つそれ以上に分かれている非連結グラフになってると、距離は分からない

……直感的には多分こうだが、何かしらの証明は必要
「連結グラフだが距離が分からない」反例があればいい
0780デフォルトの名無しさん垢版2018/08/24(金) 11:28:11.41ID:qtSNV1ih
>>776
点が10個あるなら例1,2両方とも判断不能。どっちもあと最低7個必要
しかも直線がRなのかR∪∞∪-∞なのかで解が変わるから提示しろ
あと出力はともかくデータの与えられ方くらい提示しろ
0781765垢版2018/08/24(金) 12:34:38.87ID:ZgK6e0Tb
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か所で呼ぶのが、ダサイ
0782デフォルトの名無しさん垢版2018/08/25(土) 17:43:06.40ID:nE7N9dPk
お題
将棋の初期状態の駒40枚を
利き筋に他の駒がないように配置する
0785デフォルトの名無しさん垢版2018/08/25(土) 20:55:52.54ID:N/q1MSK+
お題を出す前に出題者は自分の解答を(解くことが可能かの確認も兼ね)作っておくのもルールだ
適切な入出力例や問題文にあるべき条件が抜けてるっていうのはそれをやってない証拠
0787デフォルトの名無しさん垢版2018/08/26(日) 08:39:25.15ID:8NHhsyIb
トランプの配置についてのアルゴリズムを考えてます。
トランプの横幅をX
トランプの高さをYとし
並べるトランプは偶数枚
全てのトランプを配置した時の全体を、トランプ配置と呼ぶとして
トランプ配置の横幅と縦幅の割合を、おおよそX:Yとしたい

この場合、アルゴリズムはどう考えたらいいでしょうか?
0788デフォルトの名無しさん垢版2018/08/26(日) 09:35:40.65ID:/JFPzkHn
ゴリ押しの総当たり

並べる枚数横にx縦にyが無尽蔵に大きくなれば比率に近づく
並べるトランプの上限が決まって無くて偶数枚だけが条件なら延々と並べる枚数を増やせばいい
一兆枚くらい並べれば比率はX/Yに近づく
1000000000億兆枚くらいのトランプを使えば横幅X高さYなんて充分に蟲出来るから全体の割合を調整するのは枚数が多ければ多いほどラク
10那由多ほど並べれば、本当にカードは点くらいなもので、縦横比率はx、yの枚数だけで決まる
0790デフォルトの名無しさん垢版2018/08/26(日) 09:59:10.89ID:O9adGcKd
>>788
バカなの?
> 並べるトランプの上限が決まって無くて偶数枚だけが条件
なら、縦横2枚ずつ(計4枚)並べればいいだけ
0792デフォルトの名無しさん垢版2018/08/26(日) 13:16:22.70ID:HHP/3bjy
>>787
┌─┐
│ ?│
└─┘
これを偶数枚並べて縦横比同じにするなら
こうだよね

┌─┬─┐
│ ?│ ?│
├─┼─┤
│ ?│ ?│
└─┴─┘
アルゴリズムもクソもないように思うのだが?
問題の書き方間違ってない?
0794デフォルトの名無しさん垢版2018/08/26(日) 16:57:45.44ID:2xrJOS4Z
枚数nに対して p * q = n を満たす正の整数 p, q の内 |p - q| / |p^2 + q^2| が最小になる組み合わせを求めるだけでしょ?
0795 ◆QZaw55cn4c 垢版2018/08/26(日) 23:44:29.53ID:TLwXHnMN
https://mevius.5ch.net/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」とすると、「メモリーが足りなくなった」といって途中で止まるのです…困りました…
0796 ◆QZaw55cn4c 垢版2018/08/26(日) 23:57:13.93ID:TLwXHnMN
>>795
条件を追加します
ハードリンクやシンボリックリンクは考えなくともよい
xcopy パス1 パス2
のパス2 がパス1 の下にある場合、実装がまずいと永遠にコピーし続ける困ったことになるが、それも考慮しなくてもよい
(今回やりたいことは、「xcopy c: x:/tmp」であるので、これが問題なく動けばそれでよい…)
0800デフォルトの名無しさん垢版2018/08/27(月) 10:42:11.16ID:ywsjsNTA
>>795
Windowsならエクスプローラ使ってただコピーするのでは何か不都合があるのか?

まあ、お題としてそういうのなしで作れというのはアリだが、なんとなくWindowsの場合はエクスプローラが使っているのと同じライブラリ関数を一回呼び出すだけで終わってしまいそうな気がしてならない。
0805デフォルトの名無しさん垢版2018/08/27(月) 21:37:25.51ID:l2rfNjjd
>>802
トランプの横幅がYで高さがXでしょ?
で、偶数枚並べてX:Yにするんでしょ?
4枚でなるじゃん。およそどころかぴったりX:Yに。
0806デフォルトの名無しさん垢版2018/08/27(月) 21:41:44.66ID:l2rfNjjd
ごめん。逆か。まあしかしわかるよね。
0807 ◆QZaw55cn4c 垢版2018/08/28(火) 00:09:17.09ID:mZeP8xuo
>>795-796
https://mevius.5ch.net/test/read.cgi/tech/1434079972/52

>>799
有用な情報ありがとうございます
なるほど、256バイト以上のパスは受け付けない、ですか…
MSDN https://msdn.microsoft.com/ja-jp/library/cc429198.aspx
なんかをみると、「この関数の Unicode 版を呼び出し、パスの前に "\\?\" という接頭辞を追加してください。」と書いてありますね
でも、C++ でユニコードバージョンに対応させるってどうするのだろう?#define UNICODE だけではダメみたいだし…
0810 ◆QZaw55cn4c 垢版2018/08/28(火) 00:29:32.20ID:mZeP8xuo
>>809
>適切なスレ
って、あなたはどこを想定しているのですか?
0813デフォルトの名無しさん垢版2018/08/28(火) 16:31:53.27ID:C1AWmFJx
>>812
与えられると何処に書いてある?
0817デフォルトの名無しさん垢版2018/08/28(火) 23:00:50.43ID:QGrjhPlD
>>816
ぱっと見て
カードの数nとカードの縦と横の長さx, yが与えられたときに
総てのカードを並べて作った矩形の縦と横の長さをX, Yとして
|X/Y - x/y|が最小になるような(X, Y)を求める問題かと思ったんだけど
というか>>787は言葉足らず過ぎるしアスペ云々は言い過ぎだったわすまん
0818デフォルトの名無しさん垢版2018/08/28(火) 23:15:02.28ID:Gymzh0gE
n枚を矩形になるように並べる
なんてことは書いてないけど

あと
『|X/Y - x/y| が最小』
は数学的センスが無い
x,yを入れ替えても値が変わらない誤差の定義にしたい
0819デフォルトの名無しさん垢版2018/08/29(水) 00:49:59.45ID:e0sa1Xvi
>>818
矩形じゃないと縦幅と横幅が定義できないからそこはいいんでない?
>『|X/Y - x/y| が最小』は数学的センスが無い
はその通りだね
m := min{x, y}, M := max{x, y}, λ_x = X, λ_y = Y として
として |m/M - λ_m/λ_M|の最小値を求めるべきだね
0821デフォルトの名無しさん垢版2018/08/29(水) 08:06:49.08ID:e0sa1Xvi
>>820
『どんな形に並べても縦と横の方向が決まっていれば縦幅と横幅はある』
これは偽
少しは検討してから書き込んだらどうなんだ

後半が理解できないなら「テンソル」で調べてね
0822デフォルトの名無しさん垢版2018/08/29(水) 08:18:18.70ID:cDvJjkNL
横方向をx軸、縦方向をy軸としたx, y平面上に
トランプを並べるとする
有限サイズ(>0)のトランプを有限枚(>0)並べるので
トランプは有界で非空

xの上限 - xの下限 = 横幅
yの上限 - yの下限 = 縦幅
0828デフォルトの名無しさん垢版2018/08/29(水) 19:00:11.58ID:bZ2D0xRL
>>815
お前は勝手に汲み過ぎ
0830デフォルトの名無しさん垢版2018/08/29(水) 19:10:03.95ID:bZ2D0xRL
>>829
君が元の問題を書いた人か?
0831デフォルトの名無しさん垢版2018/08/29(水) 19:24:13.92ID:5cagDv75
お題:標準入力から(で始まり)で終わる顔文字が与えられる。この顔文字を太らせて標準出力に出力しなさい。
0832デフォルトの名無しさん垢版2018/08/29(水) 19:40:07.15ID:e0sa1Xvi
>>830
ちげーよ、出題者ならまともな条件追加してるわw
自分では何も提示しないのに難癖つけてくるアホがうざったいだけ
0836デフォルトの名無しさん垢版2018/08/29(水) 20:11:16.34ID:V4Xw96gq
>>787

並べるのが矩形に限らないのであれば
>>791のとおり任意の枚数で可能

矩形に並べるとして
枚数が与えられないなら>>792のとおり4枚で可能

与えられるなら>>794のとおり
与えられた自然数を最も僅差の2つの自然数の積で表す問題と同値
ただこの場合、問題文の不備を不問にしても
>並べるトランプは偶数枚
って条件がなぜ必要になるのか疑問が残るが…

いずれにしても問題としては終わってるので
これ以上長引かせるのは不毛
0839デフォルトの名無しさん垢版2018/08/29(水) 22:47:22.89ID:AXEWk4o3
書かれていない条件は勝手に解釈すればいい
その条件の問題を解くのが楽しいと感じるならその条件で回答すればいいだけ
グダグダと問題自体を統一する必要は無い
0848デフォルトの名無しさん垢版2018/08/31(金) 21:58:19.14ID:UbfaileO
>>247 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 "
0851デフォルトの名無しさん垢版2018/09/01(土) 10:57:14.89ID:Wx/QBEc1
>>849
数式というか文字が何を表しているのか分からない。最初の { の直前の _ は何を意味するんだ?
更に { } で括った部分と ( ) で括った部分の違いは?

まあわかったとしても解く気は起きないかも知れないので面倒なら解説しなくても良い。
0855デフォルトの名無しさん垢版2018/09/02(日) 04:36:43.72ID:4Jf6YH6e
>>852
そういう意味だとすると>>849はこうかな。

Kotlin
https://paiza.io/projects/3ObT5j3XNNkuKqDXdk6E7g

しかし、本当にこれで全てなのかは不明。
Double 型で計算できる所まで計算して結果が整数の時の n を出してるだけなので。
0858デフォルトの名無しさん垢版2018/09/02(日) 16:00:22.41ID:4Jf6YH6e
ごめん。>>855は3倍するのを忘れていた。
0860デフォルトの名無しさん垢版2018/09/02(日) 17:46:26.05ID:4Jf6YH6e
>>857
あれ?そうなの?
じゃあプログラム何か間違ってんのかなあ?
0861デフォルトの名無しさん垢版2018/09/02(日) 18:31:32.88ID:jaQJTA9z
>>860
double型の精度の問題
計算結果は指数関数が支配しているからnが大きくなると有効桁数が足りなくなる
0862デフォルトの名無しさん垢版2018/09/02(日) 18:47:50.05ID:4Jf6YH6e
>>861
なるほど。とすると32以上はもうダメな値ってことだな。
かといってBigDecimalとか使って延々と計算しても意味ないな。
数学的に答え出てるし。
0864デフォルトの名無しさん垢版2018/09/08(土) 22:16:42.52ID:vC/rF1cv
質問スレからパクってきた配列の易しい問題

質問者は他レス見るにプログラミング自体経験なさそうだが
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の選択した数字は変えたいです

このような場合自分でプログラミングしないといけないのでしょうか?
0867デフォルトの名無しさん垢版2018/09/08(土) 22:56:28.52ID:DvgxKi+t
>>864 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.
0868デフォルトの名無しさん垢版2018/09/09(日) 10:46:50.62ID:yaYW83OX
>>864 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個ランダムで選ぶ乱数ツール使えばいいだけなのに質問者が謎
0878デフォルトの名無しさん垢版2018/09/09(日) 14:08:44.70ID:x2owZh/r
                イ             '、
                /       ハ        ',
                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:" )     ─ ' ¨: : : : | \     / |: : : \
0879デフォルトの名無しさん垢版2018/09/09(日) 14:09:07.67ID:0efZNutP
くこは罠🙅‍♀
0880ニャース垢版2018/09/09(日) 14:09:35.76ID:AYD3VQs9
ここでしたか
0881デフォルトの名無しさん垢版2018/09/09(日) 14:09:50.68ID:+yUoETM4
グレイシアちゃんのふたなりチンポ
0884デフォルトの名無しさん垢版2018/09/09(日) 14:12:42.07ID:V2BhMRg2
なんjの絆舐めるな!
0886デフォルトの名無しさん垢版2018/09/09(日) 14:15:18.48ID:KoiRlOSP
なんだこのスレ😨
0887デフォルトの名無しさん垢版2018/09/09(日) 14:15:42.19ID:1Rk7pi2L
アスペの>>868が居ると聞いて
0888デフォルトの名無しさん垢版2018/09/09(日) 14:16:23.81ID:7fkrmWDW
なんj書き込んだキッズ
今度から一人で解決しようね🤗
0890デフォルトの名無しさん垢版2018/09/09(日) 14:17:33.96ID:xWgdA58m
はい��
0891デフォルトの名無しさん垢版2018/09/09(日) 14:18:16.63ID:UPePJlkV
ここになんjに助けを求めたガイジはいませんかー?🙋
負け犬は何処かな🤔
0894デフォルトの名無しさん垢版2018/09/09(日) 14:20:44.64ID:UPePJlkV
恥ずかしがらずに出てこいよ😘
ガイジくん😁
それとも顔真っ赤で出てこれないかな?🤔
0896デフォルトの名無しさん垢版2018/09/09(日) 14:26:08.47ID:UPePJlkV
>>895
キターーー😁
本物ですわ😏
0897デフォルトの名無しさん垢版2018/09/09(日) 14:26:42.15ID:7fkrmWDW
>>895
スレ立てガイジ本人いて草
0899デフォルトの名無しさん垢版2018/09/09(日) 15:07:21.91ID:xWgdA58m
>>895
大丈夫か?��
0900デフォルトの名無しさん垢版2018/09/09(日) 15:57:06.11ID:yaYW83OX
意味わからないんだがw
ハンJでしょうもないプログラミングの質問した人がいたってことか?
0906デフォルトの名無しさん垢版2018/09/09(日) 17:12:29.21ID:3HCWUffr
>>900でなんjをハンjと打ち間違える時点で通報騒動知ってるやつやん
>>872で自分に都合の悪いレスつくと本人認定するような奴だしなんでもかんでも人のせいにしてきたんだろうな
0907デフォルトの名無しさん垢版2018/09/09(日) 17:20:33.91ID:yaYW83OX
あ、これ俺に成りすまして他板でクソスレ立てて人をこっちに呼び込んでんのね
今理解したわ
このスレの住人なら>>870-871程度のことで他の板にスレ立てるわけないってわかってもらえると思うけど
荒れると嫌なんでしばらくROMりますわ
0909デフォルトの名無しさん垢版2018/09/09(日) 17:44:29.85ID:C8FWMbW9
単発ばっかだし質問を小馬鹿にされた質問者が自演で荒らしてんだろ
いちいち反応すんなkz
0911デフォルトの名無しさん垢版2018/09/11(火) 11:59:19.26ID:bqaIVrpu
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
0912デフォルトの名無しさん垢版2018/09/11(火) 15:17:49.53ID:RXZvWAlK
>>911
同値類とは?
0913デフォルトの名無しさん垢版2018/09/11(火) 17:41:21.76ID:bqaIVrpu
>>912
入力のペア"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}} のことを言うよ

問題を解く上で数学的な要素は無いから数学の言葉を使わないで出題すべきだった
0914デフォルトの名無しさん垢版2018/09/11(火) 18:43:20.13ID:UwY6cfla
>>911 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' "
0915デフォルトの名無しさん垢版2018/09/11(火) 18:58:42.97ID:RXZvWAlK
>>913
それは良いとしても>>911の問題における同値類とはなんなのか?

例として出されているのは入力が動物の名前のようで、出力は重複をなくした上で大まかな種類ごとに分類されているようではある。
しかしこのそれぞれの分類は一体いかなる基準によって同じと判別したのか?

もしこれが単語の意味、およびそれの分類(動物なら四つ足だとか哺乳類だとか)によって分けなければならないとすると、単語の意味やその分類がプログラムの側でわかっていなければならない。
しかも入力にはどんな単語が来るかわからないというのであれば辞書並みの単語数に関してそれを保持していなければまともに分類できない。
0916デフォルトの名無しさん垢版2018/09/11(火) 19:06:31.95ID:RXZvWAlK
>>914
え?それでいいの?ペアになってるなつが同じ種類ってこと?
0918デフォルトの名無しさん垢版2018/09/11(火) 21:04:39.05ID:RXZvWAlK
なるほど。また最初の問題が不備で無限の回答が出るか一つも回答が出ないパターンだったと。
0920デフォルトの名無しさん垢版2018/09/11(火) 22:23:42.34ID:O7hfz4dz
>>911 Squeak Smalltalk (>>914 は入力順等によっては機能しないので差し替え)

| 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' "
0921デフォルトの名無しさん垢版2018/09/11(火) 22:32:02.08ID:srQbLx59
>>917
「それぞれの元を辞書順にソートした上で」
これは間違いってことね。
0922デフォルトの名無しさん垢版2018/09/11(火) 22:42:05.94ID:6IJHkLyh
cat dog horse rhinoとかってアルファベット順に出力するよう要請してるのだから少なくともそのフレーズに間違いはないよ
0923デフォルトの名無しさん垢版2018/09/12(水) 08:18:25.07ID:FM7FP8m6
>>911 「cat cat」とか重複するペアとか任意のペアが来てもオッケーなバージョン

def qs(er)
h = Hash.new Float::INFINITY
erc = 0
er.each do |r|
min = r.map{|e| h[e]}.min
ern = min == Float::INFINITY ? erc += 1 : min
r.each{|e| h[e] = ern}
end
h.group_by(&:last).values.map{|s| s.map(&:first).sort}
end

er = $<.readlines.map &:split
puts qs(er).map{|a| a * ' '} * $/
#=>
dove duck goose lark pigeon
cat dog horse rhino
cod eel goldfish squid
0929デフォルトの名無しさん垢版2018/09/13(木) 10:14:48.87ID:q0HzNtar
>>911 perl
%h;
while(<>){
chomp;
($f, $s) = split/ /;#first, second

undef $keyf;
undef $keys;

for $k (keys %h){
$keyf = $k if grep /$f/, @{$h{$k}};
$keys = $k if grep /$s/, @{$h{$k}};
}

if(!defined $keyf and !defined $keys){
push @{$h{$.}}, $f;
push @{$h{$.}}, $s;
}else{
push @{$h{$keys}}, $f unless defined $keyf;
push @{$h{$keyf}}, $s unless defined $keys;
}
}

map{print join " ", (sort{$a cmp $b}@{$h{$_}}), "\n"}keys %h;
0931デフォルトの名無しさん垢版2018/09/13(木) 12:31:55.31ID:cU5S5NHG
>>927
両方が既に入ってるなら何もする必要ないと思うのだが。
0933デフォルトの名無しさん垢版2018/09/13(木) 14:17:54.21ID:q0HzNtar
>>911 >>932
%h;
while(<>){
chomp;
($f, $s) = split / /;#first, second

undef $keyf;
undef $keys;

for $k (keys %h){
$keyf = $k if grep /$f/, @{$h{$k}};
$keys = $k if grep /$s/, @{$h{$k}};
}

if(!defined $keyf and !defined $keys){
push @{$h{$.}}, $f;
push @{$h{$.}}, $s;
}elsif( (defined $keyf and defined $keys) and !($f eq $s) ){#merge
push @{$h{$keys}}, @{$h{$keyf}};
delete $h{$keyf};
}else{
push @{$h{$keys}}, $f unless defined $keyf;
push @{$h{$keyf}}, $s unless defined $keys;
}
}

map{print join " ", (sort{$a cmp $b} @{$h{$_}}), "\n"} sort{$a <=> $b} keys %h;
0934デフォルトの名無しさん垢版2018/09/13(木) 20:39:52.56ID:0RheZyur
>>932
あー。なるほど。そういうことか。
また考えよう。
0935デフォルトの名無しさん垢版2018/09/14(金) 03:38:24.35ID:SYmkUqRw
>>927
>>926は修正した。(URL同じ)
0936デフォルトの名無しさん垢版2018/09/14(金) 04:53:58.08ID:Z6RVr7Qr
>>935
差し支えなければ修正前のコードも別URLで再掲載してもらえますか?
あるいは公開バージョンの履歴や差分を参照する機能がpaoza.ioにあったら教えてください

くしくもマージを考慮「しない版」と「する版」が出揃ったのでどういう修正で対処したか調べると
それぞれの言語の(あるいはアルゴリズムの)特徴が際立って面白いのではないかなぁとふと思ったので
0937デフォルトの名無しさん垢版2018/09/14(金) 08:32:54.25ID:SYmkUqRw
>>936
すまん。前の版はもうない。paiza.ioはそういう機能はない。
思い出して時間があったらなんとかする。
0942デフォルトの名無しさん垢版2018/09/14(金) 20:39:39.94ID:cNoNQyuv
>>940
おお。ナイス。
0956デフォルトの名無しさん垢版2018/09/19(水) 01:18:48.14ID:pHq1DkBS
>>955
アウトになる条件は、「エントリー後メールにて送付されるコーディング試験問題は、当社への応募以外の目的で無断使用しない」…@
だが、>>951 のリンクの問題は「エントリー後メールにて送付されるコーディング試験問題」ではないから@に反しない…A
さらに、無条件に誰でも見ることのできる問題であること…B
Aよりアウトではないと断定できるし、BがAの結論を補強する
結論として、>>951 のリンクの問題を公開しても問題ない

>>955 「アウトかセーフかわからない」という結論にどういう道筋で到達したの?
0957デフォルトの名無しさん垢版2018/09/19(水) 19:43:34.67ID:KaiQ4rsk
お題:コンプリートパネル(出展:高校生クイズ2018)

5×5のパネルが与えられる。各パネルは赤色か白色である。
各パネルに侵入すると、そのパネルの色が赤なら白、白なら赤に変化する。
最初のステップは、場外(左下のパネルの左隣)から左下のパネルへ侵入することである。
以降のステップでは、上下左右に移動することができる。
ただし、ひとつ前のパネルや場外に移動することはできない。

すべてのパネルを白色にするための移動経路を構成せよ。

WWWRR
WWWWR
WWWWR
WWWRR
RRRRW
=> 10 RRRRURUUUL (→→→→↑→↑↑↑←)

WWWWW
WWWWW
WWWWW
WWWWW
WWWWW
=> 0 (移動の必要なし)

WWWWW
WWWWW
WWWWW
WRWWW
WWWWW
=> 21 RRRRULULLDDRULURRDRDL (必ずしも最短経路である必要はない)
0958デフォルトの名無しさん垢版2018/09/19(水) 19:51:24.03ID:WMjcSrAA
>ひとつ前のパネルや場外に移動することはできない

全部踏めばいいんだからライツアウトの解法の亜種で解けるんじゃねえの
0959デフォルトの名無しさん垢版2018/09/19(水) 19:59:02.78ID:ZUIw2oHI
状態を変えずに任意の場所まで移動できるなら
6箇所だけそれぞれ1つだけRだった場合を計算してあとは回転なりなんなりして重ね合わせればいけるな
0960デフォルトの名無しさん垢版2018/09/19(水) 20:34:03.00ID:WMjcSrAA

□□□
□□□→

2*3の全パターンで、この二つの方向のどちらかに抜ける経路が存在すればいい
あとは合成で何とかなる
0961デフォルトの名無しさん垢版2018/09/19(水) 21:11:11.50ID:zcXFtBV7
うーん。これはブルートフォースでやろうとするとかなり無駄が多くなって時間とメモリを山盛りに食いそうな予感。
0962デフォルトの名無しさん垢版2018/09/19(水) 23:00:29.71ID:gYIP5Vsu
5x5=25マスの赤or白の2値だから25bit、現在位置25通り(5bit)に前回位置相対で4通り(2bit)、あわせて32bitパターン?
0963デフォルトの名無しさん垢版2018/09/19(水) 23:25:52.07ID:WMjcSrAA
5x5は序の口で、100x100くらいが本命でしょう
ついでに最短の最適解も

問題も作るだけならラクだから1000x1000だって0.1秒程度で作れる
もちろん解くのは面倒
0965デフォルトの名無しさん垢版2018/09/20(木) 09:43:56.68ID:cMPVhU9i
プログラム考える以前に解くためのいいアルゴリズムが思い浮かばん
0966デフォルトの名無しさん垢版2018/09/20(木) 12:37:05.73ID:B1/3j8uv
辺の長さが3以上の時は戻るの禁止ってルールは実質的に無視できそうだな
というのも閉路を2周すれば元通りに戻るわけだから

xxx
x↓x
x↑x
上に行ってまた下に戻るって進みたいときは

→↓x
↑←x // 中央「←」を3回目に踏むときは下に進む
x↑x
ってすればいいわけで
2*2 かどちらかの辺が 1 の場合以外は任意のパターンで解があることになる
0967デフォルトの名無しさん垢版2018/09/20(木) 23:43:04.82ID:uzQ90Fqy
RWWWR
WRWWW
RWRWW
RWWRW
WRRWR

全てのパターンが解けて最長がこの形で44手かかる

となったけどできたばかりだからまだまだバグがありそう
0968デフォルトの名無しさん垢版2018/09/21(金) 23:11:26.91ID:1M+bqJR8
https://ideone.com/S7UA0k
表示までできるようになったので
ここでは5秒超えるので結果表示されないみたい
10年前のノートで2分半かかる
結果はこんな感じ

- - - - -
- - - - -
- - - - -
- x - - -
- - - - -

RRRRULDRULLDL 13

x - - - x
- x - - -
x - x - -
x - - x -
- x x - x

RRRRRUUUULLLLDDDDRRRURUULDLDDLUURDLURRUULLDL 44
0969957垢版2018/09/22(土) 13:39:38.33ID:EQZKU8B1
最適解ではないが、人間にも実行可能なアルゴリズムを考えた
上のラインから順番に確定させていく感じ
https://ideone.com/nUgNh3
0972デフォルトの名無しさん垢版2018/09/23(日) 07:02:07.82ID:QL0eQEru
>>962の理屈上なら>>971のstepの累積和が3,355,443,200(=25<<27)になった時点で全通り出たことになって最短の上限になるのかな?
0973デフォルトの名無しさん垢版2018/09/23(日) 10:53:27.77ID:daMeAE67
ttps://cdn-ak.f.st-hatena.com/images/fotolife/m/motcho/20180127/20180127034515.png
連続殺人犯が全ての目撃者を消して完全犯罪を目論む
0974デフォルトの名無しさん垢版2018/09/23(日) 12:36:34.31ID:FE85zabB
文字列のペアがn対与えられる。
s(1),t(1)
...
s(n),t(n)

この時、ペアを適切な数選び適切な順番で並べる事で
s(a1)s(a2)...s(ak) = t(a1)t(a2)...t(ak)
とできるかどうか判定せよ
(ペアを重複して選ぶのもOK)
0977デフォルトの名無しさん垢版2018/09/23(日) 13:27:09.60ID:yBlaBAG2
>>975
最初全く同じこと思ったわw
でもこれって十分条件に過ぎないんだな

a ab
bc c
s(1)s(2) = t(1)t(2) = 'abc'
0978デフォルトの名無しさん垢版2018/09/23(日) 17:12:26.93ID:daMeAE67
応用だけは思い付いた

ATCGTTGTAC, AAATTTCTCTCTTTCT
GTGATGCGTTGCAGGT, ATGCCATGTGAC
AAATTGCTGAC, ATGTTGCGTC
ATGCGTACCCACG, AGTGCGTTCGTAC
...(以下、1万行続く)
0980デフォルトの名無しさん垢版2018/09/24(月) 14:31:45.91ID:twjLvrgB
重複しても良いってなっているのでどうやっていいか分からなくなった。
重複なしなら単に順列の問題で全パターン調べれば良いだけなんだけどな。
0981デフォルトの名無しさん垢版2018/09/24(月) 14:56:44.30ID:hAv+WLv3
>>979
含むと何も並べなければOKって事になりそう
0986デフォルトの名無しさん垢版2018/09/25(火) 00:18:48.94ID:sMuinsuC
エビングハウスの忘却曲線っていって人間のベストな復習間隔があるんだけど
例えば今日勉強したことは明日復習して3日後、1週間一ヶ月ごとに復習すると完全に長期記憶になる
これをスマホアプリで管理するプログラミングしたい
理屈は簡単、カレンダーに今日覚えたことを「○○の20-40ページ」とか記入して
明日になったら今日やる復習を表示してくれるシステム

プログラミングのプの字も知らんのだ
どの言語を使うとかもわからんmacとxcodeはある
どういう作り方すればいいかわからない教えてください個人用に使う
0988デフォルトの名無しさん垢版2018/09/25(火) 02:40:25.79ID:VjhU4mZC
>>986
このスレはそういう質問するスレではなく、誰かがお題を出して回答したい人がプログラミングして回答するスレだ。

そういう質問はまずは既存のソフトでそういうことが出来るのがないか以下のスレで聞いた方が良いと思う。

気軽に「こんなソフトありませんか?」Part.176
https://egg.5ch.net/test/read.cgi/software/1529929775/

それからどうしてもプログラムを自分で作ってみたいというのであれば何らかの言語を覚える必要があるが、
MacやiPhoneの場合は何が良いのか俺はよく知らない。この頃だと Swift なんだろうか? Swift は確か xcode
使って作れたと思うが、詳細は今の俺には分からん。MacOSやiOS関係のスレを探して聞いてくれ。
0993デフォルトの名無しさん垢版2018/09/28(金) 21:10:47.83ID:WW7qy9i/
埋め
10011001垢版Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 157日 0時間 44分 30秒
10021002垢版Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

ニューススポーツなんでも実況