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

■ このスレッドは過去ログ倉庫に格納されています
2019/05/18(土) 17:33:29.45ID:BWmpW4IF
プログラミングのお題スレです。

【出題と回答例】
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/

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

※前スレ
https://mevius.5ch.net/test/read.cgi/tech/1549160513/
2019/06/29(土) 23:05:06.71ID:/qzOxQgj
>>677
> お題: Hello, World!が入力されるので
とあるから入力されるまで待つ処理がない>>653は失格
679デフォルトの名無しさん
垢版 |
2019/06/30(日) 01:26:45.54ID:V7r21EI6
>>677 Lua
a,b,c,d=io.read(5,2,5,1)
print (c..b..a..d)
680デフォルトの名無しさん
垢版 |
2019/06/30(日) 01:41:37.13ID:V7r21EI6
>>679
アンカー間違えました
>>651 Lua
でした
2019/06/30(日) 01:59:36.72ID:3kywsUGB
>>678
アホかお前
勝手にオリジナルルール作るなよ
682デフォルトの名無しさん
垢版 |
2019/06/30(日) 02:25:30.30ID:8mJPxIjl
>>651 Common Lisp
https://ideone.com/gR5ISR
2019/06/30(日) 08:04:20.61ID:uuDJgtvu
お題
#1234→◆gdyb21LQTc
#abcd→◆4vxxTEcn7p
#あいうえお→◆rXz1zlMT-L

左のトリップキーから右のトリップを返すアルゴリズムを探せ
2019/06/30(日) 08:39:27.77ID:XM+o4kuM
>>683
$ head text hash.sedscr
==> text <==
#1234→◆gdyb21LQTc
#abcd→◆4vxxTEcn7p
#あいうえお→◆rXz1zlMT-L

左のトリップキーから右のトリップを返すアルゴリズムを探せ

==> hash.sedscr <==
s/#1234/◆gdyb21LQTc/
s/#abcd/◆4vxxTEcn7p/
s/#あいうえお/◆rXz1zlMT-L/

$ cat text | sed -f hash.sedscr
◆gdyb21LQTc→◆gdyb21LQTc
◆4vxxTEcn7p→◆4vxxTEcn7p
◆rXz1zlMT-L→◆rXz1zlMT-L

左のトリップキーから右のトリップを返すアルゴリズムを探せ
2019/06/30(日) 09:03:57.63ID:AuhBLaKB
>>683 Java
https://ideone.com/ulBeVb

digestは一回、charsetは二回目で当たった
2019/06/30(日) 09:33:15.89ID:uuDJgtvu
>>685
Magnificent !!
2019/06/30(日) 18:48:21.28ID:TQbu+/Q+
>>678 Perl5(組合せ計算のモジュールはCPANにあるが言語処理系に標準で含まれるCOREモジュールではないので使わずに実装した)

@a=sort{$b<=>$a} qw{9 -5 -3 2 1 8 0 -4 -1 4 -2 1 3 2};
@b=splice @a,0,5;
splice @a,0,-4;
@c=(@b, @a); # 大きい方から5個と小さい方から4個,計最長9個
sub combi { # 組合せ
 my @s;
 if (my $n = shift) {
  while ($n <= @_) {
   my $t = shift;
   push @s, map{[$t, @$_]} combi($n - 1, @_);
  }
 } else {
  @s = ([]);
 }
 @s
}
@d = combi(5, @c); # 126個
use List::Util 'product';
@e = sort{$$b[0]<=>$$a[0]} map{[product(@$_), $_]} @d;
print "@{$e[0][1]} => $e[0][0]\n";

実行結果
~ $ perl 14_632.pl
9 8 4 -4 -5 => 5760
2019/06/30(日) 18:49:06.96ID:TQbu+/Q+
>>684
アンカー間違えた >>632 宛だった…Orz
2019/07/01(月) 01:03:55.45ID:2xJWXsNl
>>632 Perl5 (CPANのMath::Combinatoricsモジュール使用)

use Math::Combinatorics;
use List::Util 'product';
@a=sort{$b<=>$a} qw{9 -5 -3 2 1 8 0 -4 -1 4 -2 1 3 2};
@b=splice @a,0,5;
splice @a,0,-4;
@c=(@b, @a);
@d=combine 5, @c;
@e=sort{$$b[0]<=>$$a[0]} map{[product(@$_), $_]} @d;

