[過去ログ] プログラミングのお題スレ Part18 (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
249(14): 2020/08/09(日)16:07 ID:HZ7sqguG(1) AAS
お題
文字列abcdeを右に2つ回転するとdeabcとなる
文字列abcdeを左に2つ回転するとcdeabとなる
2つの文字列を入力として受け取り
2つの文字列が一致するか、または、文字列を回転させて一致した場合はtrueを返してください
さもなくばfalseを返してください
入力: abcde deabc
出力: true
入力: abcde cdeba
出力: false
250: 2020/08/09(日)16:42 ID:/K790vfJ(2/3) AAS
>>249 js
const isRotateStr = (a, b) => (a + a).indexOf(b) != -1
console.log(isRotateStr("abcde", "deabc"))
// true
console.log(isRotateStr("abcde", "cdeba"))
// false
254: 253 2020/08/09(日)19:17 ID:A1LNtpwx(1) AAS
>>249 Perl5
use feature qw{signatures say};
sub strot_cmp($a, $b) {
say "入力 $a $b";
say "出力 ", "$a$a" =~ /$b/ ? 'true' : 'false';
}
strot_cmp qw{abcde deabc};
strot_cmp qw{abcde cdeba};
実行結果
~ $ perl 18_249_strot_cmp.pl
省5
256: 2020/08/09(日)22:00 ID:BOQzPYI8(1) AAS
>>221 octave
外部リンク:ideone.com
>>249 octave
外部リンク:ideone.com
257(1): 253 2020/08/09(日)22:27 ID:iNMqPGBy(1) AAS
>>253 それだと「文字列を回転させて一致」のみならず「含まれている」場合もtrueになってしまうので修正
>>249 Perl5
use feature qw{signatures say};
sub strot_cmp($a, $b) {
say "入力 $a $b";
@a = "$a$a" =~ /^(.*)($b)(.*)$/;
say "出力 ", (@a and "$a[2]$a[0]" eq $b) ? 'true' : 'false';
}
strot_cmp qw{abcde deabc};
strot_cmp qw{abcde cdeba};
省10
263(1): 253 2020/08/10(月)01:07 ID:mTkq56mc(1/2) AAS
>>260
>>257は一致する場合に対応するようあせって書いた面があり
正規表現を使うのはやりすぎ感があったのは確かなので
顕に正規表現を使わずに書きを考えてみた。
もっとも簡素な書き方として思いついたのがsplitで三分割して
前後の余った文字列を連結したらそれも一致するかなので
>>249 Perl5
use feature qw{signatures say};
sub strot_cmp($a, $b) {
say "入力 $a $b";
省7
264(1): 253 2020/08/10(月)01:18 ID:mTkq56mc(2/2) AAS
>>263 ゴメン、$a[2]$a[0]はbug、訂正
>>249 Perl5
use feature qw{signatures say};
sub strot_cmp($a, $b) {
say "入力 $a $b";
@a = split $b, "$a$a", 3;
say "出力 ", ("$a[1]$a[0]") eq $b ? 'true' : 'false';
}
strot_cmp qw{abcde deabc};
strot_cmp qw{abcde cdeba};
省1
266: ◆QZaw55cn4c 2020/08/10(月)02:53 ID:JYoLJZbs(1) AAS
>>249 C
2chスレ:tech
270: 2020/08/10(月)17:10 ID:Z7zFlWuQ(1/2) AAS
>>249
Kotlin
簡単なやり方は出尽くしたのであえてグルグル回すだけのIteratorを作成した。
外部リンク:paiza.io
273(1): 2020/08/10(月)18:43 ID:TsKVv45J(1) AAS
>>249
Python3
外部リンク:ideone.com
274: 2020/08/10(月)21:10 ID:EfqLUS40(1) AAS
>>249 Python3
def f(a, b): return len(a) == len(b) and a in b + b
275: 2020/08/10(月)22:32 ID:tDeKMBiv(1) AAS
>>249 c
外部リンク:ideone.com
276: 2020/08/10(月)23:41 ID:SKFyjjt9(3/3) AAS
>>249 C++
外部リンク:ideone.com
281: 2020/08/11(火)07:40 ID:RSsrE9PW(1) AAS
>>249
>>273をリファクタリング
外部リンク:ideone.com
379: 2020/08/20(木)11:35 ID:nWR09WFB(1) AAS
>>249
Elixir
# 蓄積変数 set は、すべての文字列の集合。abcde, bcdea などの5つ。
# word は、1文字ずらした文字列
src_word = 'abcde'
%{ set: set } = Enum.reduce_while( 1..length( src_word ), %{ set: MapSet.new, word: src_word }, fn _count, acc ->
[ head | tail ] = acc.word
next_word = tail ++ [ head ] # 1文字ずらす
acc = %{ acc | word: next_word }
省12
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.216s*