Memasukkan:
Input adalah susunan mur yang acak (dalam bahasa Anda), kemungkinan mur mengikuti. Program Anda harus memiliki cara untuk mewakili setiap jenis kacang, seperti kode integer. Program harus mampu menangani berbagai ukuran konfigurasi kacang.
Kemungkinan Kacang:
Kola nut
Macadamia
Mamoncillo
Maya nut
Mongongo
Oak acorns
Ogbono nut
Paradise nut
Pili nut
Pistachio
Walnut
Keluaran:
Output harus berupa array yang diurutkan sedemikian rupa sehingga tidak ada mur yang berdekatan dari jenis yang sama. Jika ini tidak mungkin, output harus berupa array kosong.
Input Contoh (disederhanakan):
["walnut", "walnut", "pistachio"]
Contoh Output:
["walnut", "pistachio", "walnut"]
Solusi mungkin tidak hanya mengocok array sampai menjadi unik karena kebetulan. Jenis yang digunakan harus yang deterministik
perl6 -e 'my @a="aaaaabbbbccccdddee".comb;my @b = @a.pick(*) while @b.squish !== @a;say [~] @b'
baedcbdacdecbabaca
(3,3,2) dapat menyebabkan mereka gagal juga.Jawaban:
GolfScript,
42413738 karakterKode mengharapkan input pada STDIN dan mencetak hasilnya ke STDOUT, misalnya:
Script menjadi lebih lama dari yang diharapkan tetapi saya kira ada ruang untuk perbaikan.
Sunting: Kasus daftar dengan satu item biaya saya 1 karakter (perbandingan terbaik yang bisa saya buat adalah sama dengan Peter).
sumber
$.,)2//zip
persis apa yang ada dalam pikiran saya. Interpretasi saya terhadap spec adalah bahwa ia bisa mengambil input pada stack dan meninggalkannya di stack, jadi mungkin kita harus mendorong klarifikasi.["walnut"]
di bagian bandingkan-dua-pertama.GolfScript, 32 karakter
Input dan format output yang sama dengan solusi Howard.
sumber
Brachylog v2, 10 byte
Cobalah online!
Solusi brute-force. (Ini adalah fungsi, diizinkan karena tantangannya tidak mengatakan "program penuh".) Ini juga sebagian besar merupakan terjemahan langsung dari spec (satu-satunya kehalusan nyata adalah bahwa saya berhasil mengatur hal-hal sehingga semua kendala implisit tiba tepat di tempat yang tepat, sehingga tidak memerlukan karakter tambahan untuk mendamaikan mereka).
Perhatikan bahwa ini adalah algoritme umum untuk mengatur ulang segala jenis daftar sehingga tidak memiliki dua elemen yang menyentuh; ia dapat menangani representasi string dari elemen-elemen, dan ia dapat menangani kode integer juga. Jadi tidak masalah bagaimana "Program Anda harus memiliki cara untuk mewakili setiap jenis kacang, seperti kode integer." persyaratan dari pertanyaan ditafsirkan.
Penjelasan
sumber
J, 80 karakter
Tidak benar-benar di liga yang sama dengan Golfscript yang satu ini. Saya curiga ada keuntungan yang harus dibuat, tetapi 14 karakter yang dibutuhkan hanya untuk memasukkan daftar ke dalam program
[;.1' ',1!:1[1
adalah cacat utama.Pada dasarnya program mengambil dalam daftar, mengelompokkan item yang sama bersama-sama, mengurutkan berdasarkan jumlah item dalam setiap kelompok turun, dan bergantian output antara paruh pertama dan paruh kedua daftar. Sisanya jika kode menghilangkan item asing dan memutuskan apakah daftar tersebut adalah output yang valid (menghasilkan infinity
_
jika tidak).Contoh:
grup
(</.])
:sortir
(\:#&.>)
:berlepasan
((],.|.)~>.@-:@#)
:sumber
Jelly , 14 byte
Cobalah online!
6 byte terakhir dapat dihapus jika kita dapat memiliki perilaku tidak terdefinisi untuk input yang tidak valid.
sumber
Stax , 10 byte
Jalankan dan debug itu
Inilah program yang sama dibongkar, tidak diserang, dan dikomentari.
Jalankan yang ini
sumber