実行結果
~ $ perl 14_632_2.pl
9 4 8 -5 -4 => 5760
2019/07/01(月) 01:17:22.86ID:2xJWXsNl
>>689
最後のstatement
print "@{$e[0][1]} => $e[0][0]\n";
が抜けてた…Orz
691600
垢版 |
2019/07/01(月) 12:51:23.31ID:O1pDJEnN
>>600
Ruby で、
require 'date'

ary_A = %w(2019/07/05 2019/07/10 2019/07/15 2019/07/20)
ary_B = %w(2019/07/08 2019/07/10 2019/07/20)
ary_C = %w(2019/07/15 2019/07/20 2019/07/25)

# 文字列の配列から、ハッシュを作る。Date#jd は、ユリウス日。整数型
def make_hash( ary, name )
ary.each_with_object( { } ) {
| str, h | h[ Date.parse( str ).jd ] = [ str, name ] }
end

# ハッシュをマージする。h_1 を上書きする。slice で、位置1 から、1つだけ
def merge_hash( h_1, h_2 )
h_1.merge!( h_2 ) { |key, v_1, v_2| v_1 + v_2.slice( 1, 1 ) }
end

hash_A = make_hash( ary_A, "A" )
hash_B = make_hash( ary_B, "B" )
hash_C = make_hash( ary_C, "C" )

merge_hash( hash_A, hash_B )
merge_hash( hash_A, hash_C )

hash_A.select { |k, v| v.length >= 3 }.sort.each { |elem|
puts elem.last.join( ", " ) }
2019/07/02(火) 00:55:09.45ID:l8Ho6rg6
693デフォルトの名無しさん
垢版 |
2019/07/03(水) 05:29:13.40ID:/Fyb2XSg
>>570 Lua
prrint("(X)")
694デフォルトの名無しさん
垢版 |
2019/07/03(水) 13:00:21.17ID:0rGzsSa9
>>570
exho 八
2019/07/03(水) 23:21:16.00ID:S/aBv8fE
お題
直線状の(配列を使った)ライフゲームがある。ルールは、

1. 両隣が生きていれば、暑苦しいので死ぬ
2. 両隣が死んでいれば、寂しいので死ぬ
3. 両隣の内、片方だけが生きていれば、生きる

4. 両端の2つについては、隣が生きていれば生きるし、隣が死んでいれば死ぬ
5. すべてのマスの状態の変更は、同時にすること

下の初期値(1 ターン目)から初めて、状態が変わらなくなるのは、何ターン目か?
nターン目と、( n + 1 )ターン目が同じなら、nターン目を答える

ただし、漏れは検証していないので、100ターンを超えたら、終了してくださいw
* は生、. は死を表す

.*...**.*.***..
2019/07/04(木) 00:54:11.99ID:j53oJnyj
>>695 Pharo/Squeak Smalltalk

| map next turn |
map := '.*...**.*.***..' asArray collect: [:x | (x = $*) asBit].
next := [map allButFirst, {0} + ({0}, map allButLast) collect: [:x | (x = 1) asBit]].
turn := 1.
[map = (map := next value) or: [(turn := turn + 1) >= 100]] whileFalse.
^turn "=> 13 "
2019/07/04(木) 01:48:41.98ID:3GgPlSpw
>>695
https://ideone.com/Rj3O0W
C++。即死したんだけど、まちがてる?
2019/07/04(木) 02:56:15.33ID:GH7xphp0
プログラムしてないけど、そういう結果になると思う。
2019/07/04(木) 07:37:27.36ID:Ic4+qAXv
増える条件ナインかこれ
2019/07/04(木) 08:19:44.93ID:k4YTb8Ao
LifeGameなら生まれる条件つけないと。
2019/07/04(木) 08:35:23.83ID:11vlC8ZO
>>695 ruby 13ターンで全滅
life = ' .*...**.*.***.. '
puts "%4d %s" % [1, life]
100.times{|gene|
life2 = ' ' * life.size
(life.size-2).times{|i| life2[i+1] = ((life[i] == '*') ^ (life[i+2] == '*'))? '*' : '.' } # rule 1, 2, 3, 4
break if life == life2
puts "%4d %s" % [gene+2, life2]
life = life2 # rule 5
}
2019/07/04(木) 09:15:04.08ID:49DxGPOe
プログラム組むまでもなく3ターンで終わりなんだけど解釈間違ってんのかな
2019/07/04(木) 11:47:20.51ID:oZa6FYcv
>>695 Java
https://ideone.com/8cforf

