올드 스페인어 알파벳 순서


22

1994 전에, 스페인어 사전은 알파벳 순서를 사용 특수성으로 이중 음자를 : ll그리고 ch그들은 하나의 문자 인 것처럼 간주되었다. ch바로 다음에 c, 그리고 ll바로 다음에 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두 글자 (묶음으로 간주되는 l, l그리고 c, h각각), 따라서 순하여 문자를 제외한 영어와 동일하다 ñ.

이전 명령은 확실히 더 흥미로웠다 .

도전

0 개 이상의 단어 목록을 입력하고 이전 스페인어 알파벳 순서에 따라 정렬 된 목록을 출력하십시오. 정렬은 단어 사이의 단어 사이가 아닌 단어 사이에 있습니다. 즉, 단어는 원자 적이며 결과는 가능한 다른 순서로 동일한 단어를 포함합니다.

단순화하기 위해, 우리는 편지를 고려하지 않을 것이다 ñ, 또는 악센트 모음 á, é, í, ó, ú, 또는 문자 대문자. 각 단어는 ASCII 97 ( a)에서 ASCII 122 ( z) 까지의 범위에서 가져온 하나 이상의 문자 시퀀스입니다 .

l한 줄에 두 개 이상의 문자가 있으면 왼쪽에서 오른쪽으로 그룹화해야합니다. 즉, lllis lland then l(not land then ll)입니다.

입력 형식은 공백, 줄 바꿈 또는 편리한 문자로 구분 된 단어 일 수 있습니다. 단어는 따옴표로 묶거나 선택하지 않을 수 있습니다. 단어 목록 또는 단어 배열도 허용됩니다. 모든 합리적인 형식이 유효합니다. 당신의 대답에 명시하십시오.

비슷한 방식으로 출력은 합리적인 형식입니다 (입력과 반드시 ​​같을 필요는 없음).

코드 골프, 가장 짧은 승리.

테스트 사례

다음 예에서 단어는 공백으로 구분됩니다. 첫 번째 줄이 입력되고 두 번째 줄이 출력됩니다.

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

cuchara cuchillo cubiertos cuco cueva
cubiertos cuco cuchara cuchillo cueva

"단어"도 한 글자가 될 수 있습니다 :

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도 단일 문자였습니다. 나는 그것이 ll과 ch 이후에 하나의 문자로 지위를 잃었다 고 생각하므로 Wikipedia의 설명은 부분적으로 그렇게 잘못되지 않습니다.
피터 테일러

"두"? filler +
CalculatorFeline

3
@PeterTaylor 공식 아카데미 (RAE) rr한 글자 만 고려하지 않았습니다 . 적어도 1803 년 이후는 아닙니다. 그러나 분명히 그것은 아메리카 대륙에서 하나의 편지로 여겨졌다는 것이
Luis Mendo

1
헝가리 인은 별도의, 훨씬 어려운 도전을받을 자격이있는 것 같습니다 :-)
Luis Mendo

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|.. 이것은 단어를 "편지"로 나눕니다. 그런 다음 분할 된 목록을 기준으로 단어를 정렬하십시오.


훌륭한 접근 방식! (이제 마지막으로 이해했습니다) :-)
Luis Mendo

그 코드는 절대적으로 :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

수학, 81 바이트

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

TimmyD의 답변과 동일한 접근 방식.


1

파이썬 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

자바 스크립트, 95 바이트

s=>s.map(a=>a.replace(/ll|ch/g,m=>m[0]+'~')).sort().map(a=>a.replace(/.~/g,m=>m>'d'?'ll':'ch'))

1

펄, 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.