Oreoorererereoo
Diberikan string input yang mirip dengan kata "oreo", berikan representasi ASCII dari cookie yang selebar string input (untuk memastikan stabilitas cookie).
Aturan
- Inputnya adalah huruf kecil, string yang tidak kosong tanpa spasi kosong yang berisi kombinasi string "o" dan "re", dan hanya berisi string tersebut.
- String "o" mewakili cookie padat, sedangkan string "re" mewakili pengisian.
- Keluaran harus berupa cookie bertumpuk yang selebar string input.
- Outputnya mungkin bukan array string
- Cookie harus tumpang tindih dengan satu karakter di setiap sisi
- Karakter yang digunakan untuk output tidak harus cocok dengan output di bawah ini (█ dan ░), mereka hanya harus menjadi karakter non-spasi putih yang berbeda untuk dua bagian cookie
- Padding spasi putih di sisi kiri pengisian diperlukan, dan spasi spasi tambahan adalah opsional
Contohnya
Input: oreo
Output:
████
░░
████
Input: o
Output:
█
Input: re
Output: (two spaces)
Input: rere
Output:
░░
░░
Input: oreoorererereoo
Output:
███████████████
░░░░░░░░░░░░░
███████████████
███████████████
░░░░░░░░░░░░░
░░░░░░░░░░░░░
░░░░░░░░░░░░░
░░░░░░░░░░░░░
███████████████
███████████████
Karena ini adalah kode golf, jawaban terpendek menang, semoga berhasil :)
re
sekarang dapat diterima1 or 2 spaces
, belum tentu 2?Jawaban:
Jelly ,
16 1413 byte-1 Terima kasih kepada Erik the Outgolfer
Menggunakan
1
krim dan0
kue.Cobalah online!
Bagaimana?
Byter 16 sebelumnya:
Menggunakan
r
untuk cr
eam dano
untuk co
okie.Cobalah online!
sumber
Pepe , 364 byte
Sayangnya penerjemah online tidak menangani mengompresi komentar, maka semua
o
karakter akan digantikan oleh spasi .. Baik spasi maupuno
yang diperlukan, jadi ini bisa menjadi 295 byte, tapi saya lebih suka seperti ini:Cobalah online!
Tidak disatukan
Mungkin ada beberapa peluang golf dengan bendera yang saya lewatkan, tapi saya sudah selesai sekarang:
sumber
Kanvas ,
191817 byteCoba di sini!
Menggunakan kode panjang yang mengganggu
:r≠*┤]
untuk menghapusr
s dari input ..sumber
Japt
-R
,1615 byteCobalah
Alternatif
sumber
C # (Visual C # Interactive Compiler) , 95 byte
Cobalah online!
Alternatif menggunakan Agregat, 108 byte
Cobalah online!
sumber
o
, karenan.Length-2
akan menghasilkan-1
.n.Length-2
is adalah ketika input memilikire
.R , 106 byte
Cobalah online!
Versi sebelumnya dengan penjelasan:
R , 118 byte
Cobalah online!
Kode dan penjelasan yang belum dibuka:
sumber
05AB1E ,
181716 byte-1 byte terima kasih kepada @Emigna
Penggunaan
o
untuk cookie danr
untuk mengisi.Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
sumber
oro
bukan input yang mungkin, karena input hanya akan berisio
s danre
s. Apapun,oro
tampaknya masih benar mengikuti spesifikasi, karena itu outputooo\n r\nooo
. Apa yang salah tentang itu?2*
dapat·
dan spasi kosong yang hilang dapat diperbaiki dengan mengubah».c
ke.c.B»
·
, terima kasih! :) Dan selalu menyenangkan memiliki spesifikasi yang berubah selama tantangan, desah ..Retina ,
7473 byteSaya merasa sudah lama tidak mengirimkan jawaban. Nah, inilah saya. Juga, Retina telah banyak berubah, dan saya merasa seperti saya payah sekarang.
Cobalah online!
sumber
[or]
artinyao
ataur
bukannya[
atau]
. Membuat kepalaku sakit.Retina , 21 byte
Cobalah online! Penjelasan:
Hapus
r
s.Tuliskan setiap huruf pada barisnya sendiri yang diulang sampai panjang input aslinya.
Ganti dua
ee
s pertama pada setiap baris dengan spasi.sumber
&
: PC (gcc) ,
135113109104 byteduapuluhdua duapuluh tujuh byte berkat NieDzejkob .Cobalah online!
sumber
-D$=putchar
e=o
ke kondisi pertama untuk loop dan kemudian menghapus yang lain.JavaScript ES6, 103 byte
Menggunakan ganti 103 byte:
Cobalah online!
Menggunakan split dan memetakan 116 byte:
Cobalah online!
sumber
${"|".repeat(s>1?s-2:0)}
dan spasi putihnya, daripada menggunakan" "+"|".repeat(s>1?s-2:0)
.Perl 5
-p
, 47 byteCobalah online!
sumber
Python 3 , 77 byte
Cobalah online!
sumber
+" \n"
untuk menghemat satu byte.Mathematica,
11191 byteCobalah secara Online!
Hal ini majorly disingkat berkat Misha 's suntingan .
Kode asli saya:
Kode ini tidak terlalu mewah tetapi tampaknya terlalu mahal untuk mengkonversi dari string dan kemudian kembali atau melakukan hal lain yang pintar.
Secara khusus, dengan hanya 3-4 perintah yang memiliki nama String, pendekatan awal saya tidak dapat menyimpan byte sama sekali dengan mencoba abstrak itu. Misalnya, berikut ini adalah 129 byte:
sumber
StringRepeat
dapatTable
karena<>
akan mengubah daftar menjadi string nanti; yangIf
tidak perlu karena kita mengambilre
cabang hanya ketikan
setidaknya 2; kita dapat menghemat tanda kurung dengan mendefinisikann
hanya saat kita menggunakannya. Cobalah online!If
telah ditambahkan karenaStringRepeat
akan menimbulkan kesalahan pada kasus "re"; itu tidak memungkinkan Anda untuk mengulang string 0 kali.Table
tidak memiliki batasan seperti itu, jadi itu menghemat besar!Perl 6 , 37 byte
Cobalah online!
Blok kode anonim yang mengambil string dan mencetak oreo, dengan
o
sebagai cookie danr
sebagai krim.Penjelasan:
sumber
o
bisa digunakan sebagai pengganti∘
. Golf yang sangat bagus.Java 11, 110 byte
Penggunaan
=
untuk cookie dan~
untuk mengisi.Cobalah online.
Penjelasan:
Solusi di atas menggunakan pengganti. Alih-alih, berikut ini memetakan karakter input:
Java 11,
113112 byte-1 byte terima kasih kepada @Neil .
Cobalah online.
Penjelasan:
sumber
~c&1
?PHP ,
1009993 byteCobalah online!
ADUH. Waaaay_too_long nama fungsi PHP menyerang lagi!
Keluaran:
sumber
PHP ,
968785 byteTerima kasih kepada @gwaugh -9 Bytes
Berkat @manatwork -2 Bytes
Cobalah online!
Cobalah online! (87 Bytes)
Cobalah secara online (pengiriman asli 97 byte)!
Dan fungsi rekursif
PHP , 135 byte
Cobalah online! (rekursif)
sumber
<?=
kita dapat menggunakan<?
, atau apakah saya salah?' '.$r(o,$l-2).""
→" {$r(o,$l-2)}"
.""
istead dari''
$argn
: Coba online!JavaScript,
726564 byteCobalah online
sumber
Powershell,
716966 byte-2 byte terima kasih @Veskah
-3 byte terima kasih @AdmBorkBork
Skrip uji yang kurang golf:
Keluaran:
sumber
$args
69 byte[string[]]
adalah[int[]]
...[int[]]
Adalah[int]
jika array hanya berisi satu elemen. Bagus! Terima kasih!r
bisa" "+'%'*($l-2)
menggunakan -3 byte.Arang , 19 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Ulangi karakter string input.
Aktifkan setiap karakter.
Jika ini adalah
o
maka cetak string input diganti dengan#
s pada barisnya sendiri.Jika ini
e
kemudian bergerak ke kanan, cetak satu baris-
s yang kurang dari dua panjang string input, kemudian pindah ke bawah dan ke kiri.sumber
Bash, 87 byte
Tanpa
sed
:Terima kasih kepada @manatwork.
Dengan
sed
(90 byte):sumber
test.sh
. Kemudian, Anda menelepon test.sh dari baris perintah sebagai berikut:bash test.sh oreoorererereoo
.f
diperlukan untuk mengulang karakter$2
$1
beberapa kaliC # (Visual C # Interactive Compiler) , 71 byte
Cobalah online!
Meminjam beberapa ide dari jawaban Perwujudan Ketidaktahuan pasti.
-6 byte terima kasih kepada @ASCIIOnly!
Konsep keseluruhannya adalah untuk menghitung agregat string di atas karakter input dengan mengikuti aturan-aturan ini:
r
ditemui, tambahkankarakter spasi tunggal untuk indentasi. Kita tahu karakter selanjutnya adalah
e
.o
atau suatue
ditemui, menghasilkan string dengan mengulangi karakter saat ini beberapa kali dan menambahkannya ke baris baru atau padding dan baris baru.PadLeft
Fungsi ini digunakan untuk menghasilkan string karakter berulang.Hasilnya adalah gabungan dari semua string ini.
sumber
Pyth , 28 byte
Coba di sini! Yang ini menggunakan loop.
Pyth, 30 byte
(Saat string diganti)
Coba di sini! Yang ini menggunakan penggantian string.
Saya sangat suka python (itulah yang saya tulis dalam skrip tes asli saya), jadi saya pikir saya akan melakukan entri pyth untuk bersenang-senang :)
sumber
█
dan░
masing-masing tiga byte. Atau saya kehilangan sesuatu di sini?N
, bahkan menghemat beberapa byte!33 chars, 37 bytes
, tetapi tidak dalam bahasa golf di TIO. Tetapi dalam solusi Anda hanya mengubah karakter-karakter itu memang memperbaiki masalah, jadi ini bukan masalah besar di sini.Ruby ,
6260 byteCobalah online!
Penggunaan
O
untuk kue,*
untuk isian.-1 berkat @manatwork menunjukkan kesalahan konyol dan -1 lainnya karena relaksasi aturan tentang ruang putih.
sumber
.gsub
parameter.C # (.NET Core) , 143 byte
Tanpa LINQ.
Cobalah online!
sumber
Clojure , 137 byte
Saya tidak menggunakan karakter yang bagus dalam cetakan di versi golf karena itu mahal. Mengembalikan string yang akan dicetak.
Cobalah online!
Lihat penjelasan di bawah ini.
Pra-golf:
sumber
Dart ,
120106107 byteCobalah online!
sumber
Python 2 ,
777672 byteCobalah online!
Bagian luar cookie adalah 'o' dan isiannya adalah 'r'.
sumber
+' '
setelah(l-2)
. Anda juga salah ketik,*' '
pasti+' '
.kode mesin x86-64 (Linux), 97 byte
Fungsi x86-64 ini membawa pointer ke string input di rsi dan membangun output mulai dari pointer di rdi (ini adalah register yang digunakan untuk melewati dua argumen pertama dari fungsi C di Linux). Untuk kenyamanan, saya telah menulis bungkus C ++ untuk ini yang juga melakukan sanitasi input yang bagus dan mencetak hasilnya. Kode itu dapat ditemukan di sini . Ini juga menunjukkan rakitan sintaks nasm asli yang saya tulis untuk fungsi ini (dan juga versi non-golf yang pertama kali saya gunakan).
Beberapa hal yang perlu diperhatikan adalah bahwa kode ini tidak menghormati register tersimpan callee apa pun, yang berarti bahwa kode C ++ kemungkinan akan macet jika dijalankan beberapa saat setelah memanggil fungsi ini. Di komputer saya tidak, tapi itu agak mengejutkan. Saya juga tidak menambahkan byte nol untuk membatasi string output, dan sebagai gantinya ruang yang dialokasikan untuk string output diisi dengan byte. (Jika ini tidak diizinkan, saya dapat menambahkan terminator nol dengan biaya 3 byte).
Logika untuk kode ini pada dasarnya menghitung panjang string, kemudian membangun garis panjang ini untuk setiap karakter 'o' dan 'r' yang terlihat dalam string input, dan kemudian untuk setiap karakter 'e' yang terlihat, menggantikan yang pertama dan karakter terakhir pada baris sebelumnya dengan karakter spasi.
Saya tidak dapat menemukan tempat online untuk mengkompilasi dan menjalankan campuran kode sumber C ++ dan nasm, jadi saya mungkin menulis beberapa kode wrapper kecil untuk membuktikannya berfungsi.Kalau tidak, Anda harus dapat mengkompilasi dan menjalankan ini dengan makefile di tautan yang saya berikan dengan perintah:Saya dapat memformat perakitan menjadi sesuatu yang dapat diterima oleh gcc, jadi cobalah secara online!
sumber