生きるってのが誕生も含める場合13ターン >>696 >>701
生きるってのが生存のみの場合3ターン >>697
ってことだな
704695
垢版 |
2019/07/04(木) 16:13:36.89ID:vGw4d28b
生きるとは、新たに誕生する場合も、含めてください!
2019/07/04(木) 16:51:48.26ID:NOiQUdad
ジョジョくさいセリフ
2019/07/04(木) 17:41:32.68ID:UVclwvu+
居ないときは両隣が生きていれば生まれる
(生きているときは 1. に従い死ぬ)
とかの方がいいんじゃない?
2019/07/04(木) 17:59:22.42ID:oZa6FYcv
>>695,704
つまりルール90の1次元セルオートマトンってことでいいのかの? (誕生無しの場合ルール18になる)

セル・オートマトン#1次元セル・オートマトン
https://ja.wikipedia.org/wiki/%E3%82%BB%E3%83%AB%E3%83%BB%E3%82%AA%E3%83%BC%E3%83%88%E3%83%9E%E3%83%88%E3%83%B3#1%E6%AC%A1%E5%85%83%E3%82%BB%E3%83%AB%E3%83%BB%E3%82%AA%E3%83%BC%E3%83%88%E3%83%9E%E3%83%88%E3%83%B3
2019/07/04(木) 22:15:57.84ID:Otr1Y9/T
お題: コマンド「stack」を実装しなさい

stackの仕様

$ stack push hoge

で文字列hogeをスタックにプッシュする

$ stack pop
hoge

でスタックに積んだ文字列をポップする
スタックが空の場合は何も表示しない
2019/07/04(木) 23:07:41.19ID:3GgPlSpw
ライフゲームだけど、生まれる話は聞いてないなぁ。
主が生まれる条件書いてねー気がする。
2019/07/05(金) 00:22:45.10ID:cLn1h7ts
>>702
手計算したら同じく3手だった
2019/07/05(金) 00:31:50.12ID:4z1quspY
>>695,704 Perl5

