[過去ログ] プログラミングのお題スレ Part15 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
467
(11): 2019/09/17(火)17:37 ID:IoM9hprN(1/2) AAS
プログラム言語標準の文字列(e.g. java.lang.String) が与えられ、ランレングス圧縮した結果をプログラム言語標準の文字列で返す関数を作成してください。ただし、入力に数字が入っていた場合のケースは考慮しなくても構いません。
テストケース(関数名 = f)
f("あいうえお") -> "あいうえお"
f("ああいいうう") -> "あ2い2う2"
f("あいうあいう") -> "あいうあいう"
471: 2019/09/17(火)21:40 ID:nuFS/S7T(1) AAS
>>467
haskellだよー

join.map ((:).head <*> (bool "".show.length <*> (1 <).length)).group
472: 2019/09/17(火)21:47 ID:s7WBnLNZ(1) AAS
>>467 JavaScript
const f = s => [...s]
.reduce((acc, ch) => {
const [lastCh, n = 1] = acc.pop() || [];
if (!lastCh) return [[ch]];
if (lastCh == ch) {
return [...acc, [lastCh, n + 1]];
} else {
return [...acc, [lastCh, n == 1 ? '' : n], [ch]];
}
省3
473: 2019/09/17(火)23:32 ID:htBCID9n(1/2) AAS
>>467 Perl5

use utf8;
binmode STDOUT, ':encoding(utf-8)';
for (qw{あいうえお ああいいうう あいうあいう あうあうあー ああああ}) {
 my $s;
 while (/((.)\g-1*)/g) {
  $s .= $2;
  $s .= $l if 1 < ($l = length $1);
 }
 print "$s\n";
省8
474: 2019/09/17(火)23:58 ID:htBCID9n(2/2) AAS
>>467 Perl5、しくった、お題は「関数を作れ」だった…orz

use utf8;
binmode STDOUT, ':encoding(utf-8)';
sub f {
 my $s;
 while (/((.)\g-1*)/g) {
  $s .= $2;
  $s .= $l if 1 < ($l = length $1);
 }
 $s
省10
475: 2019/09/18(水)10:00 ID:Qm7jF2Kv(1/2) AAS
>>467 Ruby

f = -> s {s.gsub(/(.)\1+/){[$1, $&.size].join}}

%w[あいうえお ああいいうう あいうあいう あうあうあー ああああ].each{|s| puts [s, f[s]].join(' => ')}
# =>
あいうえお => あいうえお
ああいいうう => あ2い2う2
あいうあいう => あいうあいう
あうあうあー => あうあうあー
ああああ => あ4
477: 2019/09/18(水)15:45 ID:GIOjMe2C(1/4) AAS
>>467
外部リンク:ideone.com
C++。いい感じにかけた。
490: 2019/09/19(木)21:01 ID:Iq+eqHsU(1) AAS
>>467 Lua
マルチバイト文字には対応していない。
function f(s)
   local r,c="",1
   for i=1,#s do
   if s:sub(i,i)==s:sub(i+1,i+1) then
   c=c+1
   else
     r=r..s:sub(i,i)
   if c>1 then
省10
491
(1): 2019/09/19(木)21:11 ID:VNRPdI7o(1) AAS
>>460 octave
外部リンク:ideone.com

>>467 ruby
外部リンク:ideone.com
492: 2019/09/19(木)21:20 ID:7Zlc7qce(1) AAS
>>467
perl5
デバッガが日本語で化けるんで英語だけ
print("aabbccddd" =~ s{ (.) \1* }{ "$1" . length"$&" }xgre);
a2b2c2d3
498: 2019/09/20(金)08:14 ID:ImrTQZdo(1) AAS
>>467
Common Lisp 外部リンク:ideone.com
Perl 外部リンク:ideone.com
JavaScript 外部リンク:ideone.com
532: 2019/09/22(日)01:56 ID:35++XhB6(3/6) AAS
>>467 Pharo/Squeak Smalltalk

| fn |

fn := [:str | String streamContents: [:ss |
(str as: RunArray) runsAndValuesDo: [:n :x |
ss nextPut: x; nextPutAll: (n = 1 ifTrue: [''] ifFalse: [n asString])
]
]].

fn value: 'あいうえお'. "=> 'あいうえお' "
fn value: 'ああいいうう'. "=> 'あ2い2う2' "
fn value: 'あいうあいう'. "=> 'あいうあいう' "
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.032s