古いスペイン語のアルファベット順


22

1994年以前は、スペイン語の辞書は特殊なアルファベット順使用していました:ダイグラフでllchまるで1文字であるかのように考えられていました。chすぐに続きcllすぐに続いたl。スペイン語にñ続く文字を追加するnと、順序は次のようになりました。

a, b, c, ch, d, e, f, g, h, i, j, k, l, ll, m, n, ñ, o, p, q, r, s, t, u, v, w, x, y, z

1994年以来llch(二文字のグループとみなされllそしてchそれぞれ)、そして従って、アルファベット順に文字を除いて、英語と同じですñ

古い注文は間違いなくもっと面白かったです。

チャレンジ

0個以上の単語のリストを入力し、古いスペイン語のアルファベット順にソートされたリストを出力します。並べ替えは単語間です(単語内の文字間ではありません)。つまり、単語はアトミックであり、出力にはおそらく異なる順序で同じ単語が含まれます。

単純化するために、私たちは手紙を考慮しないであろうñ、またはアクセント付きの母音áéíóú、または文字の大文字。各単語は、ASCII 97(a)からASCII 122(z)までの包括的範囲から取得した1つ以上の文字のシーケンスになります。

l行に3文字以上ある場合は、左から右にグループ化する必要があります。つまり、lllis lland then l(not land then ll)です。

入力形式には、スペースで区切られた単語、改行、または任意の便利な文字を使用できます。単語は引用符で囲まれていてもいなくても、選択できます。単語のリストまたは配列も受け入れられます。合理的な形式はすべて有効です。あなたの答えにそれを述べてください。

同様に、出力は合理的な形式になります(入力と同じである必要はありません)。

コードゴルフ、最短の勝利。

テストケース

次の例では、単語はスペースで区切られています。1行目は入力、2行目は出力です。

llama coche luego cocina caldo callar calma
caldo calma callar cocina coche luego llama

cuchara cuchillo cubiertos cuco cueva
cubiertos cuco cuchara cuchillo cueva

「単語」も1文字にすることができます。

b c a ch ll m l n
a b c ch l ll m n

またはありそうもない組み合わせ(lが左から右にグループ化されるというルールを覚えておいてください):

lll llc llz llll lllz
llc lll lllz llll llz

入力が空の場合、出力は空になります。



もちろん、この順序は他の言語にも適用できます。

chiaro diventare cucchiaio
cucchiaio chiaro diventare

all alternative almond at ally a amber
a almond alternative all ally amber at

5
質問には答えがありますが、今は問題を修正するには遅すぎますが、実際にはrrも1文字でした。llやchよりも後の1文字としての地位を失ったと思うので、Wikipediaの説明は部分的なものほど悪くはありません。
ピーターテイラー

「tweo」?フィラー+
電卓

3
@PeterTaylor公式アカデミー(RAE)rr一通の手紙を考慮しませんでした。少なくともない1803以来、しかし、それは明らかに事実ですそれはアメリカでの単一文字と考えられていた
ルイス・Mendo

1
ハンガリー人は別のはるかに困難な挑戦に値するように見える:
ルイスメンドー

1
ウェールズ語のアルファベットにはたくさんの文字があり、アルファベット順(英語)でないか、すべてのラテン文字(a、b、c、ch、d、dd、e、f、ff、g、 ng、h、i、j、l、ll、m、n、o、p、ph、r、rh、s、t、th、u、w、y
Algy Taylor

回答:


7

Pyth、14 13バイト

更新:これが受け入れられ、些細な1バイトのゴルフに気づいた。おっと。

:D"ll|ch|."1Q

オンラインでお試しください。 テストスイート。

単語ごとに、正規表現に一致する重複しないすべての一致を見つけますll|ch|.。これにより、単語が「文字」に分割されます。次に、分割リストで単語を並べ替えます。


素晴らしいアプローチ!(ようやく理解できた):
ルイスメンドー

そのコードは絶対に魅力的です:D
エリックアウトゴルファー

3

PowerShell、46 44 51 50バイト

$args|sort @{e={$_-replace'(?=ch|ll)(.).','$1Α'}}

Α文字がで(少なくとも私のマシン上で、それは他のロケールに違う場合、私はよく分からない)のPowerShellのデフォルトのソート順ですべてのラテン文字の後に来るギリシャ文字のアルファです。UTF8エンコードでは2バイトとしてカウントされます。

この文字列が次の名前のファイルに保存されていると仮定した場合の使用例es-sort.ps1

> es-sort.ps1 'lzego' 'luego' 'llama'

luego
lzego
llama

2

Mathematica、81バイト

StringReplace[Sort@StringReplace[#,"ch"->"cZ","ll"->"lZ"],"cZ"->"ch","lZ"->"ll"]&

TimmyDの答えと同じアプローチ。


1

Python 2、128 116バイト

lambda p:map(''.join,sorted([{'!':'ll','?':'ch'}.get(c,c)for c in w.replace('ll','!').replace('ch','?')]for w in p))

ここには間違いなく改善の余地があると感じています。



1

Perl、40バイト

+1を含む -p

STDINの単語のリストを使用して実行します。

perl -p spanisort.pl <<< "llama coche luego cocina caldo callar calma"

spanisort.pl

s/ll|ch|./\u$&/g;$_="\L@{[sort split]}"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.