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

■ このスレッドは過去ログ倉庫に格納されています
2019/07/28(日) 19:39:57.54ID:832c/ukY
プログラミングのお題スレです。

【出題と回答例】
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/
99デフォルトの名無しさん
垢版 |
2019/08/11(日) 16:53:20.83ID:RYQKURZ1
昔々Cで数独解くやつ普通に作ったことあるけど普通に作っても人間の感覚では一瞬にして答えが出ちゃうんだよな。ほとんどEnterキー押したらすぐ出る感じ。
そしてこれといって他にアルゴリズムは思い浮かばない。(誰もが思い付くであろう再起でマスに入れられる数を順番に入れてく方式ね)。

これ以上に「素早く」やる方法なんてあるんだろうか?
2019/08/11(日) 16:59:48.87ID:z7uw92+V
>>91
https://ideone.com/1JCuiv
C++。一応例題は解けたが妖しい処理になった。
2019/08/11(日) 17:06:50.80ID:z7uw92+V
>>91
https://ideone.com/oSQNZM
C++。これでどうじゃ。
バケットソートでいいじゃないか。プンプン。
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++。
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;
}
しつこいけど、これ以上は無理ってくらい詰めた。
2019/08/11(日) 17:25:40.33ID:z7uw92+V
どうでもいいのですけど、MITライセンス。知ってますね。
2019/08/11(日) 17:33:34.70ID:NLZMdOh3
名無しにライセンス
2019/08/11(日) 17:43:12.84ID:z7uw92+V
https://ideone.com/Cu9Dix
C++。大オチ。
駄文書きすぎた。
107デフォルトの名無しさん
垢版 |
2019/08/11(日) 18:40:15.26ID:2JPwQqrg
prologのコード見せてよ
2019/08/11(日) 18:56:28.74ID:NLZMdOh3
お題: 論文「数独パズルの難易度判定」(大阪工業大学)を読んで、数独の難易度を判定するプログラムを作れ。
2019/08/11(日) 19:37:12.10ID:EWNjTlvC
>>108
吸う毒難易度判定
初期値の与えられているマスが22以下:難問
22以上:簡単
2019/08/11(日) 19:48:53.81ID:NLZMdOh3
論文無視かよ
2019/08/11(日) 19:52:40.36ID:GTeyRs5o
お題出す前にその論文を簡約してよ
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 "
113デフォルトの名無しさん
垢版 |
2019/08/12(月) 05:25:28.42ID:+GFDKMmL
>>91
Kotlin
https://paiza.io/projects/7gZ5wu2acBho-erGVG_X6Q
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
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]
116デフォルトの名無しさん
垢版 |
2019/08/14(水) 01:39:36.14ID:G04CimIq
>>91
VB
https://paiza.io/projects/DJNbrsQFWtBDXhtNjmJ9xQ
117デフォルトの名無しさん
垢版 |
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]
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
2019/08/16(金) 00:38:41.91ID:eRShYMGh
お題: 任意の2桁の自然数の各桁を、1桁になるまで掛け算する回数の最大回数とその数を示せ

15なら1x5=5と1回
93なら9x3=27, 2x7=14, 1x4=3と3回
2019/08/16(金) 01:31:17.83ID:eRShYMGh
>>120
最後1x4=3じゃなくて1x4=4だった
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)
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
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} "
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
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になる.
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になる
128デフォルトの名無しさん
垢版 |
2019/08/16(金) 11:40:17.74ID:FoYt1ZXR
実用上、意味のないことは寝言という。
2019/08/16(金) 11:52:49.37ID:38QTrPdc
グッスリお休み。
2019/08/16(金) 17:08:53.11ID:/mNc+3sP
>>120
https://ideone.com/uOlN2E
C++. 暇だったので基数いじれるようにした。
ただし、デバッグはしてない。
2019/08/16(金) 19:41:08.88ID:4vR5Al7i
2x7x7x7x7x7x7x8x8x8x8x8x8x9x9=4996238671872
この段階で、掛け算14回じゃなくて1回になるの?
132デフォルトの名無しさん
垢版 |
2019/08/16(金) 21:11:10.70ID:UOmTAtC9
元のお題は2桁の自然数なのでそれよりも桁が多いならその場合のルールも決めないとダメだろうな。
2019/08/16(金) 22:49:37.86ID:WXGx/ZZ4
> 2x7x7x7x7x7x7x8x8x8x8x8x8x9x9=4996238671872
を1回としても14回としても解き方はたいして変わらんからどっちでもいいと思う
とりあえず回答例見たら1回としてるみたいだから1回の方でいいんじゃね
2019/08/17(土) 05:49:01.88ID:He41kTu9
>>120
common lisp
https://pastebin.com/ZcaYiA3N
任意の自然数に拡張した

