Thứ tự chữ cái tiếng Tây Ban Nha cũ


22

Trước năm 1994, các từ điển tiếng Tây Ban Nha đã sử dụng thứ tự chữ cái với một đặc thù : các bản thảo llchđược coi như thể chúng là các chữ cái đơn lẻ. chngay lập tức theo sau c, và llngay lập tức theo sau l. Thêm chữ ñcái sau ntiếng Tây Ban Nha, thứ tự sau đó là:

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

Từ năm 1994 llchđược coi là nhóm của hai chữ cái ( l, lc, htương ứng), và do đó thứ tự chữ cái là giống như trong tiếng Anh, với ngoại lệ của bức thư ñ.

Trật tự cũ chắc chắn thú vị hơn .

Các thách thức

Nhập một danh sách từ 0 trở lên và xuất ra danh sách được sắp xếp theo thứ tự bảng chữ cái tiếng Tây Ban Nha cũ. Sắp xếp là giữa các từ (không phải giữa các chữ cái trong một từ). Nghĩa là, các từ là nguyên tử và đầu ra sẽ chứa các từ giống nhau theo một thứ tự có thể khác nhau.

Để đơn giản hóa, chúng tôi sẽ không xem xét bức thư ñ, hoặc nguyên âm có dấu á, é, í, ó, ú, hoặc viết hoa chữ cái. Mỗi từ sẽ là một chuỗi gồm một hoặc nhiều ký tự được lấy từ phạm vi bao gồm từ ASCII 97 ( a) đến ASCII 122 ( z).

Nếu có nhiều hơn hai lchữ cái liên tiếp, chúng nên được nhóm từ trái sang phải. Đó là, lllllvà sau đó l(không lvà sau đó ll).

Định dạng đầu vào có thể là: các từ được phân tách bằng dấu cách, bởi dòng mới hoặc bất kỳ ký tự thuận tiện nào. Các từ có thể được bao quanh bởi dấu ngoặc kép hoặc không, tùy bạn chọn. Một danh sách hoặc mảng các từ cũng được chấp nhận. Bất kỳ định dạng hợp lý là hợp lệ; Chỉ cần nêu nó trong câu trả lời của bạn.

Theo cách tương tự, đầu ra sẽ là bất kỳ định dạng hợp lý nào (không nhất thiết phải giống với đầu vào).

Mã golf, thắng ngắn nhất.

Các trường hợp thử nghiệm

Trong các ví dụ sau, các từ được phân tách bằng dấu cách. Dòng đầu tiên là đầu vào, thứ hai là đầu ra:

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

cuchara cuchillo cubiertos cuco cueva
cubiertos cuco cuchara cuchillo cueva

"Từ" cũng có thể là các chữ cái đơn:

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

hoặc các kết hợp không mong muốn (hãy nhớ quy tắc lđược nhóm từ trái sang phải):

lll llc llz llll lllz
llc lll lllz llll llz

Một đầu vào trống sẽ cung cấp một đầu ra trống:



Tất nhiên, thứ tự này cũng có thể được áp dụng cho các ngôn ngữ khác:

chiaro diventare cucchiaio
cucchiaio chiaro diventare

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

5
Bây giờ đã quá muộn để sửa câu hỏi, vì nó đã có câu trả lời, nhưng thực ra rr cũng chỉ là một chữ cái. Tôi tin rằng nó đã mất trạng thái là một chữ cái muộn hơn ll và ch, vì vậy lời giải thích trong Wikipedia không sai nhiều như một phần.
Peter Taylor

"Tweo"? filler +
CalculatorFeline

3
@PeterTaylor Học viện chính thức (RAE) đã không xem xét rrmột chữ cái duy nhất ; ít nhất là kể từ năm 1803. Nhưng sự thật là rõ ràng nó được coi là một chữ cái duy nhất ở Châu Mỹ
Luis Mendo

1
Có vẻ như Hungary xứng đáng có một thử thách riêng, khó khăn hơn nhiều :-)
Luis Mendo 10/03/2016

1
Bảng chữ cái tiếng Wales có rất nhiều trong số chúng, và có lẽ rất thú vị vì chúng không theo thứ tự bảng chữ cái (tiếng Anh), hoặc bao gồm tất cả các ký tự Latin: 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

Câu trả lời:


7

Bình thường, 14 13 byte

Cập nhật: thấy điều này đã được chấp nhận và nhận thấy một golf 1 byte tầm thường. Rất tiếc.

:D"ll|ch|."1Q

Hãy thử trực tuyến. Bộ thử nghiệm.

Đối với mỗi từ, tìm tất cả các kết quả không trùng lặp cho biểu thức chính quy ll|ch|.. Điều này phân chia từ thành "chữ cái". Sau đó, chỉ cần sắp xếp các từ theo danh sách chia.


Cách tiếp cận tuyệt vời! (Bây giờ tôi cuối cùng đã hiểu nó) :-)
Luis Mendo

Mã đó hoàn toàn hấp dẫn:D
Erik the Outgolfer 2/12/2016

3

PowerShell, 46 44 51 50 byte

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

Αtự này là chữ cái Hy Lạp alpha xuất hiện sau tất cả các chữ cái Latinh theo thứ tự sắp xếp mặc định của PowerShell (ít nhất là trên máy của tôi, tôi không chắc nó có khác ở các địa phương khác không). Nó được tính là 2 byte trong mã hóa UTF8.

Ví dụ sử dụng, giả sử chuỗi này được lưu trong một tệp có tên es-sort.ps1:

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

luego
lzego
llama

2

Toán học, 81 byte

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

Cách tiếp cận tương tự như câu trả lời của TimmyD.


1

Python 2, 128 116 byte

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

Tôi vẫn cảm thấy như có chỗ chắc chắn để cải thiện ở đây.


1

Javascript, 95 byte

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

1

Perl, 40 byte

Bao gồm +1 cho -p

Chạy với danh sách các từ trên STDIN:

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

spanisort.pl

s/ll|ch|./\u$&/g;$_="\L@{[sort split]}"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.