19/07/28 19:39:57.54 832c/ukY.net
プログラミングのお題スレです。
【出題と回答例】
1 名前:デフォルトの名無しさん
お題:お題本文
2 名前:デフォルトの名無しさん
>>1 使用言語
回答本文
結果がある場合はそれも
【ソースコードが長くなったら】 (オンラインでコードを実行できる)
URLリンク(ideone.com)
URLリンク(codepad.org)
URLリンク(compileonline.com)
URLリンク(rextester.com)
URLリンク(runnable.com)
URLリンク(code.hackerearth.com)
URLリンク(melpon.org)
URLリンク(paiza.io)
宿題は宿題スレがあるのでそちらへ。
※前スレ
プログラミングのお題スレ Part14
スレリンク(tech板)
2:デフォルトの名無しさん
19/07/28 21:03:19.25 KnbJf+WN.net
宿題、チューリングの泥沼、条件不足等回避のため
出題者は自分で回答可能か確認してからお題を出すこと
3:デフォルトの名無しさん
19/07/28 21:08:20.48 OTB4c+BP.net
※QZは書き込み禁止
4:デフォルトの名無しさん
19/07/28 21:32:12.69 MO+jaDzY.net
お題
とあるゲームでは、10面ダイスによってスコアを次のように定める
1. x個のダイスを全部振る
2. 振ったダイスのうち、最大の出目をスコアとする
3. 出目がc以上のダイスが存在するなら、その全てのダイスを使って同じ試行を行い、スコアに加算する
例えばc=7の時、2個のダイスの結果が(10,7)→(8,3)→(2)ならスコアは10+8+2=20となる
最初に振るダイスの個数Nとc(≧2)が分かっている時、スコアの期待値を求めよ
5:デフォルトの名無しさん
19/07/29 11:14:17.89 3vvajVS9.net
>>4
URLリンク(ideone.com)
C++,モンテカルロしてみた。
値がちょっと怖い値になったので、バグ報告歓迎。
6:デフォルトの名無しさん
19/07/29 11:34:20.96 3vvajVS9.net
URLリンク(ideone.com)
>>5が不安だったので、出力変えてみたけど、最大値で500近くになるんだな。
何かビビった。
7:デフォルトの名無しさん
19/07/29 11:49:50.47 3vvajVS9.net
サイコロの偏りをもっと明確にしたいなら、乱数エンジンを複数持つか、ランダムデバイスそのもので実行する。
ランダムデバイスは遅いことになってるのでMTに投げるんだけど。
8:デフォルトの名無しさん
19/07/29 11:55:28.48 3vvajVS9.net
一様乱数のサイコロは、現実では職人が作ったサイコロですなあ。
9:蟻人間
19/07/30 00:00:42.86 NJpsA13e.net
お題: 炭素原子C, 酸素原子O, 水素原子Hという三種類の原子をそれぞれいくつか組み合わせて、非イオンの分子を作る。C, O, Hの結合の手の本数は、それぞれ四本、二本、一本である。
ゼロ以上の整数p,q,rが与えられ、Cがp個、Oがq個、Hがr個あると仮定するとき、原子を余らせず、また、結合の手を余らせずに一つの連結された分子を作りたい。
C, O, Hをこの順でp+q+r個、並べたリストLについて、m番目の原子L[m]とn番目の原子L[n]の結合の個数をA[m,n]と書くとき、A[m,n]によってなる行列Aを一つ求めなさい。不可能な場合は「None.」と表示しなさい。
例)
(p, q, r)=(0, 2, 0) → A=((0, 2), (2, 0)).
(p, q, r)=(1, 2, 0) → A=((0, 2, 2), (2, 0, 0), (2, 0, 0)).
(p, q, r)=(0, 1, 2) → A=((0, 1, 1), (1, 0, 0), (1, 0, 0)).
10:デフォルトの名無しさん
19/07/30 03:21:18.39 NEOgIkE0.net
問題がわかりづらい。
11:デフォルトの名無しさん
19/07/30 06:42:15.48 x+cPGemS.net
出題者は自分で解けることを確認してからお題にしてるのかね?
自明でない不可能な場合の例とか出してこないし怪しいもんだ
12:デフォルトの名無しさん
19/07/30 10:22:50.80 xUDKdiN7.net
慣れない言語の勉強に使うのに丁度いいね
出題者が答えも貼っといてくれるとありがたい(´・ω・`)
13:デフォルトの名無しさん
19/07/30 16:13:07.32 YUdTZrG6.net
良いプログラムは良い数式がないと作れないのでこのスレは過疎化する。
14:デフォルトの名無しさん
19/07/30 16:39:56.09 qFxGgTrm.net
久々にこの板きたけど、宿題スレってなくなったんだね
15:蟻人間
19/07/30 16:51:52.79 gia580F5.net
解空間は、サイズ(p+q+r)×(p+q+r)の整数行列の集合になる。
結合の手の個数は有限だから、解行列の成分は上限がある。
よって行列の各成分についてしらみつぶし探索が可能。
自分自身とは結合しないので、A[k,k]=0(つまり、行列の対角成分はゼロ)。
ある行の和は、行番号に対応する原子の結合の手の個数になる。
ある列の和は、列番号に対応する原子の結合の手の個数になる。
連結条件のチェックが必要。
16:デフォルトの名無しさん
19/07/30 17:04:44.75 RYwsY7rK.net
お題: xのn次式を簡潔に表現できる関数を書け(rationalじゃなくてもOK)
a+bx+cx^2+dx^3+...
を
f x a b c d ...
のように表現する
(可変引数を処理する)
例えば
(defun f (x &rest as) (reduce #'+ (loop for a in as for i from 0 collect (* a (expt x i)))))
(loop for x from -5 to 5 do (print (f x 0 -1 0 1/3)))
-110/3
-52/3
-6
-2/3
2/3
0
-2/3
2/3
6
52/3
110/3
17:デフォルトの名無しさん
19/07/30 17:10:40.80 CNgKzCU7.net
>>14
基地外粘着uyによって潰された
18:デフォルトの名無しさん
19/07/30 19:44:50.09 RfvVlMN8.net
>>13
良い数式が立てられないのでモンテカルロに酔っているオレ・・・。
19:
19/07/30 20:12:47.58 3dZzemsO.net
>>9
複雑すぎます
非環状アルカン(CnH2n+2)の構造異性体を列挙せよ、という簡略化したお題を提案します
20:
19/07/30 20:13:36.62 3dZzemsO.net
>>14
存在することはするのですが、誰も近寄らなくなりました、キチガイが一匹しつこく居候しているので
21:デフォルトの名無しさん
19/07/30 21:52:06.20 WkS1m6T1.net
>>20
つ 鏡
22:デフォルトの名無しさん
19/07/30 23:15:45.71 1jiiGCYP.net
>>21
草生える
23:デフォルトの名無しさん
19/07/30 23:24:02.31 2GPXM96o.net
お題: 1 + 1 を計算させて 3 と出力させなさい
24:デフォルトの名無しさん
19/07/30 23:34:18.81 77FpHlNC.net
>>23 Perl5
$a = 1 + 1;
print ~$a%10;
実行結果
$ perl 15_23.pl
3
※64bit整数版で実行してね
25:デフォルトの名無しさん
19/07/31 00:12:45.83 w173sz60.net
>>23
perl5
print ("1", "+", "1")
1+1
print $_ =()= ("1", "+", "1")
3
26:デフォルトの名無しさん
19/07/31 04:39:05.16 BcGPMjSP.net
>>23
perl
1+1;
print "3\n"
27:デフォルトの名無しさん
19/07/31 05:06:41.43 B/3ESziM.net
>>23 ruby
class Fixnum
alias :add :+
def +(val)
if self == 1 && val == 1
puts 3
2
else
self.add(val)
end
end
end
1 + 1 #=> "3\n"
1 + 1 + 1 #=> "3\n"
1 + 1 + 1 + 1 #=> "3\n"
1 + 1 - 1 + 1 #=> "3\n3\n"
28:デフォルトの名無しさん
19/07/31 09:55:03.07 w173sz60.net
>>23
perl5
print qw(1 + 1)
1+1
print eval q(1 + 1)
2
print $_ =()= qw(1 + 1)
3
29:デフォルトの名無しさん
19/07/31 14:18:08.83 6BPSvdm1.net
お題、東大入試
a^2 - a が、10,000 で割り切れるような奇数a を求めよ。
ただし、3 <= a <= 9,999
ヒント
a^2 - a = a(a - 1) で、aは奇数、a-1 は偶数。
10,000 = 10^4 = 2^4 * 5^4
答え、625
東京大【整数マスターに俺はなる!#31】
URLリンク(www.youtube.com)
30:デフォルトの名無しさん
19/07/31 14:46:10.23 w173sz60.net
>>29
common lisp
(loop for n from 3 to 10000 when (and (equal (mod n 2) 1) (equal 0 (mod (- (expt n 2) n) 10000))) collect n)
(625)
31:デフォルトの名無しさん
19/07/31 15:57:49.04 oxQy3lj+.net
・女体限定で、3次元の写真から3Dポリゴンモデルデータを自動作成
・そのデータから胴体部の着衣部分を、裸モデルに修正
・水着でついた脇乳の段差も修正
・元写真の地肌色を使い、女体テンプレのテクスチ�
32:モ�成 ・完成したモデルから胴体部だけ精密レンダリング ・元の写真に貼り付けて完成
33:デフォルトの名無しさん
19/07/31 17:25:11.51 6BPSvdm1.net
プログラミングのお題スレ Part14
スレリンク(tech板:981番)-986
漏れは、前スレの981 ではないですが、この問題の応用で、
括弧のネストの深さの最大値を求めよ
括弧の対応が取れていない場合は、-1 を出力せよ。
2種類の括弧が順序通りに、閉じていないものも、-1 です
ヒント : stack を使うと良いかも
"" => 0
"( )" => 1
"{ ( { ( ) } ( ) ) } ( )" => 4
"} {" => -1
"( { ) }" => -1
34:デフォルトの名無しさん
19/07/31 20:22:09.77 AESVjm16.net
自分でスタックするか再起にして自動で積ませるか、といったところか。
35:デフォルトの名無しさん
19/07/31 21:44:23.62 CaRsLsI2.net
>>32 Java
URLリンク(ideone.com)
36:デフォルトの名無しさん
19/07/31 22:14:16.43 w173sz60.net
>>32
perl5
URLリンク(ideone.com)
37:デフォルトの名無しさん
19/07/31 22:19:24.27 w173sz60.net
ideone バグっているのか?
STDIN の1行目空だと
ちゃんと標準入力としてプログラムに伝わっているけど
リンク先の stdin 枠の中だと省略されているように見える
stdout の 0 はその空を受け取ったもの
38:デフォルトの名無しさん
19/07/31 22:42:26.48 w173sz60.net
twitterやっていたようなので
そこにバグフィックス要請とテストケース画像貼っておいた
たぶんそのうち直るでしょう
39:デフォルトの名無しさん
19/07/31 23:32:10.18 M5c7ILzZ.net
問題
n桁のヒットアンドブローのソルバーを作る。
40:デフォルトの名無しさん
19/07/31 23:34:51.48 BcGPMjSP.net
君の言っていることの意味がよくわからない。
41:デフォルトの名無しさん
19/08/01 00:15:32.73 i4UPQl8k.net
>>37
GJ
42:デフォルトの名無しさん
19/08/01 15:40:09.21 eeSbVWum.net
>>38
大分前に作ったけど、コード紛失した。
アルゴリズムも忘れた。
ガーン。
43:デフォルトの名無しさん
19/08/01 15:47:29.97 /tDwAGeP.net
年収n円の人が生活費と交遊費2種類だけで1年間の収入のすべてを消費するとして
税率がt1からt2に上がった時
税抜き価格ベースでの生活費が変動しないものと考えると
税抜き価格ベースでの交遊費の減少額はいくらになるか?
(端数は切り上げとする)
ex)
年収n=5,000,000
税率t1=8%
税率t2=10%
税抜き価格ベースでの生活費a
税抜き価格ベースでの交遊費x, y
5000000 = ( a + x ) * 1.08
5000000 = ( a + y ) * 1.10
上記の方程式を解いて
x-y ≒ 84,176
44:デフォルトの名無しさん
19/08/01 16:10:15.37 WaJjQk0q.net
>>42
wolfram
Simplify[ x-y, {5000000 == (a+x)*1.08,5000000 == (a+y)*1.1} ]
84175.1
45:デフォルトの名無しさん
19/08/01 16:16:06.40 WaJjQk0q.net
切り上げか
Ceiling[ Simplify[ x-y, {5000000 ==(a+x)*1.08 == (a+y)*1.1} ] ]
84176
46:デフォルトの名無しさん
19/08/01 16:17:25.45 9Ke7npq5.net
何も考えずにceiling(n/1.08-n/1.1)でいいんとちゃうけ?
47:デフォルトの名無しさん
19/08/01 19:07:52.51 CMxA9z9p.net
>>32 Ruby
f = -> str {s = +str.delete(?\ ); (0..).each{|i| s.gsub!(/{}|\(\)/, '') || (break s.size.zero? ? i : -1)}}
['', '( )', '{ ( { ( ) } ( ) ) } ( )', '} {', '( { ) }'].each{|e| puts '%p => %d' % [e, f[e]]}
# =>
"" => 0
"( )" => 1
"{ ( { ( ) } ( ) ) } ( )" => 4
"} {" => -1
"( { ) }" => -1
48:デフォルトの名無しさん
19/08/01 21:02:36.17 9Ke7npq5.net
>>45
ちょっと考えたらceiling(n/59.4)だったw
49:デフォルトの名無しさん
19/08/02 20:14:36.58 fXsI78QL.net
お題: 数字が与えられるので、その数字を元の数より大きくなるように再構築せよ
大きくできなければ元の数字をそのまま出力せよ
例:
in < 123
out > 231, 213, 321, 312
in < 921
out > 921
50:デフォルトの名無しさん
19/08/02 20:54:30.15 Awh9QXRy.net
123を入力したときに132が出力されないのはなぜ?
51:デフォルトの名無しさん
19/08/02 21:09:12.36 ec2C26mu.net
パーミュテーション作って終わりじゃあないのコレ
52:デフォルトの名無しさん
19/08/02 21:52:24.70 TUgs2HTj.net
>>49
ミスだよぉ!
53:デフォルトの名無しさん
19/08/02 22:45:44.46 T1FFAKuC.net
そんなんばっかだなお前
54:デフォルトの名無しさん
19/08/03 01:06:14.19 0ts56itm.net
>>48
URLリンク(ideone.com)
C++。ご期待通り(?)にパーミテーション回してみたよ。
重いお。
55:デフォルトの名無しさん
19/08/03 10:23:36.04 t/Tc4Qxr.net
URLリンク(ideone.com)
from itertools import permutations
#string = "123"
string = "5672391"
n = int(string)
print filter(lambda m: m>n, map(lambda x: int("".join(x)), list(permutations(string, len(string)))))
56:デフォルトの名無しさん
19/08/03 10:27:27.22 9AEx1UEu.net
なんて早いんだ
57:デフォルトの名無しさん
19/08/03 11:19:47.14 4CYzcJxv.net
「大きくできなければ元の数字をそのまま出力せよ」という条件が
ことごとく無視されててワロタ
あと、「133」みたいに同じ数字が複数含まれる場合はどうなるべきなんだろう
58:デフォルトの名無しさん
19/08/03 11:39:39.93 xpWLAw2C.net
>>48 Perl5
sub next_permutation {
defined $_[1] and
(next_permutation(@_[1..$#_]) or
($_[0] lt $_[1]) and
do {
for (1..$#_)
{$_[0] lt $_[$_] ? $i = $_ : last}
@_[0, $i] = @_[$i, 0];
@_[1..$#_] = reverse @_[1..$#_];
1 })
}
#$v = '123';
$v = '5672391';
@a = sort split '', $v;
do {
$n = join '', @a;
print "$n " if $n > $v;
} while next_permutation @a;
実行結果
URLリンク(ideone.com)
CPANなどにあるPermutation計算モジュールを使用しても良いけど、
言語処理系に標準で含まれるモジュールではなく別途インストールが必要なので、
昔書いたnext_permutation iteratorを使ってみた
59:デフォルトの名無しさん
19/08/03 11:43:50.21 xpWLAw2C.net
>>57 ごめんなさい
print "$n " if $n > $v;
↓
print "$n " if $n >= $v;
じゃないと「大きくできなければ元の数字をそのまま出力せよ」を満たさなかった…orz
60:デフォルトの名無しさん
19/08/03 11:49:41.56 xpWLAw2C.net
>>58 そうすると逆に
「元の数「より大きくなる」ように再構築せよ」
については、元の数値が余計に出力されるな…ゴメンねもう一工夫要るわ
それにiteratorである必要ないわ
61:デフォルトの名無しさん
19/08/03 12:09:48.13 xpWLAw2C.net
>>48 Perl5、iteratorじゃなくpermutationを列挙する方法で書いてみた。これなら題意に合うはず。
sub permu {
my ($l, $p, @r) = @_;
defined $p ? map {[$p, @$_]} permu([], @$l, @r) : ([])
,
@r ? permu([@$l, $p], @r) : ()
}
#$v = '123';
#$v = '321';
$v = '5672391';
@a = split '', $v;
@b = grep {$_ > $v} map{join('', @$_)} permu [], @a;
print (@b ? "@b" : $v);
62: 実行結果 https://ideone.com/1Lft75 少しメモリを食ってるだろうけど0.04sで解けた
63:デフォルトの名無しさん
19/08/03 16:01:35.10 XF8eWPn5.net
>>48 Squeak/Pharo Smalltalk
| fn res |
fn := [:input |
(Array streamContents: [:ss |
input permutationsDo: [:perm | perm > input ifTrue: [ss nextPut: perm copy]]]
) ifEmpty: [input]
].
fn value: '123'. "=> #('132' '213' '231' '321' '312') "
fn value: '921'. "=> '921' "
{#ms -> [res := fn value: '5672391'] timeToRun. #size -> res size}. "=> {#ms->6 . #size->2438} "
64:デフォルトの名無しさん
19/08/03 19:53:41.57 0ts56itm.net
>>48だけど、>>56の要件を見落としていたので入れてみたよ。
URLリンク(ideone.com)
C++。
65:デフォルトの名無しさん
19/08/04 03:52:38.60 vnZdN6SP.net
>>56で指摘したのに誰も反応してくれないので自分で書く
>>54は、「133」と入れると[313,331,313,331]みたいに結果がダブる
66:デフォルトの名無しさん
19/08/04 04:17:02.39 vnZdN6SP.net
>>62
C++のnext_permutationは、辞書順で次に来る順列が返るので、
最初の並びにnext_permutationを繰り返し適用すれば題意を満たす数列が得られる。
あと、自前で桁分割するより他言語のように文字列を使った方が楽だと思う。
67:デフォルトの名無しさん
19/08/04 08:30:18.20 FnmDNXLj.net
>>48
@Mathematica
rebuildLargerN[n_]:=n//
IntegerDigits//
Permutations//
Map[FromDigits,#]&//
Select[#,#>n&]&//
If[#!={},#,{n}]&;
In[1] := rebuildLargerN[123]
Out[1] = {132, 213, 231, 312, 321}
In[2] := rebuildLargerN[921]
Out[2] = {921}
68:デフォルトの名無しさん
19/08/04 11:42:59.33 1+0Vj0jh.net
>>63
オレのPerl5の>>60も桁に重複があると出力はダブるよ。
ダブった出力で良いかあるいは1つに削減して出力するか
仕様は不定なので、ダブる可能性があってもそのまま出した。
ダブらせず1つだけ出力すにはsortしてuniqすればいいんだけど。
@b = grep {$_ > $v} map{join '', @$_} permu [], @a;
↓
%h = map{$_ => 1} sort grep {$_ > $v} map{join '', @$_} permu [], @a;
@b = keys %h;
69:デフォルトの名無しさん
19/08/04 13:27:01.79 FYuOH6vI.net
URLリンク(ideone.com)
C++.
>>63のダブって表示はならないですね。
文字列だと、自分はいいけど、数字に限定するのが面倒なので、大きな数で処理してます。
文字を許容するんであればお題で書いておけばそのようになるんじゃないですかね??
70:デフォルトの名無しさん
19/08/04 13:29:31.62 FYuOH6vI.net
あ、そうだった。文字列だと自分より大きいを表現するのがめんどくさいのでした。
71:デフォルトの名無しさん
19/08/05 21:32:05.80 OFOHGnJp.net
>>48
URLリンク(ideone.com)
C++。暇だったので、文字列版作った。
でかい数のデバッグが大変だから手抜きだ。
ご査収ください。。。
72:デフォルトの名無しさん
19/08/05 22:51:54.50 AzW+f4x5.net
>>48 C++
URLリンク(ideone.com)
>>64で説明したかった内容をコードにしてみた
なお、pythonとc++のpermutationは、同じ値が含まれる時の動作が異なる
URLリンク(stackoverflow.com)
73:デフォルトの名無しさん
19/08/06 14:56:22.80 1YPxJa8a.net
お題@閑話休題。
URLリンク(ja.wikipedia.org)素数判定法
AKSの実装。Prime is in P.
自分は挫折しました。数学解らない。
残骸:URLリンク(ideone.com)
74:デフォルトの名無しさん
19/08/06 14:57:44.83 1YPxJa8a.net
>>70
そういえば、ソートする必要ないね。
書いてるときは保証できなかったから思いつきもしなかった。
75:デフォルトの名無しさん
19/08/06 18:46:19.50 /2t+ALeN.net
お題: スターリンソートを実装せよ
76:デフォルトの名無しさん
19/08/06 19:06:50.12 Uq1zh0Vl.net
>>73
seq 300|sort -R | perl -ne ' if ($. == 1){print ; $hold = $_} elsif ($_ > $hold) { print ; $hold = $_}'
140
145
231
246
248
270
272
281
298
299
300
77:デフォルトの名無しさん
19/08/06 20:18:34.06 1YPxJa8a.net
>>73
要素粛清しながら見た目がそろっているというギャグかいな。
78:デフォルトの名無しさん
19/08/06 20:54:47.97 1YPxJa8a.net
URLリンク(ideone.com)
C++。よく生き残った我が精鋭たちよ。
ところで・・・。
79:デフォルトの名無しさん
19/08/07 15:33:52.56 ts1kCtnm.net
>>73 Squeak/Pharo Smalltalk
| fn |
fn := [:array |
| memo |
memo := array first.
array reject: [:x | x < memo flag: (memo := x max: memo)]
].
fn value: (1 to: 300) asArray shuffled. "=> #(65 116 195 235 276 280 293 299 300) "
80:デフォルトの名無しさん
19/08/08 00:35:30.37 X/CTiqlR.net
>>73
しばらくお題がないとおちつかないな
seq 300|sort -R | perl -ne ' if ($. == 1 or $_ > $hold) { print ; $hold = $_}'
81:デフォルトの名無しさん
19/08/08 10:41:16.59 Q6oNbeov.net
>>73
ss = -> a {a.reduce([]){|r, e| r.first.nil? ? [e] : r.last < e ? r + [e] : r}}
p ss[[3,1,4,1,5,9,26,53,58,97,93,238]] # =>
[3, 4, 5, 9, 26, 53, 58, 97, 238]
82:デフォルトの名無しさん
19/08/09 00:37:57.26 F1quTbHl.net
>>73 Perl5
use List::Util 'max';
@a = qw{3 1 4 1 5 9 26 53 58 97 93 238};
@b = grep {$n < $_ and $n = max($n, $_)} @a;
print "@b\n";
実行結果
~ $ perl 15_73.pl
3 4 5 9 26 53 58 97 238
83:蟻人間
19/08/09 00:53:52.15 ZZ2ybqZz.net
お題: 太陽系の各天体の位置を物理シミュレーションし、64日後の地球の位置を求めよ。
84:蟻人間
19/08/09 01:17:32.06 JH0KcGUq.net
俺たちって計算能力でコペルニクスを超えられると思う? NASAのデータがあるから昔よりも楽だと思うけど。
85:デフォルトの名無しさん
19/08/09 01:27:37.54 F1quTbHl.net
>>73 Perl5、 >>80 よりこっちの方が若干スマート
$n = -inf;
@a = qw{0 3 1 4 1 5 9 26 53 58 97 93 238};
@b = grep {$n < $_ and ($n = $_), 1} @a;
print "@b\n";
実行結果
~ $ perl 15_73.pl
0 3 4 5 9 26 53 58 97 238
86:デフォルトの名無しさん
19/08/09 04:16:04.61 eE0IZ4mx.net
>>83
ちょっとおもしろい
87:デフォルトの名無しさん
19/08/09 08:43:53.16 Pwzp9noT.net
>64
地球の位置といってもいろいろあります。
地球の赤道を天球上に投影した、「赤経、赤緯」、太陽の天球上の
通り道を天球上に投影した「黄経、黄緯」がありますし、それも、地球の中心を
原点とした、「地心赤経、赤緯」、「地心黄経、黄緯」および、観測地点を原点とした
「地表赤経、赤緯」、「地表黄経、黄緯」もありますので、どれにするかによって
計算式が違ってきます。
なお、JPLでは、太陽と月、および冥王星までの精密位置計算用のプログラムを
発表しています。
期間がながいものは、-4000(B.C.4001)~4000(
88:A.D.)まで、計算できるものが あります。 計算用のデータと、テスト用のFortranプログラムも附属しています。
89:デフォルトの名無しさん
19/08/09 12:56:08.85 1/DU+veY.net
Perlって読みにくいんだな
{とか@とか$とか使いまくる言語ってマジ苦手
90:デフォルトの名無しさん
19/08/09 13:03:13.21 OfLBByV9.net
RubyとPHPにケンカ売ってんの?
91:デフォルトの名無しさん
19/08/09 13:05:45.59 weGJYw8v.net
grep 内のboolian から最後の , 1 を取り除いたら
最初の0を拾わない
何というカオス
92:デフォルトの名無しさん
19/08/09 13:27:04.59 F1quTbHl.net
@b = grep {$n < $_ and {$n = $_}} @a;
こうやりゃいいんだよ
93:デフォルトの名無しさん
19/08/09 13:51:55.80 3hMObOjl.net
この方がいいだろ
@b = grep {$n < $_ and ($n = $_, 1)} @a;
94:デフォルトの名無しさん
19/08/10 22:54:55.68 wV6Kn1Zu.net
お題:
与えられた数列の要素の中で他と被っていない最小のものを求めよ
被っていない要素が存在しないときは-1を出力すること
例:
1,1,1,1,2,2,2,3,3,4 -> 4
1,2,3,4,5,5,4,3,2,1 -> -1
3,1,4,1,5,9,2,6,5,3,5 -> 2
95:デフォルトの名無しさん
19/08/11 00:46:36.68 In4DYV8Y.net
>>91 Perl5
use feature say;
use List::Util min;
for ([1,1,1,1,2,2,2,3,3,4], [1,2,3,4,5,5,4,3,2,1], [3,1,4,1,5,9,2,6,5,3,5]) {
my %h;
$h{$_}++ for @$_;
@s = grep{1 == $h{$_}} keys %h;
$" = ',';
say "@$_ -> ", @s ? min @s : -1;
}
実行例
~ $ perl 15_91.pl
1,1,1,1,2,2,2,3,3,4 -> 4
1,2,3,4,5,5,4,3,2,1 -> -1
3,1,4,1,5,9,2,6,5,3,5 -> 2
96:デフォルトの名無しさん
19/08/11 01:44:41.14 GTeyRs5o.net
>>91
perl5
URLリンク(ideone.com)
97:デフォルトの名無しさん
19/08/11 06:08:19.60 0wbGlMwh.net
>>91 Ruby
f = -> a {a.sort.group_by{|e| a.count(e)}[1]&.min || -1}
[
[1,1,1,1,2,2,2,3,3,4],
[1,2,3,4,5,5,4,3,2,1],
[3,1,4,1,5,9,2,6,5,3,5]
].each{|a| puts '%p => %s' % [a, f[a]]} # =>
[1, 1, 1, 1, 2, 2, 2, 3, 3, 4] => 4
[1, 2, 3, 4, 5, 5, 4, 3, 2, 1] => -1
[3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] => 2
98:デフォルトの名無しさん
19/08/11 06:11:31.27 0wbGlMwh.net
typo
f = -> a {a.uniq.group_by{|e| a.count(e)}[1]&.min || -1}
99:デフォルトの名無しさん
19/08/11 12:01:23.99 tGfhCIDM.net
>>91 ruby
[ [1,1,1,1,2,2,2,3,3,4], [1,2,3,4,5,5,4,3,2,1], [3,1,4,1,5,9,2,6,5,3,5] ].each{|ar|
print ar.join(','), " -> "
while (m = ar.min) && ar.count( m ) != 1
ar.delete( m )
end
puts m || -1
}
1,1,1,1,2,2,2,3,3,4 -> 4
1,2,3,4,5,5,4,3,2,1 -> -1
3,1,4,1,5,9,2,6,5,3,5 -> 2
100:デフォルトの名無しさん
19/08/11 13:17:24.76 In4DYV8Y.net
>>91 Perl5 >>92 よりもう少しシンプルに
use List::Util min;
for ('1,1,1,1,2,2,2,3,3,4', '1,2,3,4,5,5,4,3,2,1', '3,1,4,1,5,9,2,6,5,3,5') {
my %h;
$h{$_}++ for split ',';
$s = min grep{1 == $h{$_}} keys %h;
$s //= -1;
print "$_ -> $s\n";
}
実行結果
~ $ perl 15_91.pl
1,1,1,1,2,2,2,3,3,4 -> 4
1,2,3,4,5,5,4,3,2,1 -> -1
3,1,4,1,5,9,2,6,5,3,5 -> 2
101:蟻人間
19/08/11 13:23:49.66 NLZMdOh3.net
お題: 数独を素早く解くプログラム(ソルバー)。
102:デフォルトの名無しさん
19/08/11 16:53:20.83 RYQKURZ1.net
昔々Cで数独解くやつ普通に作ったことあるけど普通に作っても人間の感覚では一瞬にして答えが出ちゃうんだよな。ほとんどEnterキー押したらすぐ出る感じ。
そしてこれといって他にアルゴリズムは思い浮かばない。(誰もが思い付くであろう再起でマスに入れられる数を順番に入れてく方式ね)。
これ以上に「素早く」やる方法なんてあるんだろうか?
103:デフォルトの名無しさん
19/08/11 16:59:48.87 z7uw92+V.net
>>91
URLリンク(ideone.com)
C++。一応例題は解けたが妖しい処理になった。
104:デフォルトの名無しさん
19/08/11 17:06:50.80 z7uw92+V.net
>>91
URLリンク(ideone.com)
C++。これでどうじゃ。
バケットソートでいいじゃないか。プンプン。
105:デフォルトの名無しさん
19/08/11 17:17:47.99 z7uw92+V.net
#include <map>
template<class Container>
std::int64_t MakeHoge(const Container& D) {
std::map < Container::value_type, std::uint64_t> M;
for (auto& o : D) {
M[o]++;
}
for (auto& o : M) {
if (o.second == 1) {
return o.first;
}
}
return -1;
}
詰めまくってみた。C++。
106:デフォルトの名無しさん
19/08/11 17:20:29.72 z7uw92+V.net
#include <map>
template<class Container>
std::intmax_t MakeHoge3(const Container& D) {
std::map < Container::value_type, std::uintmax_t> M;
for (auto& o : D) {
M[o]++;
}
for (auto& o : M) {
if (o.second == 1) {
return o.first;
}
}
return -1;
}
しつこいけど、これ以上は無理ってくらい詰めた。
107:デフォルトの名無しさん
19/08/11 17:25:40.33 z7uw92+V.net
どうでもいいのですけど、MITライセンス。知ってますね。
108:蟻人間
19/08/11 17:33:34.70 NLZMdOh3.net
名無しにライセンス
109:デフォルトの名無しさん
19/08/11 17:43:12.84 z7uw92+V.net
URLリンク(ideone.com)
C++。大オチ。
駄文書きすぎた。
110:デフォルトの名無しさん
19/08/11 18:40:15.26 2JPwQqrg.net
prologのコード見せてよ
111:蟻人間
19/08/11 18:56:28.74 NLZMdOh3.net
お題: 論文「数独パズルの難易度判定」(大阪工業大学)を読んで、数独の難易度を判定するプログラムを作れ。
112:
19/08/11 19:37:12.10 EWNjTlvC.net
>>108
吸う毒難易度判定
初期値の与えられているマスが22以下:難問
22以上:簡単
113:蟻人間
19/08/11 19:48:53.81 NLZMdOh3.net
論文無視かよ
114:デフォルトの名無しさん
19/08/11 19:52:40.36 GTeyRs5o.net
お題出す前にその論文を簡約してよ
115:デフォルトの名無しさん
19/08/12 00:58:03.04 DPPVhuFK.net
>>91 Pharo/Squeak Smalltalk
| fn |
fn := [:arr | (arr asBag sortedElements detect: [:kv | kv value = 1] ifNone: [-1 -> 0]) key].
fn value: #(1 1 1 1 2 2 2 3 3 4). "=> 4 "
fn value: #(1 2 3 4 5 5 4 3 2 1). "=> -1 "
fn value: #(3 1 4 1 5 9 2 6 5 3 5). "=> 2 "
116:デフォルトの名無しさん
19/08/12 05:25:28.42 +GFDKMmL.net
>>91
Kotlin
URLリンク(paiza.io)
117:デフォルトの名無しさん
19/08/12 21:41:34.96 qMi+e5AX.net
>>91 Perl5 >>97 もう少しスマートに
for ('1,1,1,1,2,2,2,3,3,4', '1,2,3,4,5,5,4,3,2,1', '3,1,4,1,5,9,2,6,5,3,5') {
my %h;
$h{$_}++ for eval;
($s) = sort grep{1 == $h{$_}} keys %h;
$s //= -1;
print "$_ -> $s\n";
}
実行結果
~ $ perl 15_91_3.pl
1,1,1,1,2,2,2,3,3,4 -> 4
1,2,3,4,5,5,4,3,2,1 -> -1
3,1,4,1,5,9,2,6,5,3,5 -> 2
118:デフォルトの名無しさん
19/08/13 07:30:43.99 kJJDzO2R.net
>>91
Ruby で
# 数字の配列の配列。改行は削除
nums = <<"EOT".lines( chomp: true ).map{ |str| str.split( "," ).map( &:to_i ) }
1,1,1,1,2,2,2,3,3,4
1,2,3,4,5,5,4,3,2,1
3,1,4,1,5,9,2,6,5,3,5
EOT
results = nums.each_with_object( [ ] ) do |ary, results|
uniq_ary = ary.uniq # 重複排除
uniq_ary.sort! # ソート
res = -1
uniq_ary.each do |num|
if ary.count( num ) == 1
res = num; break
end
end
results.push res
end
p results #=> [4, -1, 2]
119:デフォルトの名無しさん
19/08/14 01:39:36.14 G04CimIq.net
>>91
VB
URLリンク(paiza.io)
120:デフォルトの名無しさん
19/08/14 01:45:59.79 spdKRMJM.net
>>116
うわぁ…山中俊次かよ
121:115
19/08/14 03:01:09.16 ms62dfnn.net
>>91
Ruby で、>>115 を修正した
# 数字の配列の配列。改行は削除
nums = <<"EOT".lines( chomp: true ).map{ |str| str.split( "," ).map( &:to_i ) }
1,1,1,1,2,2,2,3,3,4
1,2,3,4,5,5,4,3,2,1
3,1,4,1,5,9,2,6,5,3,5
EOT
def resolve( ary )
# 数字の出現回数を数える。Hash の初期値は、0
hash = ary.each_with_object( Hash.new( 0 ) ) {
|num, hash| hash[ num ] += 1 }
hash_2 = hash.select { |key, val| val == 1 } # 1回のもの
# キーでソートして、最小の数字を返す
number = Hash[ hash_2.sort ].keys.first
number = -1 if number == nil
number
end
p nums.map { |ary| resolve ary } #=> [4, -1, 2]
122:115
19/08/15 05:28:22.88 5MxOdPEK.net
>>118
の、resolve 関数を修正
# キーでソートして、最小の数字を返す
>number = Hash[ hash_2.sort ].keys.first
pair = Hash[ hash_2.sort ].first # [ key, value ]
keys を使うと、ハッシュのキー配列が作られるため、処理が多くなるので、修正します
def resolve( ary )
# 各数字の出現回数を数える。Hash の初期値は、0
hash = ary.each_with_object( Hash.new( 0 ) ) {
|num, hash| hash[ num ] += 1 }
hash_2 = hash.select { |key, val| val == 1 } # 1回のもの
# キーでソートして、最小の数字を返す
pair = Hash[ hash_2.sort ].first # [ key, value ]
if pair == nil
number = -1
else
number = pair[ 0 ] # key
end
number
end
123:デフォルトの名無しさん
19/08/16 00:38:41.91 eRShYMGh.net
お題: 任意の2桁の自然数の各桁を、1桁になるまで掛け算する回数の最大回数とその数を示せ
15なら1x5=5と1回
93なら9x3=27, 2x7=14, 1x4=3と3回
124:デフォルトの名無しさん
19/08/16 01:31:17.83 eRShYMGh.net
>>120
最後1x4=3じゃなくて1x4=4だった
125:デフォルトの名無しさん
19/08/16 04:22:25.57 JO1Ik9g1.net
>>120
common lisp
URLリンク(pastebin.com)
出力
15=>(5 1)
93=>(4 3)
66=>(8 3)
51=>(5 1)
52=>(0 2)
61=>(6 1)
11=>(1 1)
126:デフォルトの名無しさん
19/08/16 04:32:18.49 4vR5Al7i.net
>>120 Ruby 1桁以上に拡張してみた
def colmul( val )
n = 0
while val >= 10
ans = 1
begin
val, c = val.divmod( 10 )
ans *= c
n += 1
end while val >= 10
val *= ans
end
[n, val]
end
[15,93, 77, 123].each{|n|
puts "%5d %3d %d" % [n, *colmul( n )]
}
実行結果
15 1 5
93 3 4
77 4 8
123 2 6
127:デフォルトの名無しさん
19/08/16 07:11:52.40 idyJWhoT.net
>>120 Squeak Smalltalk (Pharo では若干の修正が必要)
| fn ans |
fn := [:n |
| count digits |
count := 0.
[(digits := n asString asArray collect: #digitValue) size > 1]
whileTrue: [n := digits reduce: #*. count := count + 1].
count
].
ans := Set with: nil->0.
fn value: 15. "=> 1 "
fn value: 93. "=> 3 "
fn value: 277777788888899. "=> 11 "
(1 to: 9) do: [:i |
(i to: 9) do: [:j |
| kv m |
kv := (m := i * 10 + j) -> (fn value: m).
kv value = ans anyOne value ifTrue: [ans add: kv].
kv value > ans anyOne value ifTrue: [ans removeAll; add: kv]
]
].
^ans asArray "=> {77->4} "
128:デフォルトの名無しさん
19/08/16 09:55:22.61 w6EX52R7.net
>>120 python
from operator import mul
def kake(n, ls):
__m = reduce(mul, map(lambda x:int(x), list(str(n)) ) )
__ls.append(m)
__if len(str(m)) == 1:
____return
__kake(m, ls)
test = [0, 1, 9, 11, 15, 51, 52, 61, 66, 77, 93, 123, 277777788888899]
for n in test:
__ls = []
__kake(n, ls)
__print "n="+str(n)+", "+"list="+str(ls)+", "+"len="+str(len(ls))+", "+"last="+str(ls[-1])
実行結果
n=0, list=[0], len=1, last=0
n=1, list=[1], len=1, last=1
n=9, list=[9], len=1, last=9
n=11, list=[1], len=1, last=1
n=15, list=[5], len=1, last=5
n=51, list=[5], len=1, last=5
n=52, list=[10, 0], len=2, last=0
n=61, list=[6], len=1, last=6
n=66, list=[36, 18, 8], len=3, last=8
n=77, list=[49, 36, 18, 8], len=4, last=8
n=93, list=[27, 14, 4], len=3, last=4
n=123, list=[6], len=1, last=6
n=277777788888899, list=[4996238671872L, 438939648, 4478976, 338688, 27648, 2688, 768, 336, 54, 20, 0], len=11, last=0
129:デフォルトの名無しさん
19/08/16 10:19:15.90 s+gRsoB0.net
>>120 Ruby
f = -> n {[(1..).find{10 > n = n.divmod(10).reduce(:*)}, n]}
(10..99).group_by{|i| f[i]}.max.tap{|m| m.last.each{|v| puts '%dは%d回で%dになる.' % [v, *m.first]}}
# => 77は4回で8になる.
130:デフォルトの名無しさん
19/08/16 11:35:03.96 Y33v+D/I.net
>>120 Perl5
use List::Util reduce;
for (qw{15 93 123 277777788888899}) {
($n, $i) = ($_, 0);
while (1 < length $n) {
$n = reduce {$a * $b} split '', $n;
$i++;
}
print "$_ -> $i回で $nになる\n";
}
実行結果
~ $ perl 15_120.pl
15 -> 1回で 5になる
93 -> 3回で 4になる
123 -> 1回で 6になる
277777788888899 -> 11回で 0になる
131:デフォルトの名無しさん
19/08/16 11:40:17.74 FoYt1ZXR.net
実用上、意味のないことは寝言という。
132:デフォルトの名無しさん
19/08/16 11:52:49.37 38QTrPdc.net
グッスリお休み。
133:デフォルトの名無しさん
19/08/16 17:08:53.11 /mNc+3sP.net
>>120
URLリンク(ideone.com)
C++. 暇だったので基数いじれるようにした。
ただし、デバッグはしてない。
134:デフォルトの名無しさん
19/08/16 19:41:08.88 4vR5Al7i.net
2x7x7x7x7x7x7x8x8x8x8x8x8x9x9=4996238671872
この段階で、掛け算14回じゃなくて1回になるの?
135:デフォルトの名無しさん
19/08/16 21:11:10.70 UOmTAtC9.net
元のお題は2桁の自然数なのでそれよりも桁が多いならその場合のルールも決めないとダメだろうな。
136:デフォルトの名無しさん
19/08/16 22:49:37.86 WXGx/ZZ4.net
> 2x7x7x7x7x7x7x8x8x8x8x8x8x9x9=4996238671872
を1回としても14回としても解き方はたいして変わらんからどっちでもいいと思う
とりあえず回答例見たら1回としてるみたいだから1回の方でいいんじゃね
137:デフォルトの名無しさん
19/08/17 05:49:01.88 He41kTu9.net
>>120
common lisp
URLリンク(pastebin.com)
任意の自然数に拡張した
split-num を実装してて思った
perl の数字と文字を自由に行き来できる cool型マジcool
138:デフォルトの名無しさん
19/08/17 05:57:53.54 He41kTu9.net
15=>(5 1)
93=>(4 3)
198=>(4 3)
468=>(8 3)
738=>(6 4)
793=>(4 4)
1748=>(6 3)
139:デフォルトの名無しさん
19/08/17 15:01:05.32 m7Zf+/1R.net
>>120 Perl5
use feature current_sub;
use List::Util reduce;
for (qw{15 93 123 277777788888899}) {
$i = 0;
$n = sub {
return shift if 1 == @_;
$i++, __SUB__->(split'', reduce {$a * $b } @_);
}->(split'');
print "$_ -> $i回で $nになる\n";
}
実行結果
~ $ perl 15_120_2.pl
15 -> 1回で 5になる
93 -> 3回で 4になる
123 -> 1回で 6になる
277777788888899 -> 11回で 0になる
140:さまよえる蟻人間
19/08/17 15:58:34.13 hkO+8710.net
お題: オカダンゴムシには進行中に壁にぶつかると左へ、次は右へ(あるいは右へ、次は左へ)と交互に曲がっていく習性がある。この行動は「交替性転向反応」といい、左右に交互に曲がる事で天敵から逃げられる確率を高めているといわれている(ウィキペディアより引用)。
何もない整数平面上にスタート地点(S)とゴール地点(G)が与えられる。仮想ダンゴムシ(@)の周辺に壁(#)をいくつか作って、スタート地点からゴール地点まで誘導せよ。
ただし、ダンゴムシは最初は右向きを向いていて、最初にぶつかったら左に曲がるものとする。
90度曲がって目の前にすぐに壁がある場合は同じ方へもう90度曲がるものとする。壁はいくつ作ってもよい。
例) S=(0, 0), G=(5, 2)
→#={(6, 0)}.
例) S=(1, 2), G=(-1, 1)
→#={(2, 2), (1, 3), (0, 2), (1, 0)}.
141:デフォルトの名無しさん
19/08/17 16:18:33.55 RHoMoFJP.net
>>137
ダンゴムシは初手でどこに向いてるの?北?Y+?X+?
142:さまよえる蟻人間
19/08/17 16:19:06.00 hkO+8710.net
ヒント: 最初、スタートとゴールを囲むように壁を仮設する。ぶつからない壁は要らない。
143:さまよえる蟻人間
19/08/17 16:20:08.58 hkO+8710.net
ダンゴムシはx軸方向です。y軸は数学と同じ上向きを仮定してます。
144:デフォルトの名無しさん
19/08/17 17:21:32.91 RHoMoFJP.net
Y+がビジュアライズして上になるかはビジュアライザーの挙動次第なのでいいのだけど。
最初はX+向いてるのね。承知。
145:デフォルトの名無しさん
19/08/17 17:25:39.14 RHoMoFJP.net
あ、もう一つあるんだ。
最初にダンゴムシが壁にぶつかったときは右と左どっち優先?
////
#
@#
////
の時。
方向がX+の時に左へターンしたら無限ループする。
逆に、方向がY+の時右にターンしたら無限ループする。
どや?
146:デフォルトの名無しさん
19/08/17 17:28:20.45 uIV5R7Aj.net
> ただし、ダンゴムシは最初は右向きを向いていて、最初にぶつかったら左に曲がるものとする。
147:デフォルトの名無しさん
19/08/17 17:29:33.02 wzQeNn8E.net
>>142
>90度曲がって目の前にすぐに壁がある場合は同じ方へもう90度曲がるものとする。
148:デフォルトの名無しさん
19/08/17 17:29:46.66 RHoMoFJP.net
すみません。見落としていました。
大変申し訳ありません。
149:デフォルトの名無しさん
19/08/17 19:06:19.57 c+Xct49t.net
クソコテの相手すんなよ
150:さまよえる蟻人間
19/08/17 20:39:30.65 hkO+8710.net
世界はクソにあふれている! 何てこった! この状況を! この状況を変えるためには、クソをせずに生きれる仕組みを! 皆様と一緒にクソをせずに生きれる仕組みを、実現して! 行きましょう!
151:デフォルトの名無しさん
19/08/17 23:18:56.65 +079Z1et.net
そこでファナモの出番なわけですよ
152:デフォルトの名無しさん
19/08/17 23:52:46.77 9or86GZG.net
それよりも交替性転換反応とやらが本当に生存確率を高めるのか
右にばかり曲がりたがる逃亡犯と左にしか曲がれない共産党員を例に
シミュレーションを繰り返すプログラムを書いて?(゚∀゚)
153:デフォルトの名無しさん
19/08/18 00:30:12.24 Onid3Fuw.net
FPSのレレレ撃ちでしょ
ゲームで実験結果がでているからYoutubeにGo
154:デフォルトの名無しさん
19/08/18 01:00:00.23 C9/yeHaG.net
あなた達は、実は自分で思っているほど
ソフトウエアの開発が得意ではないということに
まだ気がついてすら至っていない
155:さまよえる蟻人間
19/08/18 01:50:38.18 f2ZPM7Xh.net
>>151
そうだよね。ソフトクリーム作るのって大変だね。ちなみに英語ではジェラートだからね。
156:デフォルトの名無しさん
19/08/18 02:07:00.19 4oEGaRbg.net
>>151
君は、実は自分で思っているほど日本語が得意ではないということにまだ気づいていない。
157:デフォルトの名無しさん
19/08/18 02:25:43.87 zcvAoSag.net
そう来ると思っていました。
158:デフォルトの名無しさん
19/08/18 16:17:40.63 YNXq+wty.net
>>137
URLリンク(ideone.com)
C++。多分できた。
O(1)かも。
159:デフォルトの名無しさん
19/08/18 16:41:42.29 YNXq+wty.net
一番だよ~。ほめてほめて~~!!
160:デフォルトの名無しさん
19/08/18 17:02:53.87 MNRPGL9Z.net
乙。
161:デフォルトの名無しさん
19/08/18 17:05:38.20 Onid3Fuw.net
O(1)だよ
162:デフォルトの名無しさん
19/08/18 17:21:04.50 YNXq+wty.net
やっほーい。
163:さまよえる蟻人間
19/08/18 17:59:15.27 f2ZPM7Xh.net
スタート地点に壁を作ってるみたい。アルゴリズムの詰めが甘いようだ。
164:デフォルトの名無しさん
19/08/18 18:37:31.03 YNXq+wty.net
>>160
表示の問題です。では済まないかい?
場所は保持してるよ?
165:デフォルトの名無しさん
19/08/18 18:38:29.32 Y3okjmnX.net
>>137 Java
URLリンク(ideone.com)
166:さまよえる蟻人間
19/08/18 19:10:36.63 f2ZPM7Xh.net
>>162
正解。
167:さまよえる蟻人間
19/08/18 19:33:02.90 f2ZPM7Xh.net
お題: 壁で囲まれた何もない有限の部屋(面積5m^3前後)の中に、四方向に距離センサーが付いた、丸い形のお掃除ロボット(直径20cm)がある。
各距離センサーは、ロボットからその方向にある障害物までの距離を常に教えてくれる。
ロボットはその場で右または左に5度単位で自転するか、もしくは前方向に5cm単位で前進できる。
部屋全体のおおよその形がわかるまで、ロボットを動かしなさい。
例) 正方形の部屋
例) 正三角形の部屋
例) 凹の形の部屋
168:さまよえる蟻人間
19/08/18 19:46:24.23 f2ZPM7Xh.net
直径20cmが入り込めない隙間は無視、もしくは壁と見なす。
スクリーンショットか動画を作れたら、30点加点する。
169:デフォルトの名無しさん
19/08/18 19:59:22.35 Y3okjmnX.net
面積なのに^3とはこれ�
170:@何に
171:さまよえる蟻人間
19/08/18 20:17:13.38 OH7aQxbJ.net
>>164 >>166
訂正。m^2です。
参考資料:直線と線分の当たり判定
URLリンク(spphire9.wordpress.com)直線と線分の当たり判定/
172:デフォルトの名無しさん
19/08/19 11:34:00.91 icNxZHqv.net
>>164
部屋の壁の構成が凹を基本としたヒルベルト曲線だったら「おおよその形」はそのロボットのAIは何と答えればいいの?
URLリンク(cdn-ak.f.st-hatena.com)
173:デフォルトの名無しさん
19/08/19 11:46:10.65 icNxZHqv.net
もしくは、「壁」とは何か
174:デフォルトの名無しさん
19/08/19 12:00:44.91 78Wz1qhX.net
>>160
一晩かんがえてみたんだけどね、ゆる~くね。
スタートに壁作るなとは書いてないよね??
175:デフォルトの名無しさん
19/08/19 12:36:53.71 ChF0jSyn.net
4個目のスタート地点の壁を許しても、3個目の答えが間違えてるやん?
[-1,1]の壁を1回透過しないとゴールにたどり着けないやん?
まあ [*いしのなかにいる*] は許されないと思うけどw
176:デフォルトの名無しさん
19/08/19 12:50:21.54 78Wz1qhX.net
>>171
あぁ、なるほど、先において起動させる前提なのか。
オレ、動的にターン制で考えてたわ。
177:デフォルトの名無しさん
19/08/19 13:04:09.25 ChF0jSyn.net
動的ターン制って考えは思いつかんかった
その考えなら>>155でも問題ないな
178:デフォルトの名無しさん
19/08/19 13:05:56.48 78Wz1qhX.net
握手(非強制)
179:さまよえる蟻人間
19/08/19 13:45:26.16 5pda5jNo.net
部屋の形を表すビットマップ画像、もしくは一個以上の多角形でいいよ。
180:さまよえる蟻人間
19/08/19 13:49:12.41 5pda5jNo.net
誤差は気にしない、気にしない。
181:さまよえる蟻人間
19/08/19 13:53:20.88 5pda5jNo.net
>>173
壁をいつ置くかの記述がなかった、設問の不備ということで、正解、にしときます。すみません。
182:デフォルトの名無しさん
19/08/19 21:12:29.11 78Wz1qhX.net
及第点!
183:デフォルトの名無しさん
19/08/19 21:48:51.89 KFTDhNgP.net
コテのくせに偉そうだな
184:デフォルトの名無しさん
19/08/20 03:10:44.70 p19J/GFP.net
アスペばっかやんけこのスレ
185:デフォルトの名無しさん
19/08/23 16:30:48.96 GCcQKmFF.net
>>32
perl5
URLリンク(ideone.com)
ずいぶん前のお題だが面白い回答ができたので再提出
再帰する正規表現に perl-code 内蔵の正規表現
たぶんウルトラレア
186:デフォルトの名無しさん
19/08/27 08:48:20.54 //c3Bn/y.net
>>4 Java
URLリンク(ideone.com)
>>5-6
> T = std::max(T,UI(mt));
> if (T >= C) { Re++; }
保持してる最大値でもう一回振るかどうか決めちゃってないかい?
187:デフォルトの名無しさん
19/08/27 20:29:01.48 ZWZUVJ+Q.net
>>182
振ったダイスが閾値超えてたら次の回を一回プラスしてる。
閾値C以上ならという判断。
188:デフォルトの名無しさん
19/08/27 20:38:02.13 ZWZUVJ+Q.net
あ、勘違いしてた。ちょっと待ってて。
189:デフォルトの名無しさん
19/08/27 20:41:11.53 ZWZUVJ+Q.net
>>4
URLリンク(ideone.com)
C++。フォークして修正してみた。これでいいかなぁ。
190:デフォルトの名無しさん
19/08/27 21:01:10.99 //c3Bn/y.net
俺のとあってるし多分いいんじゃね?わからんが
でも>>5-6の時点で出題者からの突っ込みがないのが気になる
出題者出てきてー
191:デフォルトの名無しさん
19/08/27 21:06:40.25 ZWZUVJ+Q.net
URLリンク(ideone.com)
しつこいけど、変数名のかぶりが気持ち悪かったので書き直した。
それと、手元でデバッグ軽くやっておいた。
192:デフォルトの名無しさん
19/08/27 21:10:12.33 ZWZUVJ+Q.net
>>186
そりゃよかった。
出題者に宿題解かされたかな??
193:デフォルトの名無しさん
19/08/27 22:42:10.07 ZWZUVJ+Q.net
お題:値が変更不可能でインデックスだけ参照できるシャッフルされた配列を何らかの方法でソートする。その際配列や値のコピーは取れない。
C++でいう、constの配列をなんとか整列してみましょう。
自分の答え。:URLリンク(ideone.com)
194:デフォルトの名無しさん
19/08/28 00:04:27.28 4LHTj8UL.net
>>189 Perl5
use List::Util shuffle;
@a = shuffle 1..10;
@ix = 0..$#a;
print "@a\n";
@iy = sort{$a[$a] <=> $a[$b]} @ix;
print "@a[@iy]\n";
実行例
~ $ perl 15_189.pl
5 2 4 8 3 10 6 9 1 7
1 2 3 4 5 6 7 8 9 10
195:デフォルトの名無しさん
19/08/28 00:57:09.32 iZEqAFR9.net
激お題:自動プログラミングプログラムを作るか日本語で説明せよ。方法は各自の言語にゆだねる。
URLリンク(ideone.com)
自分は上記のようなものを作った。
4kb位のプログラムができるのに多分数年かかる。
コンパイラの通ったかというのを取れれば文章的に正しいやつは何かを残していく。
でも、コンパイラに投げる動作はわからないので入れてない。
196:デフォルトの名無しさん
19/08/28 01:00:49.34 iZEqAFR9.net
>>190
perlわからないけど、参加してくれてありがとう。
コードが短くて羨ましい。
197:デフォルトの名無しさん
19/08/28 01:14:30.34 mmOF8lug.net
>>191 ナンジャそれは、お題でもなんでもない。 まず日本語の勉強をして出直してこい。
お題も人に解る様に出せないような人間はプログラマの素質はない。
198:デフォルトの名無しさん
19/08/28 01:51:57.69 iZEqAFR9.net
>>193
どこが解りにくかったですか?
テストコードは、言語で使える英数記号類を全探索するモノです。
199:デフォルトの名無しさん
19/08/28 12:29:21.50 gV1iThk/.net
>>194
>>191全体
200:デフォルトの名無しさん
19/08/28 14:09:15.46 iZEqAFR9.net
>>195
お題と余談が書いてあるだけだぞ。
とりあえず、刮目して自動プログラミングプログラムを作ってください。
作れなさそうなら、概要を日本語で説明してください。
201:デフォルトの名無しさん
19/08/28 14:20:49.15 iHRPACN2.net
まず自動プログラミングプログラムってなんだよ
お前の造語なんか知らんわ
202:デフォルトの名無しさん
19/08/28 14:40:15.76 9ymulh1y.net
ドメイン特化言語作れってことか?
203:デフォルトの名無しさん
19/08/28 14:40:49.41 gV1iThk/.net
>>189
Kotlin
URLリンク(paiza.io)
こんなので良いのかな?
厳密に言ったら最後の出力文字列を作る時の map で値が取り出されて新たなリスト作るからコピーされちゃってんだけどね。
204:デフォルトの名無しさん
19/08/28 14:47:42.49 iZEqAFR9.net
「自動プログラミング」「プログラム」ですが何か。
DSLじゃないわ。
205:デフォルトの名無しさん
19/08/28 14:52:51.27 CKrqMRiB.net
1文字ごとにカンマが入って空白or改行を使わないプログラミング言語ってなんだろう…?
4kb(この表記だとビットかバイトかわからん)が数年で行けるってどういう計算だろう…?
206:デフォルトの名無しさん
19/08/28 14:59:27.89 iZEqAFR9.net
>>199
暗黙変数があるとオレ、フリーズしちゃうなぁ。
やったことない言語だけど、結果はあってると思う。
207:デフォルトの名無しさん
19/08/28 15:03:25.48 iZEqAFR9.net
>>201
文字の列挙のリストには抜けがあるかもしれない。
C++は改行しなくても空白さえあればかける気がするけど。
なお、字数が増えれば増えるほど遅くなる。
とりあえず、実行してみればわかるけど、検索文字を総当たりしてるだけだからね。
んで、コンパイラに投げて通るかどうかのチェック入れないといけないんだ。
208:デフォルトの名無しさん
19/08/28 15:06:25.36 iZEqAFR9.net
>>201
あぁ、指摘には感謝しておく。
4kbは大体4千字くらいか。
209:デフォルトの名無しさん
19/08/28 15:59:11.53 CKrqMRiB.net
字数が増えれば増えるほど遅くなる、の遅くなり具合がわかってない気がする
使用する文字の種類を60とした場合、総当たりで毎秒10億個生成できても19年で10文字くらいだよ
210:デフォルトの名無しさん
19/08/28 16:09:46.11 DKDzG5Os.net
ただの無限の猿定理では?
211:デフォルトの名無しさん
19/08/28 16:18:28.21 iZEqAFR9.net
>>205
うほ!そんな遅いんかいな。
オーダーよりパッションで作ったのでそこまで考えてない。
それが・・・現実・・・!!!
>>206
そんなかんじだねぇ。
212:デフォルトの名無しさん
19/08/28 16:19:08.51 DKDzG5Os.net
設問が悪い。
自動プログラミングプログラムの出力が不正でなければ良い→コンパイルエラーないしはランタイムエラーを出さない、で良いの?
phpのソースを書き出せば問題ない。
ランダムな文字列を出力し続けても、文字空間が64文字であれば、5文字目以降、毎回1/1073741824で失敗するがそれ以外のケースで自分自身を表示する正しいプログラムになる。
213:デフォルトの名無しさん
19/08/28 16:42:26.29 e0ao7N2r.net
>>200 自動プログラミングが何で数字の羅列なんだよ。
何処がプログラミングだよ。 こんな物どんなコンパイラを通したら意味を持ったプログラムになるんだよ。
214:デフォルトの名無しさん
19/08/28 16:43:40.35 e0ao7N2r.net
>>200 自分が日本語で説明してみろよ。
215:デフォルトの名無しさん
19/08/28 17:16:03.37 iZEqAFR9.net
>>209
エーっと、C/C++はポインタがあるので実行したマシン破壊する確率は高いな。
わざと文書的に正しければと書いてあるんだが、気づいてないな。
>>208
そうですなぁ。チェッカーがエラーを吐かないでよかった気がする。
216:デフォルトの名無しさん
19/08/28 17:16:54.34 iZEqAFR9.net
とりあえず、絶不評なので>>191は終了します。
お付き合いいただきありがとうございました。
217:デフォルトの名無しさん
19/08/28 17:33:20.06 DKDzG5Os.net
ガチでやるなら遺伝的アルゴリズムで遊んだほうが面白そうな話題ではある。
総当たりは分が悪い。
218:デフォルトの名無しさん
19/08/28 18:50:08.98 sIwi/wTh.net
みんなまじめに小学生の相手して偉いなぁ
219:デフォルトの名無しさん
19/08/28 19:02:24.38 31wF8+fr.net
ネットでプログラムとかコードとかの記事検索して予約語が含まれるセンテンスをコピペするプログラムとかどう?(゚∀゚)<これを自動プログラミングと呼べるかどうか知らんけど
220:デフォルトの名無しさん
19/08/28 19:28:19.63 gV1iThk/.net
>>212
最後まで何をやらせたいのかわからなかった。
221:デフォルトの名無しさん
19/08/28 20:50:01.23 f9cLfftu.net
>>214
そいつは小学生じゃなくて
わりと高齢の池沼だと思う
222:デフォルトの名無しさん
19/08/29 00:02:26.73 gFHz9oC8.net
まあ例のコテロートルだろうな
223:さまよえる蟻人間
19/08/29 00:48:42.64 5IzqEHY7.net
お題: 入力として任意の長さのバイト列(半角アルファベット)が与えられる。入力を左から読み取っていくとき、
読み込まれるバイトの状態遷移を表すデータまたは画像を出力せよ。ただし、初期状態は'^'、終了状態は'$'で
表すものとし、状態遷移図のノードには重複がないものとする。
例)
"AKDAK"
→
^: A.
A: K.
K: D$.
D: A.
$: .
224:デフォルトの名無しさん
19/08/29 01:15:35.61 goo8Bnc2.net
mousukosikangaetekarasyutudasisiroyokusokotega
225:さまよえる蟻人間
19/08/29 03:44:38.74 +saAg95g.net
>>220
kantansugitakana?
226:デフォルトの名無しさん
19/08/29 11:53:46.40 DcYjq8Qg.net
nande2do$ga deterunda?
227:デフォルトの名無しさん
19/08/29 13:28:32.46 gjTy67rx.net
>>219
> 読み込まれるバイトの状態遷移を表すデータまたは画像
とは何か?
228:さまよえる蟻人間
19/08/29 20:14:38.43 +saAg95g.net
>>223
状態遷移図。
229:デフォルトの名無しさん
19/08/29 20:21:57.74 1SU6nQHs.net
ループまで検出シロっていってるのかいな?
230:デフォルトの名無しさん
19/08/30 00:51:59.58 0mnJOhtL.net
>>222
D$は、Dに遷移するか、または、$に遷移するって意味じゃないかな
231:デフォルトの名無しさん
19/08/30 01:22:20.46 Knt08H1L.net
ちゃうやろJK
edgeの終端が二股は有効グラフではNGやで
232:デフォルトの名無しさん
19/08/30 06:09:58.43 N+Bub+CM.net
お題
1億以下の同じ数字でできている数(1,22,777など)をすべて表示する
233:デフォルトの名無しさん
19/08/30 06:52:02.20 BnHn7wdj.net
>>228
perl5
URLリンク(ideone.com)
234:デフォルトの名無しさん
19/08/30 06:53:07.28 BnHn7wdj.net
0抜けてた悔しい
235:デフォルトの名無しさん
19/08/30 07:10:25.46 N+Bub+CM.net
>>228
自然数を対象とします。なので0は対象外。
236:デフォルトの名無しさん
19/08/30 10:00:13.13 /ZgOmfmJ.net
>>228 Ruby
p (1...9).flat_map{|i| (1..9).map{|j| j * (10**i - 1) / 9}}
# => [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44, 55, 66, 77, 88, 99,
111, 222, 333, 444, 555, 666, 777, 888, 999, 1111, 2222, 3333,
4444, 5555, 6666, 7777, 8888, 9999, 11111, 22222, 33333, 44444,
55555, 66666, 77777, 88888, 99999, 111111, 222222, 333333,
444444, 555555, 666666, 777777, 888888, 999999, 1111111,
2222222, 3333333, 4444444, 5555555, 6666666, 7777777, 8888888,
9999999, 11111111, 22222222, 33333333, 44444444, 55555555,
66666666, 77777777, 88888888, 99999999]
237:デフォルトの名無しさん
19/08/30 10:54:33.08 TOyFnU58.net
>>228 Google Sheets
=ARRAYFORMULA(REPT(ROW(1:9), COLUMN(A:H)))
URLリンク(i.imgur.com)
238:デフォルトの名無しさん
19/08/30 11:37:28.31 Kz4M8rdT.net
>>233
評価。
239:デフォルトの名無しさん
19/08/30 12:26:06.17 VkI78Ia/.net
>>228
同じ数字でできている数って?どういう意味?
240:デフォルトの名無しさん
19/08/30 12:27:00.95 VkI78Ia/.net
あ、わかった。ごめん。
241:デフォルトの名無しさん
19/08/30 13:32:59.48 Tn7+4gKU.net
>>228 Pharo/Squeak Smalltalk
(1 to: 8) gather: [:n | (1 to: 9) collect: [:m | (Array new: n withAll: m) polynomialEval: 10]]
#(1 2 3 4 5 6 7 8 9 11 22 33 44 55 66 77 88 99 111 222 333 444 555 666 777 888 999
1111 2222 3333 4444 5555 6666 7777 8888 9999 11111 22222 33333 44444 55555 66666
77777 88888 99999 111111 222222 333333 444444 555555 666666 777777 888888 999999
1111111 2222222 3333333 4444444 5555555 6666666 7777777 8888888 9999999 11111111
22222222 33333333 44444444 55555555 66666666 77777777 88888888 99999999)
242:デフォルトの名無しさん
19/08/30 16:39:32.33 BnHn7wdj.net
遅いけど perl5
for (1..100_000_000) { print if s{\A (.) \1* \z}{$& }x }
1 2 3 4 5 6 7 8 9 11 22 33 44 55 66 77 88 99 111 222 333 444 555 666 777 888 999
1111 2222 3333 4444 5555 6666 7777 8888 9999 11111 22222 33333 44444 55555 66666
77777 88888 99999 111111 222222 333333 444444 555555 666666 777777 888888 999999
1111111 2222222 3333333 4444444 5555555 6666666 7777777 8888888 9999999 11111111
22222222 33333333 44444444 55555555 66666666 77777777 88888888 99999999
243:デフォルトの名無しさん
19/08/30 18:36:49.98 9N6Bd3Tw.net
>>91
Haskell
main = mapM_ (print.only)
[
[1,1,1,1,2,2,2,3,3,4],
[1,2,3,4,5,5,4,3,2,1],
[3,1,4,1,5,9,2,6,5,3,5]
]
only ns = f [xs | xs <- (group.sort) ns, length xs == 1]
where
f [] = -1
f ([x]:_) = x
ワンライナーも出来るけど、何やってるか読み取り辛い。
only ns = if lst == [] then -1 else (head.head) lst where lst = [xs | xs <- (group.sort) ns, length xs == 1]
244:デフォルトの名無しさん
19/08/30 19:34:06.70 9dkB4daP.net
>>228
あほ
245:デフォルトの名無しさん
19/08/30 23:12:37.99 aECV+bPz.net
>>228 Perl5
@s = map{$a=$_; map{$_ x $a} 1..9} 1..8;
print "@s";
実行;
~ $ perl 15_228.pl
1 2 3 4 5 6 7 8 9 11 22 33 44 55 66 77 88 99 111 222 333
444 555 666 777 888 999 1111 2222 3333 4444 5555 6666
7777 8888 9999 11111 22222 33333 44444 55555 66666 77777
88888 99999 111111 222222 333333 444444 555555 666666 777777
888888 999999 1111111 2222222 3333333 4444444 5555555 6666666
7777777 8888888 9999999 11111111 22222222 33333333 44444444
55555555 66666666 77777777 88888888 99999999
246:デフォルトの名無しさん
19/08/30 23:55:50.54 olp7cGEF.net
>>228
Kotlin
URLリンク(paiza.io)
247:デフォルトの名無しさん
19/08/31 05:23:58.92 aUqRNM/Y.net
a = 0
for i = 1, 8 do
a = a * 10 + 1
for j = a, a * 9, a do
print(j)
end
end
>>228 Lua
248:デフォルトの名無しさん
19/08/31 08:18:15.37 rAMLyuja.net
>>228
Haskell
import Data.List
main = (print.sort.concat) [[(sum.take a) [x * 10 ^ y | y <- [0..9]] | x <- [1..9]]| a <- [1..8]]
249:デフォルトの名無しさん
19/08/31 08:45:29.92 h26kuCJS.net
お題
>>228 を求めることができる
特に最適化を施さないナイーブな実装(例えば>>238 )を書いて
その実行にかかる時間(ミリ秒、秒等)を計測し出力してください
なお遅い言語処理系で1億以下が無理な場合は1千万以下でも構いません
250:デフォルトの名無しさん
19/08/31 10:03:16.75 4OmVCRqb.net
time perl -e 'for (1..100_000_000) { print if s{\A (.) \1* \z}{$& }x }'
1 2 3 4 5 6 7 8 9 11 22 33 44 55 66 77 88 99 111 222 333 444 555 666 777 888 999
1111 2222 3333 4444 5555 6666 7777 8888 9999 11111 22222 33333 44444 55555 66666
77777 88888 99999 111111 222222 333333 444444 555555 666666 777777 888888 999999
1111111 2222222 3333333 4444444 5555555 6666666 7777777 8888888 9999999 11111111
22222222 33333333 44444444 55555555 66666666 77777777 88888888 99999999
real 1m30.031s
user 1m29.046s
sys 0m0.093s
251:デフォルトの名無しさん
19/08/31 10:56:28.19 Z8IDlpBx.net
>>245 Pharo/Squeak Smalltalk
| time ans |
time := [ans := (1 to: 100000000) select: [:n | n asString asSet size = 1]] timeToRun.
^{time. ans}
"Core m3-8100Y => an Array(0:00:02:55.58 #(1 2 3 4 5 6 7 8 9 11 22 33 44 55 66 77 88 99 111
222 333 444 555 666 777 888 999 1111 2222 3333 4444 5555 6666 7777 8888 9999 11111
22222 33333 44444 55555 66666 77777 88888 99999 111111 222222 333333 444444 555555
666666 777777 888888 999999 1111111 2222222 3333333 4444444 5555555 6666666 7777777
8888888 9999999 11111111 22222222 33333333 44444444 55555555 66666666 77777777
88888888 99999999)) "
252:デフォルトの名無しさん
19/08/31 10:58:35.47 8/I1hpDH.net
>>245 Perl5、1千万以下、CPU: Core i5 M520@2.4GHz
use Time::HiRes qw(gettimeofday tv_interval);
$t0 = [gettimeofday];
for (1..1e8) {
push @s, $_ if /^(.)\1*$/;
}
$elapse = tv_interval($t0, [gettimeofday]);
printf "@s\n%.3f[s]\n", $elapse;
実行結果
~ $ perl 15_245.pl
1 2 3 4 5 6 7 8 9 11 22 33 44 55 66 77 88 99 111 222 333 444 555 666 777 888 999
1111 2222 3333 4444 5555 6666 7777 8888 9999 11111 22222 33333 44444 55555 66666
77777 88888 99999 111111 222222 333333 444444 555555 666666 777777 888888 999999
1111111 2222222 3333333 4444444 5555555 6666666 7777777 8888888 9999999
49.732[s]
253:デフォルトの名無しさん
19/08/31 11:35:18.32 weQXwxl4.net
>>245 Java
URLリンク(ideone.com)
Pentium G6950@2.8GHz
整数演算: 1,073ms
正規表現: 46,450ms
Ideone
整数演算: 495ms
正規表現: 2,592ms (これだけ1千万以下で計測)
254:デフォルトの名無しさん
19/08/31 12:36:03.19 E0AleLqQ.net
>>120
Haskell
main = map (\n -> f n 0) [15,93,77,123]
f n a | n < 10 = (n,a)
f n a = f (product [read [x] | x <- show n]) (a + 1)
255:デフォルトの名無しさん
19/08/31 12:47:22.94 8/I1hpDH.net
>>245 c99、 Core i5 M520@2.4GHz
#include <time.h>
#include <math.h>
#include <stdio.h>
int main() {
int b = 1, n = 1;
clock_t s = clock();
for (int e = 1; e <= 9; e++) {
int j = pow(10, e) - pow(10, e - 1);
for (int i = 1; i <= j; i
256:++) { if (n == (n / b) * b) printf("%d ", n); n++; } b *= 10; b += 1; } clock_t e = clock(); printf("\n%.3f[s]\n", (double)(e - s)/1e6); } 実行結果 $ cc -std=c99 -O2 15_245.c -lm $ time ./a.out 1 2 3 4 5 6 7 8 9 11 22 33 44 55 66 77 88 99 111 222 333 444 555 666 777 888 999 1111 2222 3333 4444 5555 6666 7777 8888 9999 11111 22222 33333 44444 55555 66666 77777 88888 99999 111111 222222 333333 444444 555555 666666 777777 888888 999999 1111111 2222222 3333333 4444444 5555555 6666666 7777777 8888888 9999999 11111111 22222222 33333333 44444444 55555555 66666666 77777777 88888888 99999999 111111111 222222222 333333333 444444444 555555555 666666666 777777777 888888888 999999999 3.890[s]
257:デフォルトの名無しさん
19/08/31 13:39:39.88 u8Io5isX.net
>>228
URLリンク(ideone.com)
C++。いつもなら数え上げで書くところだが、今回は趣向を変えてみた。
258:デフォルトの名無しさん
19/08/31 13:43:00.43 weQXwxl4.net
>>252
>>231
> 自然数を対象とします。なので0は対象外。
すぺしゃらいずいらねw
259:デフォルトの名無しさん
19/08/31 13:44:48.13 u8Io5isX.net
ぶー!!!
・・・これが・・・!!!・・・これこそが・・・!!!
・・・だ・・・!!!・・・だそく・・・!!!!
260:デフォルトの名無しさん
19/08/31 13:45:31.08 u8Io5isX.net
間に合った。 >>253 サンキュー。
261:デフォルトの名無しさん
19/08/31 15:12:57.30 RMcMP/J8.net
>>245
Haskell ナイーブな方
Atomコア(Celeron N3050@1.6GHz)
1億以下で約31秒
main = print [x | x <- [1..100000000], let (s:ss) = show x, all (== s) ss]
time ./zorome
real 0m31.426s
user 0m31.123s
sys 0m0.248s
ナイーブな方は探すアルゴリズムで、最適化の方(>>244)は数列を作るアルゴリズム。
(1から99999999までの(1桁から8桁までの)ゾロ目を作る)
[
[[1],[1,10],[1,10,100]...],
[[2],[2,20],[2,20,200]...],
...,
[[9],[9,90],[9,90,900]...]]
]
って言う数列を生成して、合計出してフラットにしてソートしてるだけだよ。
(他の言語のも多少の手順の違い(フラット化とソートしないで「合計出した時点で表示」を縦方向に繰り返したり)はあるけど、基本のアルゴリズムとしては同じ)
262:デフォルトの名無しさん
19/09/01 18:40:58.06 lGQcNl0x.net
お題: nバイトのデータxをビット列にして出力しなさい
263:デフォルトの名無しさん
19/09/01 19:01:25.42 KcbCTlPY.net
>>257 Java
URLリンク(ideone.com)
264:デフォルトの名無しさん
19/09/01 19:32:51.46 VqTK6sxa.net
>>257 Perl5
$n = 24;
@a = map{int rand 255} 1..$n;;
print "@a\n";
@b = map{sprintf'%08b', $_} @a;
$" = '';
print "@b\n
実行例
~ $ perl 15_257.pl
155 105 94 58 85 82 124 6 242 94 119 175 69 205 95 25 79 154 237 248 169 254 46 93
100110110110100101011110001110100101010101010010011111000000011011110010010111100111011110101111010001011100110101011111000110010100111110011010111011011111100010101001111111100010111001011101
265:デフォルトの名無しさん
19/09/01 19:42:33.97 931SdLmv.net
>>257 Common Lisp
URLリンク(ideone.com)
266:デフォルトの名無しさん
19/09/01 20:53:53.13 kwhZ+eUh.net
>>259
rand 255 ⇒ 256 の方がヨカタ
267:デフォルトの名無しさん
19/09/01 21:45:06.97 CELgatxy.net
>>259 コピペミス
print "@b\n
↓
print "@b\n";
268:デフォルトの名無しさん
19/09/02 02:56:48.97 oioFkvSQ.net
>>120
>>125 みたいに、1桁になるまでの変化の様子もリストで渡すようにした。
Haskell
main = mapM put [4,15,93,77,123,277777788888899]
put x = (putStrLn.concat) [show x," -> ",show a,
" loop and value is ",show n,". list = ",show l]
where (l,a,n) = f [] 0 x
f l a n| n < 10 = (reverse l,a,n)
f l a n = f (m:l) (a + 1) m
where m = product [read [x] | x <- show n]
269:デフォルトの名無しさん
19/09/02 02:57:17.93 oioFkvSQ.net
out:
4 -> 0 loop and value is 4. list = []
15 -> 1 loop and value is 5. list = [5]
93 -> 3 loop and value is 4. list = [27,14,4]
77 -> 4 loop and value is 8. list = [49,36,18,8]
123 -> 1 loop and value is 6. list = [6]
277777788888899 -> 11 loop and value is 0. list = [4996238671872,438939648,4478976,338688,27648,2688,768,336,54,20,0]
270:デフォルトの名無しさん
19/09/02 06:37:20.55 6t6D41pn.net
>>257 Ruby
n = 16
x = Array.new(n){rand(0x100)}
b = n.times.reduce(0){|s, i| x[~i] * 0x100**i + s}
puts "%p => %0#{n}b" % [x, b]
# => [31, 95, 43, 108, 105, 54, 1, 122, 100, 48, 137, 121, 131, 188, 105, 244] =>
11111010111110010101101101100011010010011011000000001011110100110010000110000100010010111100110000011101111000110100111110100
271:デフォルトの名無しさん
19/09/02 06:39:28.02 6t6D41pn.net
typo
puts "%p => %0#{n * 8}b" % [x, b]
# => [31, 95, 43, 108, 105, 54, 1, 122, 100, 48, 137, 121, 131, 188, 105, 244] =>
00011111010111110010101101101100011010010011011000000001011110100110010000110000100010010111100110000011101111000110100111110
100
272:デフォルトの名無しさん
19/09/02 12:10:04.08 rT9Zixkt.net
>>233
勉強になりましたw
273:デフォルトの名無しさん
19/09/02 12:49:28.87 YYsNPCXj.net
>>257
URLリンク(ideone.com)
C++。気が向いたのでstd::byte動かしてみたけど、ideonが対応してなくてグレードダウンした・・・。
274:デフォルトの名無しさん
19/09/02 15:10:33.79 rT9Zixkt.net
全滅エンドか!?
275:デフォルトの名無しさん
19/09/02 21:31:28.92 qij/0ceW.net
>>247
VB
URLリンク(paiza.io)
276:デフォルトの名無しさん
19/09/03 02:08:35.68 FeqFVaAA.net
>>228
aa=$(echo ^{1..9}\\\{1,\\\}\$\\\| |sed -e "s/ //g; s/\\\|$//;"); seq 1 $((10**8)) |grep -e "$aa"
277:デフォルトの名無しさん
19/09/03 03:13:14.41 4SpqHsfM.net
数学的な解き方わからず
このx>=3の自然数解を見つける
a>b、 (a^2 - b^2)^x + (2ab)^y = (a^2 + b^2)^z
278:272
19/09/03 05:28:10.06 VYSmTHvF.net
a=2 b=1で 3^x + 4^y = 5^z
は解無し
279:デフォルトの名無しさん
19/09/03 08:27:27.03 Sk67xQLY.net
a b は実数? 正の整数?
280:デフォルトの名無しさん
19/09/03 08:38:58.69 VYSmTHvF.net
出てくる文字、a b x y z はすべて自然数、正の整数です
281:デフォルトの名無しさん
19/09/03 08:39:49.44 03sYx3ae.net
a > b > 0 なの?
0 > a なら意味ないんだけど
出題者が問題をそもそも理解してなさそう
282:デフォルトの名無しさん
19/09/03 08:44:26.60 VYSmTHvF.net
すべて1以上の整数として、
x>=3、 a>b、 (a^2 - b^2)^x + (2ab)^y = (a^2 + b^2)^z
を満たすものを見つける
そこでa=2 b=1の場合は解無しがわかっていて
任意のa,bに対して、(a^2 - b^2)^2 + (2ab)^2 = (a^2 + b^2)^2 が成り立つことも判っています
283:デフォルトの名無しさん
19/09/03 08:57:07.87 VYSmTHvF.net
指数2だと必ず成立するのはこれだからです
指数3以上で解けるのはどれか、あるかです
ピタゴラス数は無数にある
中学校の数学で習う定理に、「三平方の定理」或いは「ピタゴラスの定理」と呼ばれるものがある。
a^2 + b^2 = c^2 を満たす正の整数の組 (a, b, c) のことを、ピタゴラス数と呼ぶ。
例えば、(3, 4, 5) や (5, 12, 13) などは有名なピタゴラス数である。
ピタゴラス数が無限個存在する
任意の原始的ピタゴラス数 が (|m^2 ? n^2|, 2mn, m^2 + n^2) の形で表せることを示す。
URLリンク(nue2004.info)
284:デフォルトの名無しさん
19/09/03 09:27:31.81 fMS/rXUz.net
\ / .::::::::::::::::::::::::;;:;;::,ッ、::::::::: ) く 数 す
\ l ,ッィrj,rf'"'"'" lミ::::::: く れ 学 ま
Y ,!ミ::::::: ヽ な 野 な
`ヽ、 | くミ:::::::: ノ い 郎 い
|、__ ャー--_ニゞ `i::::,rく か は
``''ー- ゝ、'l  ゙̄´彑,ヾ }::;! ,ヘ.) ! 帰
゙ソ """"´` 〉 L_ っ
/ i , /| て r
≡=- 〈´ ,,.._ i 't-'゙ | ,へ ,r┘
,、yx=''" `ー{゙ _, -、 ; l レ' ヽr、⌒ヽ'
゙、`--─゙ /! `、
_,,、- ゙、 ー'' / ; `、
-''"_,,、-''" ゙、 /;;' ,' / 、\
-''" / `ー─''ぐ;;;;' ,' ノ
// / ヾ_、=ニ゙
285:デフォルトの名無しさん
19/09/03 13:20:54.78 SA/JpX4x.net
どう考えてもスレチだよなぁ
必要なのはプログラムじゃなく紙と鉛筆っぽいし
286:デフォルトの名無しさん
19/09/03 13:43:33.95 WMTa8Qij.net
このスレは数学嫌いな奴多いなぁ
べつにちょっとぐらいいいじゃないか
287:デフォルトの名無しさん
19/09/03 13:52:03.24 /IQ7x87c.net
むしろこのスレは本当にコンピューター使わないと解けないような
パズル問題とかの方が解答つかないことが多い
288:デフォルトの名無しさん
19/09/03 14:53:42.89 R1k47NOJ.net
掛け算があるので加速的に左の解が増えるので追い付かなくなる予感。
289:デフォルトの名無しさん
19/09/03 15:14:05.99 R1k47NOJ.net
>>272
URLリンク(ideone.com)
C++。コードが正しければ解ナシ。
290:デフォルトの名無しさん
19/09/03 15:15:29.58 R1k47NOJ.net
(a^2 - b^2)^x + (2ab)^y=0
(a^2 + b^2)^z=0
の連立方程式解くとよさそうに見えるが。
解くのむずくて俺は無理。