split-num を実装してて思った
perl の数字と文字を自由に行き来できる cool型マジcool
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)
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になる
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)}.
2019/08/17(土) 16:18:33.55ID:RHoMoFJP
>>137
ダンゴムシは初手でどこに向いてるの?北?Y+?X+?
2019/08/17(土) 16:19:06.00ID:hkO+8710
ヒント: 最初、スタートとゴールを囲むように壁を仮設する。ぶつからない壁は要らない。
2019/08/17(土) 16:20:08.58ID:hkO+8710
ダンゴムシはx軸方向です。y軸は数学と同じ上向きを仮定してます。
2019/08/17(土) 17:21:32.91ID:RHoMoFJP
Y+がビジュアライズして上になるかはビジュアライザーの挙動次第なのでいいのだけど。
最初はX+向いてるのね。承知。
2019/08/17(土) 17:25:39.14ID:RHoMoFJP
あ、もう一つあるんだ。
最初にダンゴムシが壁にぶつかったときは右と左どっち優先?

////

@#
////
の時。
方向がX+の時に左へターンしたら無限ループする。
逆に、方向がY+の時右にターンしたら無限ループする。

どや?
143デフォルトの名無しさん
垢版 |
2019/08/17(土) 17:28:20.45ID:uIV5R7Aj
> ただし、ダンゴムシは最初は右向きを向いていて、最初にぶつかったら左に曲がるものとする。
2019/08/17(土) 17:29:33.02ID:wzQeNn8E
>>142
>90度曲がって目の前にすぐに壁がある場合は同じ方へもう90度曲がるものとする。
2019/08/17(土) 17:29:46.66ID:RHoMoFJP
すみません。見落としていました。
大変申し訳ありません。
2019/08/17(土) 19:06:19.57ID:c+Xct49t
クソコテの相手すんなよ
2019/08/17(土) 20:39:30.65ID:hkO+8710
世界はクソにあふれている! 何てこった! この状況を! この状況を変えるためには、クソをせずに生きれる仕組みを! 皆様と一緒にクソをせずに生きれる仕組みを、実現して! 行きましょう!
2019/08/17(土) 23:18:56.65ID:+079Z1et
そこでファナモの出番なわけですよ
2019/08/17(土) 23:52:46.77ID:9or86GZG
それよりも交替性転換反応とやらが本当に生存確率を高めるのか
右にばかり曲がりたがる逃亡犯と左にしか曲がれない共産党員を例に
シミュレーションを繰り返すプログラムを書いて?(゚∀゚)
2019/08/18(日) 00:30:12.24ID:Onid3Fuw
FPSのレレレ撃ちでしょ
ゲームで実験結果がでているからYoutubeにGo
2019/08/18(日) 01:00:00.23ID:C9/yeHaG
あなた達は、実は自分で思っているほど
ソフトウエアの開発が得意ではないということに
まだ気がついてすら至っていない
2019/08/18(日) 01:50:38.18ID:f2ZPM7Xh
>>151
そうだよね。ソフトクリーム作るのって大変だね。ちなみに英語ではジェラートだからね。
2019/08/18(日) 02:07:00.19ID:4oEGaRbg
>>151
君は、実は自分で思っているほど日本語が得意ではないということにまだ気づいていない。
2019/08/18(日) 02:25:43.87ID:zcvAoSag
そう来ると思っていました。
2019/08/18(日) 16:17:40.63ID:YNXq+wty
>>137
https://ideone.com/6yBcTi
C++。多分できた。
O(1)かも。
2019/08/18(日) 16:41:42.29ID:YNXq+wty
一番だよ〜。ほめてほめて〜〜!!
2019/08/18(日) 17:02:53.87ID:MNRPGL9Z
乙。
2019/08/18(日) 17:05:38.20ID:Onid3Fuw
O(1)だよ
2019/08/18(日) 17:21:04.50ID:YNXq+wty
やっほーい。
2019/08/18(日) 17:59:15.27ID:f2ZPM7Xh
スタート地点に壁を作ってるみたい。アルゴリズムの詰めが甘いようだ。
2019/08/18(日) 18:37:31.03ID:YNXq+wty
>>160
表示の問題です。では済まないかい?
場所は保持してるよ?
2019/08/18(日) 18:38:29.32ID:Y3okjmnX
>>137 Java
https://ideone.com/oytRaT
2019/08/18(日) 19:10:36.63ID:f2ZPM7Xh
>>162
正解。
2019/08/18(日) 19:33:02.90ID:f2ZPM7Xh
お題: 壁で囲まれた何もない有限の部屋(面積5m^3前後)の中に、四方向に距離センサーが付いた、丸い形のお掃除ロボット(直径20cm)がある。
各距離センサーは、ロボットからその方向にある障害物までの距離を常に教えてくれる。
ロボットはその場で右または左に5度単位で自転するか、もしくは前方向に5cm単位で前進できる。
部屋全体のおおよその形がわかるまで、ロボットを動かしなさい。

