Program harus mencetak alfabet empat kali: pertama dalam urutan abjad normal, kedua dalam urutan keyboard qwerty, ketiga dalam urutan keyboard dvorak, dan terakhir dalam urutan abjad terbalik. Outputnya harus menyerupai ini:
abcdefghijklmnopqrstuvwxyz
qwertyuiopasdfghjklzxcvbnm
pyfgcrlaoeuidhtnsqjkxbmwvz
zyxwvutsrqponmlkjihgfedcba
Outputnya tidak peka terhadap huruf besar-kecil, dan Anda dapat menambahkan atau menghilangkan baris atau spasi baru di mana pun Anda inginkan.
Tangkapan : program harus kurang dari 104 karakter, atau, dengan kata lain, lebih kecil dari panjang alfabet kali empat.
Saya akan menerima jawaban dengan kode terpendek, kecuali jika saya melihat sesuatu yang sangat pintar atau menarik yang saya lebih terkesan.
EDIT: Saya akan menerima jawaban tersingkat pada hari Rabu, 27/4/2011.
EDIT2: Dan pemenangnya adalah (seperti biasa) Golfscript dalam 64 karakter! Tempat kedua , yang berada di belakang hanya dengan tiga karakter, juga dalam Golfscript, dengan 67 karakter, diikuti oleh Bash di tempat ketiga dengan 72 karakter.
Tetapi ada beberapa orang lain yang ingin saya sebutkan, seperti yang ini , yang, tergantung pada definisi Anda, hanya menggunakan 52 "karakter", dan yang ini di mana ia menulisnya dalam bahasa yang ia ciptakan.
Ada beberapa orang yang melanggar aturan tidak tertulis dan tidak memenuhi syarat, tetapi saya akan menyebut mereka hanya karena cara berpikir mereka tanpa kotak.
sumber
Jawaban:
Python 2, 97 karakter
Mengurutkan QWERTY dan mengubah kembali dari daftar ke string lebih pendek dari alfabet itu sendiri! *
Pilihan lain untuk membuat alfabet dalam karakter lebih sedikit daripada alfabet itu sendiri:
Meskipun ini mencetak daftar karakter Python.
Tidak banyak yang bisa dilakukan di sini dalam hal kompresi data; memasukkan huruf-huruf menjadi 5 bit hanya menghemat 39 karakter, yang tidak banyak jika Anda harus membatalkannya (dan Anda masih harus merepresentasikan byte secara harfiah); sepertinya zlib (seperti contohnya) menghemat kurang dari 20 byte; penyandian urutan sebagai daftar delta ke huruf berikutnya masih membutuhkan 5 bit untuk setiap delta, karena yang terbesar dalam urutan ini adalah -22:
* Meski hanya sedikit.
sumber
q="qwertyuiopasdfghjklzxcvbnm";a=sorted(q);print(*a,q,"pyfgcrlaoeuidhtnsqjkxbmwvz",*a[::-1])
PHP, 100 byte
Seperti ISO 8859-1:
Untuk mereproduksi dengan andal,
sumber
Ruby 1.9,
88878480sumber
Bash, 82
sumber
Python,
9796 "karakter"Mengambil penggunaan kata "karakter" Anda secara bebas, inilah beberapa python yang menggunakan karakter unicode 16-bit untuk mengkodekan 3 karakter normal masing-masing. Program ini total 96 karakter, 35 di antaranya adalah karakter unicode paling aneh yang pernah saya lihat.
Saya tidak yakin sampah unicode akan muncul dengan benar, jadi inilah program python untuk menghasilkan program python di atas:
sumber
Bash, 72
EDIT: dihapus
tr -d
.Penghargaan: Alexander, Roger.
sumber
|tr -d ' '
, menyimpan 10 karakter dan menjadikan versi ini pemimpin pada saat penulisan :-)Golfscript, 64 karakter
Catatan: juga 64 byte. Sebenarnya, bermain dengan Unicode dan perubahan basis tampaknya kontraproduktif karena
base
kata kunci terlalu panjang.sumber
Windows PowerShell, 89
Tidak terlalu bagus, tetapi setidaknya lebih pendek dari string output:
Jauh lebih pendek sekarang saya melihat ada relaksasi di whitespace. Dan sedikit lebih pendek, jika saya mengabaikan case yang saya ijinkan.
sumber
)
sana. Harus 88.Golfscript,
76, 67 karaktersumber
123,97>+
untuk menghasilkan alfabet awal.CI - 92 karakter
CI ("Compiler / Interpreter") adalah bahasa sederhana berbasis stack yang saya buat untuk tantangan "Interpreter Mandiri Interpreter" ( tautan untuk menjawab ). Saya memposting jawaban itu sekitar dua jam sebelum tantangan ini diposting. Ini bukan GolfScript (yang masih belum saya pelajari), karena tujuan saya adalah membuat penerjemah menjadi pendek.
Program ini harus diteruskan ke
ci
penerjemah melalui input standar. Penerjemah memperlakukan karakter setelah terminasi)
sebagai input ke program. Bahasa saya tidak mendukung string literal, jadi stdin menggantikannya.sumber
Python 2.7.X - 103 karakter ironisnya ...
Ternyata, membuat alfabet dengan python membutuhkan lebih banyak karakter daripada mengkodekannya. Seperti halnya mengimpor alfabet. Terkadang harus menyukai bahasa yang berpusat pada keterbacaan.
sumber
+
alih - alih,
dan menghemat ruang itu.C - 133 karakter
Versi singkat dari Casey:
Berputar:
Output ditransposisikan
Ini adalah versi yang mengubah keluaran, untuk bersenang-senang. 134 karakter.
Berputar:
Cetakan:
sumber
i
sebagai global dan menempatkanstrcpy(...)
ke blok pertama dari for loop Anda mendapatkan 129. masih terlalu banyak.J
Pengalaman pertama saya dengan J. Idenya adalah hanya menggunakan nomor kanonik (leksikografis) dari permutasi yang diperlukan; sayangnya ini membutuhkan lebih banyak karakter daripada hard-coding-nya. Tetapi jika seseorang dapat menemukan beberapa ekspresi aritmatika (menggunakan kekuatan dan yang lainnya) menghasilkan angka ajaib, itu bisa dipersingkat.
sumber
Python, 90 karakter unicode
berjalan di ideone - http://ideone.com/R2dlI atau codepad - http://codepad.org/lp77NL9w
sumber
Javascript
139121baru:
tua:
sumber
alert((a=(q='qwertyuiopasdfghjklzxcvbnm').split('').sort()).join('')+q+'pyfgcrlaoeuidhtnsqjkxbmwvz'+a.reverse().join(''))
Lua - 111 karakter
Ketukan C dan C ++! :-)
Versi "Pintar" di Lua
129 karakter
Berputar:
sumber
C -
163135 karakterIni tidak memenuhi persyaratan karena memiliki lebih dari 104 karakter, tapi itu menyenangkan untuk dibuat. Mungkin seseorang akan memiliki beberapa saran.
Ini mengkompilasi pada GCC 4.5.1 (yang lain belum diuji). Anda dapat menghilangkan #termasuk, mengembalikan tipe, dan deklarasi variabel! Hardcoding akan menghasilkan program yang lebih pendek, tetapi itu tidak menyenangkan.
Versi spasi putih:
C -
124122 lumpuhIni adalah versi hardcode lumpuh, dan itu masih tidak membuat potongan.
sumber
puts()
printf sebagai gantinya dalam kasus kedua - 2 karakter kurang.while
denganputs(a);
dalam kasus pertama, menjatuhkan*p=a
; - 138 chars bukannya 163.puts
. BerubahPHP 88 byte
sumber
J - 69 char
Penjelasan:
(,\:~) y
- Urutkany
dalam urutan menurun (\:~
), dan tambahkan (,
) key
.x (,~|.) y
- Balikkan (|.
)y
, dan tambahkan itu ke depanx
.x F&G y
- Jalankan(G y) F (G y)
, yaitu, lakukanF
pada hasil menerapkanG
argumen.Jadi, bersama-sama, kita menambahkan alfabet, mundur, ke string Dvorak dan reverse-QWERTY, lalu membalikkan alfabet QWERTY / alfabet dan meletakkannya di depan Dvorak / alfabet.
sumber
Bash, 64
Saya sangat terlambat ke pesta, tetapi saya memiliki solusi 64 karakter. Program perlu disimpan ke disk agar berfungsi
Bagaimana itu bekerja:
{a..z}
dan{z..a}
cukup jelas, tetapi pada dasarnya itu hanya mencetak setiap karakter dalam rentang masing-masing.$(sed 1d $0|base64)
keluaran program, abaikan baris pertama, kemudian lewati itu melalui base64 encoder (seperti beberapa contoh lain telah dilakukan).Alasannya lebih pendek dari contoh serupa lainnya ...
... karena
{a..z}
rentangnya lebih pendek daripada pengkodean base64, jadi saya hanya perlu mengkodekan base64 setengah string. Dan karena saya membaca data biner dari file daripada menyimpannya dalam sebuah string, saya tidak perlu melarikan diri karakter apa pun dalam kode.Cara membuat ulang skrip ini:
Jika kode tidak menyalin / menempel dengan benar dari Stack Exchange ke editor teks Anda, kemudian jalankan yang berikut di baris perintah Anda (agnostik shell):
Kemudian jalankan:
sumber
05AB1E , 25 byte
Cobalah online!
Penjelasan
sumber
C ++
Agak menyedihkan ketika cara terpendek untuk melakukan sesuatu dalam suatu bahasa adalah dengan meng-hard-code-nya.
sumber
std::cout
lebih pendek dari ituusing namespace std
, dan Anda dapat melewativoid
.J (77)
Memotong 3 karakter dengan menggunakan variabel:
Memotong 2 karakter lagi dengan menggunakan pendekatan level nilai:
sumber
Haskell (95)
Perl (51)
Tidak ada aturan yang mengatakan saya tidak bisa.
sumber
Q (68)
Output:
Mencoba menemukan perbaikan pada pengkodean keras dua tengah tetapi tidak datang dengan satu.
sumber
K - 69 char
Penjelasan:
26#a:
- Tetapkan dua tata letak keyboard kea
, dan kemudian ambil 26 karakter pertama.b:a@<
- Sortira
dan tetapkan itu keb
:<
memberikan permutasi untuk urutan naik, dan@
memungkinkan kami mengindeksa
untuk mengurutkannya.b,a,|
- Tambahkan berturut-turutb
, lalua
, lalu kebalikan (|
) darib
.sumber
Pyth, 57
Alfabet, string, alfabet terbalik. G adalah alfabet. Cetak tersirat.
sumber
Dyalog APL , 60 byte
Cetakan:
Yang diizinkan sesuai OP:
sumber
Jelly, 36 byte (tidak bersaing)
Cobalah online!
Penjelasan:
sumber
05AB1E ,
6059 byteCobalah online!
AÂ
- Mendorong alfabet bercabang."qwertyuiopasdfghjklzxcvbnm""pyfgcrlaoeuidhtnsqjkxbmwvz"
- Mendorong qwerty dan drovak.»
- Mencetak tumpukan.05AB1E , 57 byte (Jika Anda tidak peduli tentang acak \ n)
Cobalah online!
sumber
""
dengan baris baru.