Skip to content

Instantly share code, notes, and snippets.

@ology
Created May 15, 2025 18:41
Show Gist options
  • Save ology/4c81da68e50eed502d0dfedf6889f09e to your computer and use it in GitHub Desktop.
Save ology/4c81da68e50eed502d0dfedf6889f09e to your computer and use it in GitHub Desktop.
Perl Schwartzian transform to Pascal
program SortStrings;
uses SysUtils;
var
unsorted: array of string;
sorted: array of string;
i, j: Integer;
temp: string;
begin
unsorted := ['x', 't', 'h', 'b', 'a', 'q', 'z'];
SetLength(sorted, Length(unsorted));
// Sorting the array
for i := 0 to High(unsorted) do
sorted[i] := unsorted[i];
for i := 0 to High(sorted) - 1 do
for j := i + 1 to High(sorted) do
begin
if (Length(sorted[i]) > Length(sorted[j])) or
((Length(sorted[i]) = Length(sorted[j])) and (sorted[i] > sorted[j])) then
begin
// Swap
temp := sorted[i];
sorted[i] := sorted[j];
sorted[j] := temp;
end;
end;
end.
#!/usr/bin/env perl
use strict;
use warnings;
my @unsorted = qw(x t h b a q z);
my @sorted = map { $_->[0] }
sort { $a->[1] <=> $b->[1] or $a->[0] cmp $b->[0] }
map { [$_, length($_)] } @unsorted;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment