Membantu! Lampu Sepenuhnya Otomatis Saya Dari Pemisah Kegelapan V3001.01 rusak! :(
Pedoman
Tugas
Tulis program yang akan mengambil input dari array (atau daftar dalam beberapa bahasa) dari jumlah string apa pun yang merupakan huruf L atau huruf D (mewakili cahaya atau gelap) dan menghasilkan array yang berisi dua array, satu dengan semua L, dan satu dengan semua D's.
Aturan
- Ini kode golf sehingga jawaban tersingkat dalam byte menang
- Input hanya akan mengandung huruf kapital
- Harus ada jumlah L yang sama di output seperti yang ada di input, sama berlaku untuk D
- Input mungkin hanya memiliki satu elemen (atau bahkan mungkin nol elemen)
- Jika salah satu atau kedua array output tidak mengandung elemen, output daftar kosong (dalam beberapa bahasa ini mungkin berarti Anda perlu menampilkan string)
- Selalu punya array pertama menjadi array L.
Contoh output:
["L","D","L","D","D"] -> [["L","L"],["D","D","D"]]
["L","L","L"] -> [["L","L","L"],[]]
["D","D"] -> [[],["D","D"]]
[] -> [[],[]]
code-golf
array-manipulation
sorting
Amorris
sumber
sumber
"LDLDD" -> "LL DDD"
atau semacamnya?["L","L",["D","D","D"]]
,.Jawaban:
APL, 8 byte
Penjelasan:
⊂
: input terlampir~⍨¨
: tanpa masing-masing'DL'
: 'D' dan 'L'Contoh:
sumber
'DL'
tapi tidak'LD'
?'LD'∩⍨¨⊂
atau⍞∘∩¨'LD'
mungkin lebih mudah dijelaskan.Python 3 , 37 byte
Cobalah online!
sumber
Haskell , 28 byte
Cobalah online!
Jika input dapat berupa daftar karakter,
[]
sekitarc
dapat dihapus.sumber
PHP, 46 byte
Diasumsikan daftar yang diberikan adalah:
$arr = ['L','L','D','D','L','D','D','D','D','L'];
foreach($arr as $b){$a[$b][]=$b;};print_r($a);
sumber
$argv
alih-alih$arr
dan mengharapkan skrip dijalankan dari baris perintah sebagaiphp -f golf.php L L D D L D D D D L
- tetapi sekali lagi Anda harus mencari $ argv [0] yang merupakan nama filefor(;$b=$argv[++$i];)$a[$b][]=$b;print_r($a);
atau<?foreach($_GET as$b)$a[$b][]=$b;print_r($a);
Mathematica, 27 byte
Fungsi murni mengambil daftar
L
s danD
s (simbol, bukan karakter / string) sebagai input dan mengembalikan daftar dua daftar. Sebagai contoh,kembali
{{L, L, L}, {D, D}}
. Cobalah online!Gather
dengan sendirinya dekat dengan apa yang kita inginkan, tetapi gagal memenuhi spesifikasi dalam dua cara: itu tidak menghasilkan daftar kosong jika inputnya hilangL
atauD
s, dan itu tidak selalu urutkanL
ke kiri. Mengganti input#
dengan{L,D}~Join~#
menyelesaikan kedua masalah sekaligus: itu berarti akan ada setidaknya satuL
dan setidaknya satuD
, danL
s akan dikembalikan terlebih dahulu sejakL
pertama kali ditemukan.Rest/@
kemudian menghapus inisialL
danD
.(Saya mencoba menggunakan solusi
Count
, tetapi karena masalah kari, sepertinya tidak lebih pendek:±q_:=#~Table~Count[q,#]&/@{L,D}
31 byte.)sumber
Cases@@@{{#,L},{#,D}}&
, selama 22 byte?Haskell, 32 byte
Hanya fungsi perpustakaan yang membosankan.
Cobalah online!
sumber
Ruby , 26 byte
Cobalah online!
sumber
PHP7,
5245 byte-7 byte terima kasih kepada @ Jörg Hülsermann
Gunakan dengan CLI sebagai
php -r a.php L L L D D L D
Script berjalan melalui argumen yang disediakan dan menambahkannya ke array berdasarkan nilainya.
sumber
-r
opsi alih-alih-f
menghapus<?php
dan menjatuhkan ruang setelahas
Common Lisp,
6665 byteCobalah online!
Jika, alih-alih string, kami menggunakan simbol, maka itu jauh lebih pendek:
Common Lisp,
424140 byteCobalah online!
sumber
Raket , 48 byte
Cukup terapkan fungsi anonim ini ke, misalnya,
'(L D L D D L)
sumber
Mathematica,
2218 byte4 byte disimpan oleh jenius CalculatorFeline!
Cobalah online , atau di kotak pasir Wolfram !
Input adalah daftar simbol
L
danD
- bukan string, hanya hurufnya sendiri, seperti dalam jawaban Greg Martin . Sintaksnya#|L
adalah singkatanAlternatives[#,L]
, tetapi@@@
sintaks menggantikan kepalaAlternatives
denganCases
, jadi kode ini setara dengan{Cases[#,L],Cases[#,D]}&
.sumber
{#,x}
bisa#|x
untuk -4 byte.@@
dan@@@
bekerja dengan kepala apa pun, bukan hanyaList
. Jika|
tidak bekerja, Anda masih dapat menyimpan dalam beberapa kasus dengan&&
,||
atau**
..
dan menghitung operator.#.L|#.D
Java 8, 105 byte
Tips diterima.
Baru di PPCG, apakah saya harus memasukkanimport java.util.*;import java.util.stream.*;
dalam jumlah byte?Non-bersaing, itu tidak membuat daftar kosong dengan input kosong. Terima kasih kepada Nevay untuk menghemat beberapa byte.
sumber
Stream#of
alih-alihArrays#stream
mengurangi impor kejava.util.stream.*
dan"D"::equals
alih-alihk->k.equals("D")
. Selain itu kode tidak memenuhi persyaratan karena tidak menampilkan daftar kosong jika tidak adaL
/D
ada (kasus-uji 2-4).Prolog (SWI) ,
42, 37 byteCobalah online!
Mengingat bahwa
W
ini adalah daftar pencucian, masing-masingw/3
akan menyatukanL
danD
masuk ke dalam daftar Cahaya dan Gelap, dengan mempartisi pencucian tersebut dengan predikat yang berhasil jika suatu item adalah Cahaya.[Sunting: golf -5 berkat Fatalize ]
sumber
l('L').
lebih pendek 5 byte daril(X):-X='L'.
Japt ,
131210 byteMengujinya (
-Q
menandai untuk tujuan visualisasi saja)Penjelasan
Input array secara implisit
U
.Hasilkan array
[0,1]
dan lewati setiap elemen melalui fungsi, denganX
menjadi elemen saat ini.Saring
U
dengan memeriksa persamaan ...... dengan karakter dalam string
LD
di indexX
.sumber
¥
harus bekerja ..."[["L","L","D","D"],[]]
"Tidak, tidak pergi ke sana :)" - saya 2017¥
.Pyth ,
109 byteSuite uji .
sumber
.g
tampaknya lebih singkat .05AB1E , 8 byte
Cobalah online!
sumber
Javascript (ES6), 37 byte
Ini didasarkan pada jawaban Javascript (ES6) yang sekarang dihapus.
Versi tidak disatukan:
Cuplikan kode contoh:
sumber
C #, 61 byte
Versi Lengkap / Diformat:
sumber
F # , 37 byte
Cobalah online!
Mengambil input sebagai daftar string, dan mengembalikan dua daftar, yang pertama dengan elemen mana
fun a -> a="L"
benar dan yang lainnya dengan elemen yang menghasilkan false.sumber
Jelly , 10 byte
Cobalah online!
Dalam Jelly, string adalah daftar string Python 1-char, misalnya
['a', 'b', 'c']
. Itu sebabnya Anda mendapatkan hasil seperti[[['L'], ['L']], [['D'], ['D'], ['D']]]
, karena string 1-char Jelly berperilaku sama.Tidak berfungsi sebagai program lengkap, karenanya
ÇŒṘ
di bagian bawah.sumber
string->char[]
otomatis?W€€
bagian.Perse , 21 byte
Saya mungkin atau mungkin belum menerapkan fungsi partisi daftar khusus untuk tantangan ini. Mengambil input sebagai array string.
sumber
Sekam , 7 byte
Cobalah online!
Penjelasan
sumber
Java 8,
110106 byte-4 byte terima kasih kepada @Nevay .
Penjelasan:
Coba di sini.
sumber
a->{String[]r={"",""};for(char c:a)r[c/69]+=c;return new char[][]{r[1].toCharArray(),r[0].toCharArray()};}
(-4 byte)Oktaf, 21 byte
Input adalah array karakter, output adalah array sel. Daur ulang dari jawaban saya di sini .
Contoh eksekusi di ideone .
sumber
R , 35 byte
Cobalah online!
Baca dari stdin.
sumber
Julia, 26 byte
sumber
Haskell (Lambdabot), 41 byte
Cobalah online!
sumber
PowerShell , 27 byte
Cobalah online!
Sunting: sebelumnya
$args.where({$_-eq'L'},'sp')
selama 28 byte. Bisa jadi$args.where({+"0x$_"},'sp')
untuk 27 jika bukan karena aturan bahwa L's harus didahulukan.sumber
CJam , 14 byte
Input adalah daftar karakter (string), output adalah daftar daftar karakter (daftar string).
Cobalah online!
Penjelasan:
sumber
Perl 5 , 70 byte
Cobalah online!
sumber