sub f {
 @a = map{'*' eq $_} split '', '.*...**.*.***..';
 for ($t = 2; $t <= 100; $t++) {
  @b = $_[0]->();
  $t--, last if "@b" eq "@a";
  @a = @b;
 }
 @a = map{$_ ? '*' : '.'} @b;
}
f(sub{$a[1], (map{$a[$_] and ($a[$_-1] xor $a[$_+1])} 1..$#a-1), $a[$#a-1]});
print "生存のみ $t: ", @a, "\n";
f(sub{$a[1], (map{$a[$_-1] xor $a[$_+1]} 1..$#a-1), $a[$#a-1]});
print "誕生あり $t: ", @a, "\n";

実行結果
~ $ perl 14_695.pl
生存のみ 3: .....**........
誕生含む 13: ...............
2019/07/05(金) 00:33:12.20ID:4z1quspY
>>711 ゴメン実行結果貼り間違えた
~ $ perl 14_695.pl
生存のみ 3: .....**........
誕生あり 13: ...............
2019/07/05(金) 00:41:15.13ID:4z1quspY
>>711 たびたびゴメン、微妙に間違えていた、この入力の場合答えは変わらないけど
sub f {
 @a = map{'*' eq $_} split '', '.*...**.*.***..';
 for ($t = 2; $t <= 100; $t++) {
  @b = $_[0]->();
  $t--, last if "@b" eq "@a";
  @a = @b;
 }
 @a = map{$_ ? '*' : '.'} @b;
}
f(sub{map{$a[$_] and ($a[$_-1] xor $a[$_+1])} 0..$#a});
print "生存のみ $t: ", @a, "\n";
f(sub{$a[1], (map{$a[$_-1] xor $a[$_+1]} 1..$#a-1), $a[$#a-1]});
print "誕生あり $t: ", @a, "\n";


~ $ perl 14_695.pl
生存のみ 3: .....**........
誕生あり 13: ...............
2019/07/05(金) 07:06:17.78ID:8ZiX2Qqp
公式サイトが死んで1ヶ月ぐらい立ったけどUWSC
>>695 http://codepad.org/C46guycm
>>708 http://codepad.org/QU38TKOo
715701
垢版 |
2019/07/05(金) 07:27:15.34ID:FwZHoBTZ
>>695 ruby 13ターンで全滅 (>>701 bit演算化)
life = '.*...**.*.***..'
bord = life.tr('.*','01').to_i(2)
mask = 2 ** life.size - 1
fmt = "%%0%db" % life.size
100.times{|gene|
puts "%5d %s" % [gene+1, (fmt % bord).tr('01','.*')]
bord2 = ((bord<<1)^(bord>>1)) & mask # rule 1, 2, 3, 4
break if bord == bord2
bord = bord2
}
716695
垢版 |
2019/07/05(金) 12:37:23.14ID:imex3OYJ
>>706
>1. 両隣が生きていれば、暑苦しいので死ぬ
これを変形して、

1a. 自マスが生きている場合、両隣が生きていれば、暑苦しいので死ぬ
1b. 自マスが死んでいる場合、両隣が生きていれば、生きる(新たに誕生する)

1c. ただし、両端の2つのマスについては、1a, 1b を適用せず、ルール4 で良い。
4. 両端の2つについては、隣が生きていれば生きるし、隣が死んでいれば死ぬ

つまり、両端の2つについては、そのマスの両隣の内、
存在しないマスを死んでいるものとして扱うと、常に、1a, 1bには該当しない

興味があれば、この変形ルールでも、やってみてください!
ただし、漏れは、どうなるのか知りませんがw

>>707
確かに、ルール90 と同じです
2019/07/05(金) 15:42:56.85ID:RqW7c8ei
【7ピンN枚の河内塔の最短手順問題】

初期状態では帽子はピン0
にあり、ピン6にすべて移す
までの最小手順の回数を求める

例:
N=3 5回
0->4
0->5
0->6
5->6
4->6
2019/07/05(金) 16:33:02.65ID:FwZHoBTZ
>>716 ruby 63ターン以降2周期ループ(62,63,62,63,,,)
life = '.*...**.*.***..'
bord = life.tr('.*','01').to_i(2)
mask = 2 ** life.size - 1
fmt = "%%0%db" % life.size
bords = {bord=>true}
100.times{|gene|
puts "%5d %s" % [gene+1, (fmt % bord).tr('01','.*')]
bord2 = (bord<<1 ^ bord>>1 | bord<<1 & bord>>1 & ~bord) & mask # rule >>706, >>716
break if bords[bord2]
bord = bord2
bords[bord] = true
}
719695
垢版 |
2019/07/05(金) 17:47:06.08ID:imex3OYJ
>>718
循環しましたか?

循環を発見するには、すべてのターンを記録して照合しないといけないから、大変!
2019/07/05(金) 18:27:24.81ID:XEA++p8t
>>716
3a、3b は?
721695
垢版 |
2019/07/05(金) 19:42:34.54ID:imex3OYJ
>>720
3. 両隣の内、片方だけが生きていれば、生きる

元々、生きるには、誕生する事も含むから、3a, 3b は、必要ない

ただ、
>>706
の提案で、1a, 1b の所だけを変えてみたのが、
>>716
2019/07/05(金) 22:52:47.49ID:aEAVP96+
https://ideone.com/VOwT7u
C++版改。5ターンで止まった。
ライフゲームは、ダブルバッファリング以外で作れる気がしない。
2019/07/05(金) 23:55:57.51ID:FwZHoBTZ
#>>716 ruby # Rule を配列化。 (L C R) 3bit 0..7 の状態 >>659なら [0,1,0,1,1,0,1,0]
Rule = [0,1,0,1,1,1,1,0] # rule >>706, >>716
life = '.*...**.*.***..'
lifeBit = life.size
bord = life.tr('.*','01').to_i(2)
fmt = "%%0%db" % lifeBit
bords = {bord=>true}
100.times{|gene|
puts "%5d %s" % [gene+1, (fmt % bord).tr('01','.*')]
bord <<= 1
bord2 = 0
lifeBit.times{|bit|
bord2 |= Rule[bord & 7] << bit
bord >>= 1
}
bord = bord2
break if bords[bord]
bords[bord] = true
}
2019/07/05(金) 23:56:51.12ID:aY14jca4
>>716 Pharo/Squeak Smalltalk

| map next seq start |
map := '.*...**.*.***..' asArray collect: [:x | (x = $*) asBit].
seq := OrderedCollection with: map.
next := [ | acc |
acc := map + (map allButFirst, {0}) + ({0}, map allButLast).
((#(1 2) collect: [:x | acc collect: [:elem | (elem = x) asBit]]) * {map negated + 1. 1}) sum
].
[(start := seq indexOf: (map := next value)) > 0 or: [seq size >= 100]] whileFalse: [seq add: map].
(start = 0 or: [start = seq size]) ifTrue: [seq size] ifFalse: [start to: seq size]

"=> (62 to: 63) "
2019/07/05(金) 23:58:19.78ID:FwZHoBTZ
>>723
s/>>659なら/>>695なら/
2019/07/06(土) 15:06:03.47ID:LdZDcwTE
>>722だけど間違ってたら、教えて。
今みんな何やってるのか把握してない。
2019/07/06(土) 15:56:23.82ID:xBT7e3zK
>>716 Perl5、5で止まる。>>720>>721の解釈違い?それともオレのBug?

%s = qw(. 0 * 1);
@a = map{$s{$_}} split '', '.*...**.*.***..';
$t = 1;
%h = ("@a" => $t);
printf "%2d: @a\n", $t;
for ($t = 2; $t <= 100; $t++) {
 @b=($a[1] ? $a[0] : 0,
   (map{
    ($a[$_-1] xor $a[$_+1]) ? $a[$_] :
     (($a[$_-1] and $a[$_+1]) ? ($a[$_]?0:1) : 0)
   } 1..$#a-1),
   $a[-2] ? $a[-1] : 0
   );
 printf "%2d: @b\n", $t;
 @a = @b;
 $t--, last if exists $h{"@a"};
 $h{"@a"} = $t;
}
@c = map{$_ ? '*' : '.'} @a;
printf "%d => @c\n", $t;

実行結果
~ $ perl 14_716.pl
1: 0 1 0 0 0 1 1 0 1 0 1 1 1 0 0
2: 0 0 0 0 0 1 1 1 0 1 1 0 1 0 0
3: 0 0 0 0 0 1 0 1 1 1 1 1 0 0 0
4: 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0
5: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0
6: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0
5 => . . . . . . * * . . . . . . .
2019/07/06(土) 16:00:21.54ID:LdZDcwTE
>>727
おぉ、同志。(一方通行
729デフォルトの名無しさん
垢版 |
2019/07/06(土) 16:25:41.58ID:ZIRVHkTq
>>717
問題がわからない。
河内塔って何?
2019/07/06(土) 16:28:50.79ID:GxnR+B/l
もしかしてハノイの塔かな
2019/07/06(土) 16:38:33.50ID:Qorx3cLN
(- (expt 2 n) 1) ぐらいの手数増加がやばいやつか
たった64枚で移し終えると世界が滅びるらしいぞw
732デフォルトの名無しさん
垢版 |
2019/07/06(土) 16:51:49.60ID:ZIRVHkTq
>>730
色々ググっている内に中国語で書かれたサイトで「河内塔」が見つかった。
中国語がよくわからないので何とも言えないがどうやらハノイの塔のようだ。
「河内塔(Tower of Hanoi)」と書いてある個所があり下の方にある画像は正にその説明になっている。
https://blog.csdn.net/jon_me/article/details/41986461
2019/07/06(土) 17:04:45.14ID:Zeej7B2I
>>726-727
>>695の3.が適用されてないんじゃ?

>>726はこんな感じ? https://ideone.com/1VOW38
734デフォルトの名無しさん
垢版 |
2019/07/06(土) 17:10:17.77ID:ZIRVHkTq
ベトナム語で「河内」って書いて「ハノイ」と読むんだな。ベトナムでは今は漢字使ってないけど。
https://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%8E%E3%82%A4
2019/07/06(土) 17:31:45.90ID:LdZDcwTE
>>733
えーっと、そのこーどだけど、死んでるセルの隣に生きてるセルがいたら生まれてるんだけどあってる?
2019/07/06(土) 17:52:15.78ID:LdZDcwTE
>>733
示唆してくれてありがとう。言い忘れてた。
2019/07/06(土) 18:01:01.33ID:8vjCWSQ+
>>727

>>716
>確かに、ルール90 と同じです
wikipediaのルール90 を確認してみて
2019/07/06(土) 18:16:30.66ID:LdZDcwTE
うん。リンクあったら一発で書けないこともなかった。というわがまま言ってみる。
まぁ、>>733に書いてあるから、俺のタスクはないなぁ。

https://ja.wikipedia.org/wiki/%E3%82%BB%E3%83%AB%E3%83%BB%E3%82%AA%E3%83%BC%E3%83%88%E3%83%9E%E3%83%88%E3%83%B3#ルール90
2019/07/06(土) 18:21:51.90ID:xBT7e3zK
>>733 ご指摘ありがとう。 >>721

> 3. 両隣の内、片方だけが生きていれば、生きる
> 元々、生きるには、誕生する事も含むから、3a, 3b は、必要ない

を、「3.自マスが死んでいる場合、両隣の何れかでも生きていれば、生まれる。」
と言う意味と捕らえなおして、>>713を書き換えたら、63でloopしたよ。

>>716

>1b. 自マスが死んでいる場合、両隣が生きていれば、生きる(新たに誕生する)

と誕生条件が書いてあったので、3の条件は「生まれる」条件も含むとは考えず、

「3.両隣の内、片方だけが生きていれば、自マスが生きていれば生きる(し、死んでいれば死んだまま)。」
と解釈して >>713 を作ったのが63でloopしなかった原因だと分かった。
2019/07/06(土) 18:25:42.01ID:xBT7e3zK
>>716,721 Perl5

%s = qw(. 0 * 1);
@a = @a = map{$s{$_}} split '', '.*...**.*.***..';
$t = 1;
%h = ("@a" => $t);
@h = ("@a");
for ($t = 2; $t <= 100; $t++) {
 @b=($a[1] ? 1 : 0,
   (map{
    ($a[$_-1] xor $a[$_+1]) ? 1 :
     (($a[$_-1] and $a[$_+1]) ? ($a[$_]?0:1) : 0)
   } 1..$#a-1),
   $a[-2] ? 1 : 0
   );
 @a = @b;
 push @h, "@a";
 $t--, last if exists $h{"@a"};
 $h{"@a"} = $t;
}
$i = $h{"@a"};
print $_ - 1, ": $h[$_-1]\n" for $i..@h;

実行結果
~ $ perl 14_716_721.pl
61: 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
62: 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
63: 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
2019/07/06(土) 18:44:26.01ID:xBT7e3zK
>>716,721 Perl5、ゴメン、結果は0 1じゃなくて.*のstringで表示すべきだったので修正させていただきます

@a = split '', '.*...**.*.***..';
@h = ("@a");
@a = map{'*' eq $_ ? 1 : 0} @a;
$t = 1;
%h = ("@a" => $t);
for ($t = 2; $t <= 100; $t++) {
 @b=($a[1] ? 1 : 0,
   (map{
    ($a[$_-1] xor $a[$_+1]) ? 1 :
     (($a[$_-1] and $a[$_+1]) ? ($a[$_]?0:1) : 0)
   } 1..$#a-1),
   $a[-2] ? 1 : 0
   );
 push @h, join'',map {$_ ? '*' : '.'} @b;
 @a = @b;
 $t--, last if exists $h{"@a"};
 $h{"@a"} = $t;
}
$i = $h{"@a"};
print $_ - 1, ": $h[$_-1]\n" for $i..@h;

実行結果
~ $ perl 14_716_721.pl
61: *.*.*.*.*.*.*.*
62: .*.*.*.*.*.*.*.
63: *.*.*.*.*.*.*.*
2019/07/06(土) 19:13:43.46ID:wBQNST8m
お題と回答
>>5 : 6 10 32 36 44
>>9 : 15 34 35 79
>>11=>>575 : 48 (78) 138-139 (140) 142 146 151 154
>>19 :
>>50, https://mevius.5ch.net/test/read.cgi/tech/1549160513/920 : 4 85 89
https://mevius.5ch.net/test/read.cgi/tech/1549160513/988 == >>164 : 59 61 167 169 189 192 201 202
>>90 : 95 96
>>99 :
>>200 : 214 219
>>215 : 227
>>220 : 232 240 248 256 268
>>235 : 236 237 238 239 247 249 259 342 353
>>320 : 321 323 327 330 340
>>322 : 325 328 329 331 332 339 341 358 359
2019/07/06(土) 19:14:04.22ID:wBQNST8m
>>362 : 367 369 370 371 374 379 380 382 414
>>368 : 390
>>388 : 487 (488) 553 559
>>400 : 401
>>408 :
>>417 : 418 419 421 426 432 433 436 438 442 446 451 452 456 471 474 480 482 489 492 495 498 528 530 540
>>479 :
>>555 : 556 558 564 565
>>557 : 560 562 568 569
>>570 : 574 577
>>573 : 604 622
>>600 : 605 607 611 613 627 691
>>615,626 :
>>632 : 637 640 645 649 650 687 689-690
2019/07/06(土) 19:14:20.27ID:wBQNST8m
>>651 : 654 657 662 679 682
>>655 :
>>661 :
>>683 : 685
>>695,704,716,721 : 696 697 701 703 711 713 714 715 718 722 723 724 727 740-741
>>708 : 714
>>717 :
2019/07/06(土) 19:37:09.81ID:HtNG6e5Z
消えろ
2019/07/06(土) 21:17:45.94ID:Qorx3cLN
ログ汚染が酷い
747695
垢版 |
2019/07/07(日) 08:03:43.59ID:Ts5uCd7M
だから、誕生という概念を作ると、説明が難しいから、「生死」の状態だけにした。
生死だけなら、前の状態に関係ない、前の状態と切れているから

誕生という概念を使うと、
a. 前の状態が死んでいる時と、
b. 前の状態が生きている時で、

処理が変わってくるから複雑になって、勘違いする人も出てくるから
2019/07/07(日) 12:00:48.06ID:K8IqcFVG
>>747
その「だから」は何につながってるのか読めない。
2019/07/07(日) 17:48:05.53ID:Sb2el8tu
>>747
状態が関係ないと実装の工夫のしどころが失われて面白みが半減すると思うよ

最初の何ターンかを例として示せば済むはなしだし
手元で実装を試していればなおさら何の苦もないことかと

細かい事を言うと、本当に実装を試さずに出題しているのならそれはルール違反なんだよね
(チューリングの泥沼問題回避や宿題の丸投げ防止)
2019/07/07(日) 19:42:47.11ID:wvjux210
>>749
出題者が実装をひとつは持っておく、というのは努力目標でいいんじゃないかな?お題が面白ければ私は許容しますね
まあ自分のお題は面白くないので実装をひとつくらいは持つようにしていますが…
2019/07/07(日) 19:55:58.86ID:MQV9uu2h
たしかにくだらないクソ問ばかりだね。
2019/07/07(日) 21:06:25.36ID:JhpdhjN9
お題: 生徒の氏名、身長、体重の3つからなる複数のレコードが与えられる。氏名とBMIを左揃えのテキストの表にせよ。
単位はMKS単位系、テキストはASCIIおよび等幅フォントが使われると仮定してよい。

Tanaka Naoki 15kg 2m
Inoue Ken 280g 32cm
Akai Ryusei 1mg 3km
2019/07/07(日) 21:26:21.37ID:JhpdhjN9
お題: MKS単位系の単位を変換する関数またはクラスを作れ。

1kg:g
→1000g

2m:cm
→200cm
2019/07/07(日) 21:28:22.26ID:JhpdhjN9
名前はテキトーに思いついたのを書いただけです。
2019/07/07(日) 21:28:35.00ID:K8IqcFVG
>>753
C++なら、ユーザー定義リテラルで横着できるんだけど、入力解析が嫌な感じだ。
2019/07/07(日) 21:44:56.12ID:JhpdhjN9
物理シミュレーションが人間の手から離れて自由自在にならなければ、火星への仮想移住もできない。MKS単位系の計算術は重要だ。
2019/07/07(日) 21:50:29.52ID:ngB3G+2v
トリップ付きは大学の教養課程の知識すらない阿呆しかいないのかね
2019/07/07(日) 22:23:37.11ID:0lH1eUtN
常識など切り刻むのみ。
2019/07/07(日) 22:41:27.22ID:+dwSkgWp
死ねや糞コテ
2019/07/07(日) 23:10:54.31ID:K8IqcFVG
https://ideone.com/46Q0vU
物理難しすぎた。
Wikipediaを写経しようと思ったら、わからないことが多すぎる。
2019/07/07(日) 23:19:20.77ID:0lH1eUtN
長さの単位、質量の単位、そして時間の単位の3つがある。これにキロ、ミリ、マイクロなどが前に付く。
変換方法は複数あり、何から何への変換方法はデータとして与えられ、それらは追加可能でなければ不便。
2019/07/07(日) 23:23:22.07ID:wvjux210
先生!質問です!
重さの規準は kg ですか?それとも g ですか?え?kg?おっかしーなー?kg の kって単なる接頭辞 prefix なのでは?
2019/07/07(日) 23:28:12.83ID:6uzWSrE8
全部Jで統一しろハゲ共
764デフォルトの名無しさん
垢版 |
2019/07/08(月) 00:24:27.94ID:YBWHLZTU
長さ1センチの鼻毛を鉛直方向に1ニュートンの力で引っ張り、抜いたときに感じる痛みは1ハナゲ
2019/07/08(月) 00:28:17.48ID:5PNDCGkj
>>763
質量は J に等価交換できても長さや時間は無理なのでは?
2019/07/08(月) 00:58:34.40ID:ktC9cNPU
>>765
natural unitも知らねえのか
767デフォルトの名無しさん
垢版 |
2019/07/08(月) 08:05:28.83ID:ATr0dgzt
タブ区切りの文字列の置換リストがあって、そのとおりにテキストファイルファイルを置換したい
そういうソフトありますか?
見つからないので自作しようとおもったけどここへ書いてみた


置換リスト例

ああああ うううう
aaaaa QQQQQ
768デフォルトの名無しさん
垢版 |
2019/07/08(月) 08:09:30.46ID:ATr0dgzt
コマンドラインでGREPと置換できるソフトはあるんだけど。
DOSの文字制限と、正規表現の制限で、
置換したい文字の設定がややこしい。あと複数同時にできない。
文字を加工せずできれば便利だなと。
2019/07/08(月) 08:10:59.60ID:cS5GyvAA
>>767
スレ違い
770デフォルトの名無しさん
垢版 |
2019/07/08(月) 11:02:56.96ID:tzeJFuHl
>>767
Perlでも使えば?文字列置換楽だよ。
2019/07/08(月) 11:50:01.31ID:8XvlSCIJ
>>767
perl5 が最高だとおもうよ
もともとそういう分野に特化した言語だ
2019/07/08(月) 18:59:50.46ID:qs7HTSo5
>>766
時間や長さを J で統一することは自然単位系でもできませんね…
2019/07/08(月) 19:00:41.66ID:qs7HTSo5
>>767
仕様を正確に記述してください
2019/07/08(月) 19:25:39.25ID:uJPizAN5
宿題に餌を与えないでください
2019/07/08(月) 22:57:02.15ID:G1DtFXg8
Ruby では変換表を使って、置換できる

hash = { 'ab' => 'あ', 'xy' => 'ん' }

p re = Regexp.union( hash.keys ) #=> /ab|xy/

p "9xy9ab9xyx".gsub( re, hash )
#=> 9ん9あ9んx

gsub(pattern, hash) -> String
文字列中の pattern にマッチした部分をキーにして、hash を引いた値で置き換える

hash = {'b'=>'B', 'c'=>'C'}
p "abcabc".gsub(/[bc]/){hash[$&]} #=> "aBCaBC"
p "abcabc".gsub(/[bc]/, hash) #=> "aBCaBC"
2019/07/09(火) 00:46:29.33ID:b1/VU+FF
rubyの宣伝とはいえ、宿題に餌やるなら、問われている事柄に応えてやったらどうかと思う。
宣伝意識が前面に出すぎて目的を忘れるなかれ、って感じ。
2019/07/09(火) 00:48:43.11ID:b1/VU+FF
    |                   \
    |  ('A`)           ギシギシ
   / ̄ノ( ヘヘ ̄ ̄        アンアン/
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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