例) 正方形の部屋
例) 正三角形の部屋
例) 凹の形の部屋
2019/08/18(日) 19:46:24.23ID:f2ZPM7Xh
直径20cmが入り込めない隙間は無視、もしくは壁と見なす。
スクリーンショットか動画を作れたら、30点加点する。
2019/08/18(日) 19:59:22.35ID:Y3okjmnX
面積なのに^3とはこれ如何に
2019/08/18(日) 20:17:13.38ID:OH7aQxbJ
>>164 >>166
訂正。m^2です。

参考資料:直線と線分の当たり判定
https://spphire9.wordpress.com/2013/01/14/直線と線分の当たり判定/
2019/08/19(月) 11:34:00.91ID:icNxZHqv
>>164
部屋の壁の構成が凹を基本としたヒルベルト曲線だったら「おおよその形」はそのロボットのAIは何と答えればいいの?
ttps://cdn-ak.f.st-hatena.com/images/fotolife/o/obelisk2/20161224/20161224022849.png
2019/08/19(月) 11:46:10.65ID:icNxZHqv
もしくは、「壁」とは何か
2019/08/19(月) 12:00:44.91ID:78Wz1qhX
>>160
一晩かんがえてみたんだけどね、ゆる〜くね。
スタートに壁作るなとは書いてないよね??
2019/08/19(月) 12:36:53.71ID:ChF0jSyn
4個目のスタート地点の壁を許しても、3個目の答えが間違えてるやん?
[-1,1]の壁を1回透過しないとゴールにたどり着けないやん?

まあ [*いしのなかにいる*] は許されないと思うけどw
2019/08/19(月) 12:50:21.54ID:78Wz1qhX
>>171
あぁ、なるほど、先において起動させる前提なのか。
オレ、動的にターン制で考えてたわ。
2019/08/19(月) 13:04:09.25ID:ChF0jSyn
動的ターン制って考えは思いつかんかった
その考えなら>>155でも問題ないな
2019/08/19(月) 13:05:56.48ID:78Wz1qhX
握手(非強制)
2019/08/19(月) 13:45:26.16ID:5pda5jNo
部屋の形を表すビットマップ画像、もしくは一個以上の多角形でいいよ。
2019/08/19(月) 13:49:12.41ID:5pda5jNo
誤差は気にしない、気にしない。
2019/08/19(月) 13:53:20.88ID:5pda5jNo
>>173
壁をいつ置くかの記述がなかった、設問の不備ということで、正解、にしときます。すみません。
2019/08/19(月) 21:12:29.11ID:78Wz1qhX
及第点!
2019/08/19(月) 21:48:51.89ID:KFTDhNgP
コテのくせに偉そうだな
180デフォルトの名無しさん
垢版 |
2019/08/20(火) 03:10:44.70ID:p19J/GFP
アスペばっかやんけこのスレ
2019/08/23(金) 16:30:48.96ID:GCcQKmFF
>>32
perl5
http://ideone.com/1qwl1U

