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

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
630
(7): 2022/08/05(金)13:16 ID:6eafuacR(1) AAS
gnuWin32を基本使っています。
で行のソートなのですが、各行の末尾から逆向きの文字でソートって出来ませんか
たとえば
aaaaCB
bbbBA
cccccDB
とかあったとき、これを
bbbBA
aaaaCB
cccccDB
省6
631: 2022/08/05(金)13:43 ID:Vk8oFh91(1) AAS
>>630
Java
Arrays.sort(a, (left, right) -> {
 var l = left.length() - 1;
 var r = right.length() - 1;

 while (l > -1 && r > -1) {
  var c = Character.compare(left.charAt(l), right.charAt(r));

  if (c != 0) {
   return c;
  }
省11
632
(1): 96 2022/08/05(金)19:36 ID:Rv34IsoP(1/2) AAS
>>630 Perl5が使える環境であれば…

~ $ cat 20_630_isort.pl
chomp (@a = <>);
sub f {join '', reverse split'', $_[0]}
print "$_\n" for sort{f($a) cmp f($b)} @a;

~ $ cat input.txt
aaaaCB
bbbBA
cccccDB

~ $ perl 20_630_isort.pl < input.txt > output.txt
省4
633: 2022/08/05(金)20:52 ID:C4r7F682(1) AAS
>>630 ruby
外部リンク:ideone.com
f = ->(a) {a.sort_by &:reverse}
p f.(%w(aaaaCB bbbBA cccccDB))

>>630 octave
外部リンク:ideone.com
function i = sorti(varargin), [~, i] = sort(varargin{:}); end
f = @(a) a(sorti(cellfun(@(s) {flip(s)}, a)));
f({'aaaaCB' 'bbbBA' 'cccccDB'})
635
(1): 96 2022/08/06(土)00:54 ID:pYJx8bVL(1/3) AAS
>>630 Perl5、計算量の抑制に配慮したバージョンと実行例

$ cat 20_630_isort2.pl
print $_->[0] for sort{$a->[1] cmp $b->[1]} map{[$_, scalar reverse $_]} <>;

$ cat input.txt
aaaaCB
bbbBA
cccccDB

$ perl 20_630_isort2.pl input.txt > output.txt

$ cat output.txt
bbbBA
省2
637: 2022/08/06(土)05:59 ID:UcInr7RU(1/2) AAS
>>630
Kotlin
外部リンク:paiza.io

ただ処理を連結しただけだな。コマンドラインでパイプ使ったみたいな感じ。
638
(1): 2022/08/06(土)06:11 ID:UcInr7RU(2/2) AAS
>>630
Linux 等の UNIX 系 OS で rev コマンドと sort コマンドが使える環境ならシェルのコマンドラインからこう入力するとできる。
(入力文字列は input.txt に入っているとして)。

rev input.txt | sort | rev

Windows の環境でやる場合は互換性のあるコマンドを利用するか、または Cygwin や WSL や WSL2 等の UNIX 互換環境の中でコマンドラインから実行できる。
641: 2022/08/06(土)11:17 ID:y9e1BfKB(1) AAS
>>630 ocaml
外部リンク:ideone.com
let rev s = String.init (String.length s) (fun i -> s.[String.length s - 1 - i])
let (<<) f g x = f (g x)
let f = List.map (fun (r, s) -> s) << List.sort compare << List.map (fun s -> (rev s, s))
let () = List.iter print_endline @@ f ["aaaaCB"; "bbbBA"; "cccccDB"];
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.266s*