プログラミングのお題スレです。
【出題と回答例】
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/
宿題は宿題スレがあるのでそちらへ。
※前スレ
プログラミングのお題スレ Part14
http://mevius.5ch.net/test/read.cgi/tech/1558168409/
探検
プログラミングのお題スレ Part15
■ このスレッドは過去ログ倉庫に格納されています
2019/07/28(日) 19:39:57.54ID:832c/ukY
2019/08/06(火) 14:56:22.80ID:1YPxJa8a
お題@閑話休題。
https://ja.wikipedia.org/wiki/AKS素数判定法
AKSの実装。Prime is in P.
自分は挫折しました。数学解らない。
残骸:https://ideone.com/9e7Tyn
https://ja.wikipedia.org/wiki/AKS素数判定法
AKSの実装。Prime is in P.
自分は挫折しました。数学解らない。
残骸:https://ideone.com/9e7Tyn
2019/08/06(火) 14:57:44.83ID:1YPxJa8a
2019/08/06(火) 18:46:19.50ID:/2t+ALeN
お題: スターリンソートを実装せよ
2019/08/06(火) 19:06:50.12ID:Uq1zh0Vl
>>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
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
2019/08/06(火) 20:18:34.06ID:1YPxJa8a
>>73
要素粛清しながら見た目がそろっているというギャグかいな。
要素粛清しながら見た目がそろっているというギャグかいな。
2019/08/06(火) 20:54:47.97ID:1YPxJa8a
2019/08/07(水) 15:33:52.56ID:ts1kCtnm
>>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) "
| 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) "
2019/08/08(木) 00:35:30.37ID:X/CTiqlR
>>73
しばらくお題がないとおちつかないな
seq 300|sort -R | perl -ne ' if ($. == 1 or $_ > $hold) { print ; $hold = $_}'
しばらくお題がないとおちつかないな
seq 300|sort -R | perl -ne ' if ($. == 1 or $_ > $hold) { print ; $hold = $_}'
2019/08/08(木) 10:41:16.59ID:Q6oNbeov
>>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]
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]
2019/08/09(金) 00:37:57.26ID:F1quTbHl
>>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
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
81蟻人間 ◆T6xkBnTXz7B0
2019/08/09(金) 00:53:52.15ID:ZZ2ybqZz お題: 太陽系の各天体の位置を物理シミュレーションし、64日後の地球の位置を求めよ。
82蟻人間 ◆T6xkBnTXz7B0
2019/08/09(金) 01:17:32.06ID:JH0KcGUq 俺たちって計算能力でコペルニクスを超えられると思う? NASAのデータがあるから昔よりも楽だと思うけど。
2019/08/09(金) 01:27:37.54ID:F1quTbHl
2019/08/09(金) 04:16:04.61ID:eE0IZ4mx
>>83
ちょっとおもしろい
ちょっとおもしろい
2019/08/09(金) 08:43:53.16ID:Pwzp9noT
>64
地球の位置といってもいろいろあります。
地球の赤道を天球上に投影した、「赤経、赤緯」、太陽の天球上の
通り道を天球上に投影した「黄経、黄緯」がありますし、それも、地球の中心を
原点とした、「地心赤経、赤緯」、「地心黄経、黄緯」および、観測地点を原点とした
「地表赤経、赤緯」、「地表黄経、黄緯」もありますので、どれにするかによって
計算式が違ってきます。
なお、JPLでは、太陽と月、および冥王星までの精密位置計算用のプログラムを
発表しています。
期間がながいものは、−4000(B.C.4001)〜4000(A.D.)まで、計算できるものが
あります。
計算用のデータと、テスト用のFortranプログラムも附属しています。
地球の位置といってもいろいろあります。
地球の赤道を天球上に投影した、「赤経、赤緯」、太陽の天球上の
通り道を天球上に投影した「黄経、黄緯」がありますし、それも、地球の中心を
原点とした、「地心赤経、赤緯」、「地心黄経、黄緯」および、観測地点を原点とした
「地表赤経、赤緯」、「地表黄経、黄緯」もありますので、どれにするかによって
計算式が違ってきます。
なお、JPLでは、太陽と月、および冥王星までの精密位置計算用のプログラムを
発表しています。
期間がながいものは、−4000(B.C.4001)〜4000(A.D.)まで、計算できるものが
あります。
計算用のデータと、テスト用のFortranプログラムも附属しています。
2019/08/09(金) 12:56:08.85ID:1/DU+veY
Perlって読みにくいんだな
{とか@とか$とか使いまくる言語ってマジ苦手
{とか@とか$とか使いまくる言語ってマジ苦手
87デフォルトの名無しさん
2019/08/09(金) 13:03:13.21ID:OfLBByV9 RubyとPHPにケンカ売ってんの?
2019/08/09(金) 13:05:45.59ID:weGJYw8v
grep 内のboolian から最後の , 1 を取り除いたら
最初の0を拾わない
何というカオス
最初の0を拾わない
何というカオス
2019/08/09(金) 13:27:04.59ID:F1quTbHl
@b = grep {$n < $_ and {$n = $_}} @a;
こうやりゃいいんだよ
こうやりゃいいんだよ
2019/08/09(金) 13:51:55.80ID:3hMObOjl
この方がいいだろ
@b = grep {$n < $_ and ($n = $_, 1)} @a;
@b = grep {$n < $_ and ($n = $_, 1)} @a;
2019/08/10(土) 22:54:55.68ID:wV6Kn1Zu
お題:
与えられた数列の要素の中で他と被っていない最小のものを求めよ
被っていない要素が存在しないときは-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
与えられた数列の要素の中で他と被っていない最小のものを求めよ
被っていない要素が存在しないときは-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
2019/08/11(日) 00:46:36.68ID:In4DYV8Y
>>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
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
2019/08/11(日) 01:44:41.14ID:GTeyRs5o
2019/08/11(日) 06:08:19.60ID:0wbGlMwh
>>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
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
2019/08/11(日) 06:11:31.27ID:0wbGlMwh
typo
f = -> a {a.uniq.group_by{|e| a.count(e)}[1]&.min || -1}
f = -> a {a.uniq.group_by{|e| a.count(e)}[1]&.min || -1}
2019/08/11(日) 12:01:23.99ID:tGfhCIDM
>>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
[ [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
2019/08/11(日) 13:17:24.76ID:In4DYV8Y
>>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
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
98蟻人間 ◆T6xkBnTXz7B0
2019/08/11(日) 13:23:49.66ID:NLZMdOh3 お題: 数独を素早く解くプログラム(ソルバー)。
99デフォルトの名無しさん
2019/08/11(日) 16:53:20.83ID:RYQKURZ1 昔々Cで数独解くやつ普通に作ったことあるけど普通に作っても人間の感覚では一瞬にして答えが出ちゃうんだよな。ほとんどEnterキー押したらすぐ出る感じ。
そしてこれといって他にアルゴリズムは思い浮かばない。(誰もが思い付くであろう再起でマスに入れられる数を順番に入れてく方式ね)。
これ以上に「素早く」やる方法なんてあるんだろうか?
そしてこれといって他にアルゴリズムは思い浮かばない。(誰もが思い付くであろう再起でマスに入れられる数を順番に入れてく方式ね)。
これ以上に「素早く」やる方法なんてあるんだろうか?
100デフォルトの名無しさん
2019/08/11(日) 16:59:48.87ID:z7uw92+V101デフォルトの名無しさん
2019/08/11(日) 17:06:50.80ID:z7uw92+V102デフォルトの名無しさん
2019/08/11(日) 17:17:47.99ID:z7uw92+V #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++。
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++。
103デフォルトの名無しさん
2019/08/11(日) 17:20:29.72ID:z7uw92+V #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;
}
しつこいけど、これ以上は無理ってくらい詰めた。
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;
}
しつこいけど、これ以上は無理ってくらい詰めた。
104デフォルトの名無しさん
2019/08/11(日) 17:25:40.33ID:z7uw92+V どうでもいいのですけど、MITライセンス。知ってますね。
105蟻人間 ◆T6xkBnTXz7B0
2019/08/11(日) 17:33:34.70ID:NLZMdOh3 名無しにライセンス
106デフォルトの名無しさん
2019/08/11(日) 17:43:12.84ID:z7uw92+V107デフォルトの名無しさん
2019/08/11(日) 18:40:15.26ID:2JPwQqrg prologのコード見せてよ
108蟻人間 ◆T6xkBnTXz7B0
2019/08/11(日) 18:56:28.74ID:NLZMdOh3 お題: 論文「数独パズルの難易度判定」(大阪工業大学)を読んで、数独の難易度を判定するプログラムを作れ。
110蟻人間 ◆T6xkBnTXz7B0
2019/08/11(日) 19:48:53.81ID:NLZMdOh3 論文無視かよ
111デフォルトの名無しさん
2019/08/11(日) 19:52:40.36ID:GTeyRs5o お題出す前にその論文を簡約してよ
112デフォルトの名無しさん
2019/08/12(月) 00:58:03.04ID:DPPVhuFK >>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 "
| 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 "
113デフォルトの名無しさん
2019/08/12(月) 05:25:28.42ID:+GFDKMmL114デフォルトの名無しさん
2019/08/12(月) 21:41:34.96ID:qMi+e5AX >>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
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
115デフォルトの名無しさん
2019/08/13(火) 07:30:43.99ID:kJJDzO2R >>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]
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]
116デフォルトの名無しさん
2019/08/14(水) 01:39:36.14ID:G04CimIq117デフォルトの名無しさん
2019/08/14(水) 01:45:59.79ID:spdKRMJM >>116
うわぁ…山中俊次かよ
うわぁ…山中俊次かよ
118115
2019/08/14(水) 03:01:09.16ID:ms62dfnn >>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]
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]
119115
2019/08/15(木) 05:28:22.88ID:5MxOdPEK >>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
の、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
120デフォルトの名無しさん
2019/08/16(金) 00:38:41.91ID:eRShYMGh お題: 任意の2桁の自然数の各桁を、1桁になるまで掛け算する回数の最大回数とその数を示せ
15なら1x5=5と1回
93なら9x3=27, 2x7=14, 1x4=3と3回
15なら1x5=5と1回
93なら9x3=27, 2x7=14, 1x4=3と3回
121デフォルトの名無しさん
2019/08/16(金) 01:31:17.83ID:eRShYMGh >>120
最後1x4=3じゃなくて1x4=4だった
最後1x4=3じゃなくて1x4=4だった
122デフォルトの名無しさん
2019/08/16(金) 04:22:25.57ID:JO1Ik9g1 >>120
common lisp
https://pastebin.com/dAXgwYYX
出力
15=>(5 1)
93=>(4 3)
66=>(8 3)
51=>(5 1)
52=>(0 2)
61=>(6 1)
11=>(1 1)
common lisp
https://pastebin.com/dAXgwYYX
出力
15=>(5 1)
93=>(4 3)
66=>(8 3)
51=>(5 1)
52=>(0 2)
61=>(6 1)
11=>(1 1)
123デフォルトの名無しさん
2019/08/16(金) 04:32:18.49ID:4vR5Al7i >>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
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
124デフォルトの名無しさん
2019/08/16(金) 07:11:52.40ID:idyJWhoT >>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} "
| 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} "
125デフォルトの名無しさん
2019/08/16(金) 09:55:22.61ID:w6EX52R7 >>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
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
126デフォルトの名無しさん
2019/08/16(金) 10:19:15.90ID:s+gRsoB0 >>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になる.
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になる.
127デフォルトの名無しさん
2019/08/16(金) 11:35:03.96ID:Y33v+D/I >>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になる
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になる
128デフォルトの名無しさん
2019/08/16(金) 11:40:17.74ID:FoYt1ZXR 実用上、意味のないことは寝言という。
129デフォルトの名無しさん
2019/08/16(金) 11:52:49.37ID:38QTrPdc グッスリお休み。
130デフォルトの名無しさん
2019/08/16(金) 17:08:53.11ID:/mNc+3sP131デフォルトの名無しさん
2019/08/16(金) 19:41:08.88ID:4vR5Al7i 2x7x7x7x7x7x7x8x8x8x8x8x8x9x9=4996238671872
この段階で、掛け算14回じゃなくて1回になるの?
この段階で、掛け算14回じゃなくて1回になるの?
132デフォルトの名無しさん
2019/08/16(金) 21:11:10.70ID:UOmTAtC9 元のお題は2桁の自然数なのでそれよりも桁が多いならその場合のルールも決めないとダメだろうな。
133デフォルトの名無しさん
2019/08/16(金) 22:49:37.86ID:WXGx/ZZ4 > 2x7x7x7x7x7x7x8x8x8x8x8x8x9x9=4996238671872
を1回としても14回としても解き方はたいして変わらんからどっちでもいいと思う
とりあえず回答例見たら1回としてるみたいだから1回の方でいいんじゃね
を1回としても14回としても解き方はたいして変わらんからどっちでもいいと思う
とりあえず回答例見たら1回としてるみたいだから1回の方でいいんじゃね
134デフォルトの名無しさん
2019/08/17(土) 05:49:01.88ID:He41kTu9 >>120
common lisp
https://pastebin.com/ZcaYiA3N
任意の自然数に拡張した
split-num を実装してて思った
perl の数字と文字を自由に行き来できる cool型マジcool
common lisp
https://pastebin.com/ZcaYiA3N
任意の自然数に拡張した
split-num を実装してて思った
perl の数字と文字を自由に行き来できる cool型マジcool
135デフォルトの名無しさん
2019/08/17(土) 05:57:53.54ID:He41kTu9 15=>(5 1)
93=>(4 3)
198=>(4 3)
468=>(8 3)
738=>(6 4)
793=>(4 4)
1748=>(6 3)
93=>(4 3)
198=>(4 3)
468=>(8 3)
738=>(6 4)
793=>(4 4)
1748=>(6 3)
136デフォルトの名無しさん
2019/08/17(土) 15:01:05.32ID:m7Zf+/1R >>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になる
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になる
137さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/08/17(土) 15:58:34.13ID:hkO+8710 お題: オカダンゴムシには進行中に壁にぶつかると左へ、次は右へ(あるいは右へ、次は左へ)と交互に曲がっていく習性がある。この行動は「交替性転向反応」といい、左右に交互に曲がる事で天敵から逃げられる確率を高めているといわれている(ウィキペディアより引用)。
何もない整数平面上にスタート地点(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)}.
何もない整数平面上にスタート地点(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)}.
138デフォルトの名無しさん
2019/08/17(土) 16:18:33.55ID:RHoMoFJP >>137
ダンゴムシは初手でどこに向いてるの?北?Y+?X+?
ダンゴムシは初手でどこに向いてるの?北?Y+?X+?
139さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/08/17(土) 16:19:06.00ID:hkO+8710 ヒント: 最初、スタートとゴールを囲むように壁を仮設する。ぶつからない壁は要らない。
140さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/08/17(土) 16:20:08.58ID:hkO+8710 ダンゴムシはx軸方向です。y軸は数学と同じ上向きを仮定してます。
141デフォルトの名無しさん
2019/08/17(土) 17:21:32.91ID:RHoMoFJP Y+がビジュアライズして上になるかはビジュアライザーの挙動次第なのでいいのだけど。
最初はX+向いてるのね。承知。
最初はX+向いてるのね。承知。
142デフォルトの名無しさん
2019/08/17(土) 17:25:39.14ID:RHoMoFJP あ、もう一つあるんだ。
最初にダンゴムシが壁にぶつかったときは右と左どっち優先?
////
#
@#
////
の時。
方向がX+の時に左へターンしたら無限ループする。
逆に、方向がY+の時右にターンしたら無限ループする。
どや?
最初にダンゴムシが壁にぶつかったときは右と左どっち優先?
////
#
@#
////
の時。
方向がX+の時に左へターンしたら無限ループする。
逆に、方向がY+の時右にターンしたら無限ループする。
どや?
143デフォルトの名無しさん
2019/08/17(土) 17:28:20.45ID:uIV5R7Aj > ただし、ダンゴムシは最初は右向きを向いていて、最初にぶつかったら左に曲がるものとする。
144デフォルトの名無しさん
2019/08/17(土) 17:29:33.02ID:wzQeNn8E >>142
>90度曲がって目の前にすぐに壁がある場合は同じ方へもう90度曲がるものとする。
>90度曲がって目の前にすぐに壁がある場合は同じ方へもう90度曲がるものとする。
145デフォルトの名無しさん
2019/08/17(土) 17:29:46.66ID:RHoMoFJP すみません。見落としていました。
大変申し訳ありません。
大変申し訳ありません。
146デフォルトの名無しさん
2019/08/17(土) 19:06:19.57ID:c+Xct49t クソコテの相手すんなよ
147さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/08/17(土) 20:39:30.65ID:hkO+8710 世界はクソにあふれている! 何てこった! この状況を! この状況を変えるためには、クソをせずに生きれる仕組みを! 皆様と一緒にクソをせずに生きれる仕組みを、実現して! 行きましょう!
148デフォルトの名無しさん
2019/08/17(土) 23:18:56.65ID:+079Z1et そこでファナモの出番なわけですよ
149デフォルトの名無しさん
2019/08/17(土) 23:52:46.77ID:9or86GZG それよりも交替性転換反応とやらが本当に生存確率を高めるのか
右にばかり曲がりたがる逃亡犯と左にしか曲がれない共産党員を例に
シミュレーションを繰り返すプログラムを書いて?(゚∀゚)
右にばかり曲がりたがる逃亡犯と左にしか曲がれない共産党員を例に
シミュレーションを繰り返すプログラムを書いて?(゚∀゚)
150デフォルトの名無しさん
2019/08/18(日) 00:30:12.24ID:Onid3Fuw FPSのレレレ撃ちでしょ
ゲームで実験結果がでているからYoutubeにGo
ゲームで実験結果がでているからYoutubeにGo
151デフォルトの名無しさん
2019/08/18(日) 01:00:00.23ID:C9/yeHaG あなた達は、実は自分で思っているほど
ソフトウエアの開発が得意ではないということに
まだ気がついてすら至っていない
ソフトウエアの開発が得意ではないということに
まだ気がついてすら至っていない
152さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/08/18(日) 01:50:38.18ID:f2ZPM7Xh >>151
そうだよね。ソフトクリーム作るのって大変だね。ちなみに英語ではジェラートだからね。
そうだよね。ソフトクリーム作るのって大変だね。ちなみに英語ではジェラートだからね。
153デフォルトの名無しさん
2019/08/18(日) 02:07:00.19ID:4oEGaRbg >>151
君は、実は自分で思っているほど日本語が得意ではないということにまだ気づいていない。
君は、実は自分で思っているほど日本語が得意ではないということにまだ気づいていない。
154デフォルトの名無しさん
2019/08/18(日) 02:25:43.87ID:zcvAoSag そう来ると思っていました。
155デフォルトの名無しさん
2019/08/18(日) 16:17:40.63ID:YNXq+wty156デフォルトの名無しさん
2019/08/18(日) 16:41:42.29ID:YNXq+wty 一番だよ〜。ほめてほめて〜〜!!
157デフォルトの名無しさん
2019/08/18(日) 17:02:53.87ID:MNRPGL9Z 乙。
158デフォルトの名無しさん
2019/08/18(日) 17:05:38.20ID:Onid3Fuw O(1)だよ
159デフォルトの名無しさん
2019/08/18(日) 17:21:04.50ID:YNXq+wty やっほーい。
160さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/08/18(日) 17:59:15.27ID:f2ZPM7Xh スタート地点に壁を作ってるみたい。アルゴリズムの詰めが甘いようだ。
161デフォルトの名無しさん
2019/08/18(日) 18:37:31.03ID:YNXq+wty162デフォルトの名無しさん
2019/08/18(日) 18:38:29.32ID:Y3okjmnX164さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/08/18(日) 19:33:02.90ID:f2ZPM7Xh お題: 壁で囲まれた何もない有限の部屋(面積5m^3前後)の中に、四方向に距離センサーが付いた、丸い形のお掃除ロボット(直径20cm)がある。
各距離センサーは、ロボットからその方向にある障害物までの距離を常に教えてくれる。
ロボットはその場で右または左に5度単位で自転するか、もしくは前方向に5cm単位で前進できる。
部屋全体のおおよその形がわかるまで、ロボットを動かしなさい。
例) 正方形の部屋
例) 正三角形の部屋
例) 凹の形の部屋
各距離センサーは、ロボットからその方向にある障害物までの距離を常に教えてくれる。
ロボットはその場で右または左に5度単位で自転するか、もしくは前方向に5cm単位で前進できる。
部屋全体のおおよその形がわかるまで、ロボットを動かしなさい。
例) 正方形の部屋
例) 正三角形の部屋
例) 凹の形の部屋
165さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/08/18(日) 19:46:24.23ID:f2ZPM7Xh 直径20cmが入り込めない隙間は無視、もしくは壁と見なす。
スクリーンショットか動画を作れたら、30点加点する。
スクリーンショットか動画を作れたら、30点加点する。
166デフォルトの名無しさん
2019/08/18(日) 19:59:22.35ID:Y3okjmnX 面積なのに^3とはこれ如何に
167さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/08/18(日) 20:17:13.38ID:OH7aQxbJ168デフォルトの名無しさん
2019/08/19(月) 11:34:00.91ID:icNxZHqv >>164
部屋の壁の構成が凹を基本としたヒルベルト曲線だったら「おおよその形」はそのロボットのAIは何と答えればいいの?
ttps://cdn-ak.f.st-hatena.com/images/fotolife/o/obelisk2/20161224/20161224022849.png
部屋の壁の構成が凹を基本としたヒルベルト曲線だったら「おおよその形」はそのロボットのAIは何と答えればいいの?
ttps://cdn-ak.f.st-hatena.com/images/fotolife/o/obelisk2/20161224/20161224022849.png
169デフォルトの名無しさん
2019/08/19(月) 11:46:10.65ID:icNxZHqv もしくは、「壁」とは何か
170デフォルトの名無しさん
2019/08/19(月) 12:00:44.91ID:78Wz1qhX■ このスレッドは過去ログ倉庫に格納されています
ニュース
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★4 [七波羅探題★]
- 【地震速報】青森県で震度6強 沿岸部に津波警報 ★6 [ぐれ★]
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 [蚤の市★]
- 【速報】気象庁は津波注意報すべて解除 [蚤の市★]
- 【サッカー】58歳カズ「オファーが来ている」 J3福島と近日中にも交渉 早ければ年内にも決断 [征夷大将軍★]
- 「日の丸にバツ印」掲げた大学生 あいまいな国旗損壊罪に「怖い」 The Mainichi [少考さん★]
- 働いて参ります
- ( ・᷄ὢ・᷅ )あ?
- 地震
- こんぺこ!こんぺこ!こんぺこ!🐰🏡
- 早大名誉教授「高市内閣の高支持率はデータ操作か、支持している日本人がアホなのか」👈核心を突いてしまう [868050967]
- ブタをぶったたく
