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

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
733
(3): デフォルトの名無しさん [] 2023/06/07(水) 23:16:05.89 ID:ijTNramp(1) AAS
お題
A,B,Cがランダムにいくつか入力されます

隣り合う文字が異なるときそれらは同じグループです
A,B → [A,B]

隣り合う文字が同じ時それらは異なるグループです
A,A → [A],[A]

A,B,A,A,A,B → [A,B,A],[A],[A,B]

もっとも長いグループを出力してください

入力
B,A,B,C,B,B,B,A,C,C,A,B,A,A,C,A,B,C,C,C,B,C,A,B,C,A,A,A,C,B

出力
[C,B,C,A,B,C,A]
734: 638 [sage] 2023/06/08(木) 01:33:27.84 ID:GaLhBmy3(1) AAS
>>733 Perl5

use feature qw{:5.16 signatures say};
@a = ([]);
sub ($c, @s) {
 push @{$a[-1]}, $c;
 push @a, [] if $c eq $s[0];
 __SUB__->(@s) if @s;
}->(qw{B A B C B B B A C C A B A A C A B C C C B C A B C A A A C B});
$c = (sort{@$a <=> @$b} @a)[-1];
$" = ','; say "[@$c]";

※見易くするためインデントを全角スペースに置換してあります。

実行結果
$ perl 21_733.pl
[C,B,C,A,B,C,A]
736: デフォルトの名無しさん [] 2023/06/08(木) 21:24:06.92 ID:B/+C/EDE(1/2) AAS
>>733
PowerShell

$s = "B,A,B,C,B,B,B,A,C,C,A,B,A,A,C,A,B,C,C,C,B,C,A,B,C,A,A,A,C,B"
@($s -replace "(.),(?=\1)", "`$1/" -split "/" | group length | sort -descending {[int]$_.name})[0] |% {$_.group}

[実行結果]
C,B,C,A,B,C,A
737: デフォルトの名無しさん [sage] 2023/06/08(木) 22:05:38.22 ID:QLsHzH3O(1) AAS
>>733 ocaml
外部リンク:ideone.com
open List
let (<<) f g x = f (g x)
let flip f x y = f y x
let f =
let aux x = function
[] :: ys -> [x] :: ys
| (z :: _) as y :: ys -> if x = z
then [x] :: y :: ys
else (x :: y) :: ys
in rev << hd << rev << map snd << sort compare << map (fun x -> (length x, x)) << fold_left (flip aux) [[]]
let g = print_newline << iter print_char << f
let () = g ['B';'A';'B';'C';'B';'B';'B';'A';'C';'C';'A';'B';'A';'A';'C';'A';'B';'C';'C';'C';'B';'C';'A';'B';'C';'A';'A';'A';'C';'B']

>>733 ruby
f = ->(a) {a.each_with_object([[]]) {|x, acc| acc[-1][-1] != x ? acc[-1] << x : acc << [x]}.sort_by(&:size)[-1]}
p f.(%w(B A B C B B B A C C A B A A C A B C C C B C A B C A A A C B))
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.040s