ずいぶん前のお題だが面白い回答ができたので再提出
再帰する正規表現に perl-code 内蔵の正規表現
たぶんウルトラレア
2019/08/27(火) 08:48:20.54ID://c3Bn/y
>>4 Java
https://ideone.com/JHb8WE

>>5-6
> T = std::max(T,UI(mt));
> if (T >= C) { Re++; }
保持してる最大値でもう一回振るかどうか決めちゃってないかい?
2019/08/27(火) 20:29:01.48ID:ZWZUVJ+Q
>>182
振ったダイスが閾値超えてたら次の回を一回プラスしてる。
閾値C以上ならという判断。
2019/08/27(火) 20:38:02.13ID:ZWZUVJ+Q
あ、勘違いしてた。ちょっと待ってて。
2019/08/27(火) 20:41:11.53ID:ZWZUVJ+Q
>>4
https://ideone.com/1zA9kL
C++。フォークして修正してみた。これでいいかなぁ。
2019/08/27(火) 21:01:10.99ID://c3Bn/y
俺のとあってるし多分いいんじゃね?わからんが
でも>>5-6の時点で出題者からの突っ込みがないのが気になる
出題者出てきてー
2019/08/27(火) 21:06:40.25ID:ZWZUVJ+Q
https://ideone.com/XIuQ53
しつこいけど、変数名のかぶりが気持ち悪かったので書き直した。
それと、手元でデバッグ軽くやっておいた。
2019/08/27(火) 21:10:12.33ID:ZWZUVJ+Q
>>186
そりゃよかった。
出題者に宿題解かされたかな??
2019/08/27(火) 22:42:10.07ID:ZWZUVJ+Q
お題:値が変更不可能でインデックスだけ参照できるシャッフルされた配列を何らかの方法でソートする。その際配列や値のコピーは取れない。
C++でいう、constの配列をなんとか整列してみましょう。

自分の答え。:https://ideone.com/4S932i
2019/08/28(水) 00:04:27.28ID:4LHTj8UL
>>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
2019/08/28(水) 00:57:09.32ID:iZEqAFR9
激お題:自動プログラミングプログラムを作るか日本語で説明せよ。方法は各自の言語にゆだねる。

https://ideone.com/2UWc8g
自分は上記のようなものを作った。
4kb位のプログラムができるのに多分数年かかる。
コンパイラの通ったかというのを取れれば文章的に正しいやつは何かを残していく。
でも、コンパイラに投げる動作はわからないので入れてない。
2019/08/28(水) 01:00:49.34ID:iZEqAFR9
>>190
perlわからないけど、参加してくれてありがとう。
コードが短くて羨ましい。
2019/08/28(水) 01:14:30.34ID:mmOF8lug
>>191 ナンジャそれは、お題でもなんでもない。 まず日本語の勉強をして出直してこい。
お題も人に解る様に出せないような人間はプログラマの素質はない。
2019/08/28(水) 01:51:57.69ID:iZEqAFR9
>>193
どこが解りにくかったですか?
テストコードは、言語で使える英数記号類を全探索するモノです。
195デフォルトの名無しさん
垢版 |
2019/08/28(水) 12:29:21.50ID:gV1iThk/
>>194
>>191全体
2019/08/28(水) 14:09:15.46ID:iZEqAFR9
>>195
お題と余談が書いてあるだけだぞ。
とりあえず、刮目して自動プログラミングプログラムを作ってください。
作れなさそうなら、概要を日本語で説明してください。
2019/08/28(水) 14:20:49.15ID:iHRPACN2
まず自動プログラミングプログラムってなんだよ
お前の造語なんか知らんわ
2019/08/28(水) 14:40:15.76ID:9ymulh1y
ドメイン特化言語作れってことか?
199デフォルトの名無しさん
垢版 |
2019/08/28(水) 14:40:49.41ID:gV1iThk/
>>189
Kotlin
https://paiza.io/projects/hCnNPeSohDhcerAL2MMqag

こんなので良いのかな?

厳密に言ったら最後の出力文字列を作る時の map で値が取り出されて新たなリスト作るからコピーされちゃってんだけどね。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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