Deskripsi tantangan
Dalam tantangan ini, kami hanya mempertimbangkan love
dan hate
sebagai perasaan. Jika kami ingin mengungkapkan perasaan keteraturan N
, kami bergantian di antara keduanya (dimulai dengan hate
):
order | expression
1 I hate it.
2 I hate that I love it.
3 I hate that I love that I hate it.
4 I hate that I love that I hate that I love it.
Pola mengikuti untuk setiap bilangan bulat positif N
. Diberikan N
, keluaran ekspresi perasaan sesuai pesanan N
.
Catatan
- Pemberhentian penuh (
.
) pada akhir ekspresi adalah wajib, - Trailing dan spasi putih terkemuka (termasuk baris baru) diizinkan,
- Output untuk non-positif atau non-integer
N
tidak terdefinisi, - Ini adalah tantangan kode-golf , jadi buat kode Anda sesingkat mungkin!
order
input, danexpression
output?Jawaban:
Python, 54 byte
sumber
f n=take(12*n-5)(cycle"I hate that I love that ")++"it."
(56 byte)CJam , 36 byte
Cobalah online!
Penjelasan
sumber
C,
83767574 byteTerima kasih kepada @Leaky Nun karena menyimpan 11 byte dan menambahkan 4 byte!
Terima kasih kepada @YSC untuk menghemat satu byte!
Cobalah di Ideone
sumber
i=0;while(n--)
->for(i=0;n--;)
menghemat 1 char.Javascript (ES6),
757370 byteDisimpan 2 byte berkat Neil
Disimpan 3 byte berkat Whothehellisthat
Uji
sumber
['I hate','I love'][i&1]
->i&1?'I love':'I hate'
Java 8, 91 byte
Program Tes Tidak Berkumpul
sumber
c=i->for(...)
Mathematica, 63 byte
sumber
Jelly , 25 byte
Cobalah online!
Penjelasan
sumber
05AB1E ,
343227 byteDisimpan 5 byte berkat Adnan .
Penjelasan
Cobalah online!
sumber
R, 79 byte
Untungnya di R, pemisah default
cat
adalah spasi.(Diedit dari versi 73 byte asli yang tidak cukup menyelesaikan masalah.)
sumber
for
loop yang rapi dan%%
. +1Retina ,
4238 byteTerima kasih kepada Leaky Nun karena membantu saya bermain golf!
Input diambil secara unary.
Cobalah online!
Penjelasan
Ganti setiap pasangan
1
dengan1I love n
.Ganti sisanya
1
denganI hate n
.Ganti
n
di akhir baris denganit.
dan setiap n dengan lainnyathat
.sumber
l
: retina.tryitonline.net/...Javascript (ES5),
9994 byteDisimpan 5 byte berkat Leaky Nun.
Solusi 99 byte LAMA:
Solusi 98 byte lainnya:
Kode saya sebelum minifikasi:
sumber
function(c){for(d="",b=0;b<c;++b)d+=(b%2?"I love ":"I hate ")+(b==c-1?"it.":"that ");return d}
Haskell, 70 byte
sumber
PowerShell v2 +, 64 byte
Agak langsung. Loop dari
1
hingga input$args[0]
, setiap iterasi menempatkan salah satu'I love'
atau'I hate'
pada pipa, berdasarkan pseudo-ternary untuk modulo-2 (yaitu, bergantian bolak-balik, dimulai dengan'I hate'
). Mereka string dikemas dalam parens dan-join
ed dengan' that '
untuk Smush mereka bersama-sama, maka penggabungan string' it.'
di akhir.Uji Kasus
sumber
php,
6462 byteSayangnya saya tidak dapat menemukan cara untuk menghindari pengulangan "yang saya", atau setidaknya tidak ada cara untuk melakukannya dalam waktu kurang dari 7 byte.
sunting: disimpan 2 byte berkat @ Jörg Hülsermann
sumber
Perl,
625450 byte(kredit ke @Ton Hospel )
Demo: http://ideone.com/zrM27p
Solusi sebelumnya:
(kredit ke @Dada )
Jalankan dengan
perl -pE '$_="I xe that "x$_;s/x/$@++&1?lov:hat/ge;s/\w+.$/it./'
Solusi pertama (hanya ini milik saya)
Di bagian:
Demo: http://ideone.com/mosnVz
sumber
perl -pE '$_="I xe that "x$_;s/x/$@++&1?lov:hat/ge;s/\w+.$/it./'
.$@++&1
? Untuk@+
perldoc mengatakan "memegang offset dari ujung kiriman sukses terakhir dalam lingkup dinamis aktif saat ini" yang tidak masuk akal bagi saya. Seperti yang saya pahami, Anda menggunakan array ini dalam konteks skalar ($ @ + - apakah Anda mendefinisikannya?) Untuk mendapatkan jumlah elemen dan kemudian menambahkan (+) string yang cocok (& 1). Tidak, tidak, tidak, saya tahu saya seharusnya tidak memposting ke PPCG itu terlalu membingungkan: D$@
hanyalah skalar (saya bisa menggunakan$x
skalar lain),++
adalah operator kenaikan, dan&1
kira - kira sama dengan%2
. Jadi pada dasarnya sama dengan$x++%2
.@
untuk nama variabel skalar; & 1 untuk "dan" bit terakhir untuk memeriksa apakah itu genap (dan bukan referensi balik seperti yang saya kira). Ok mengerti sekarang, terima kasih.$|--
sebagai ganti sebagai ganti$@++%2
Bash + coreutils, 106 byte:
Cukup membuat urutan mulai dari
1
hingga dan termasuk bilangan bulat input menggunakanseq
built-in, dan kemudian iterasi melalui itu satu per satu, keluaran pertamahate
jika nilai variabel iterasii
,, tidak dapat dibagi oleh2
danlove
sebaliknya. Dalam iterasi yang sama, ia kemudian memilih outputthat
jikai
tidak sama dengan nilai input, danit.
sebaliknya.Cobalah secara Online! (Ideone)
sumber
printf
string dan jangan gunakan penentu format. Apakah gunanya untuk membandingkan apakahi%2
lebih besar dari 0. Saya Anda membalik perintah dalam daftar, Anda dapat menggunakan kurang dari perbandingan bukannyai==$1
:for i in `seq $1`;{ printf "I `((i%2))&&echo hat||echo lov`e `((i<$1))&&echo that||echo it.` ";}
. Omong-omong, kami biasanya memberi label solusi seperti Bash + coreutils, karena penggunaanseq
.///,
6057 byte-3 byte berkat m-chrzan
Masukan di unary dengan mengikuti baris baru.
Cobalah online!
sumber
/T/that /
ke awal dan mengganti semua contohthat
denganT
.R,
9290 byteAdaptasi R dari jawaban python @Leaky Nun. Bekerja dengan string dalam R membosankan seperti biasa.
Ini mungkin bisa golf lebih jauh.
Edit: disimpan 2 byte dengan mengubah:
[1:((n*12)-5)]
untuk[6:(n*12)-5]
sumber
C, 96 Bytes
Saya tidak melihat solusi di atas dari Melepaskan Helium Nuclei yang lebih baik.
sumber
MATL , 37 byte
Cobalah online!
Penjelasan
Kode ini didasarkan pada pemetaan berikut dari angka ke string:
Program ini mendorong angka ke string dalam kelompok tiga:
2
,0
,3
; kemudian2
,1
,3
; kemudian2
,0
,3
; ... sebanyak inputn
. Setelah itu, final3
ditransformasikan menjadi a4
, pemetaan diterapkan untuk mengubah angka menjadi string, dan string digabungkan menggunakan ruang sebagai pemisah.sumber
JavaScript (ES6), 68 byte
sumber
C #,
8583 byteSecara rekursif membuat string, menggunakan parameter opsional untuk melacak kebencian / cinta yang mana dan berapa banyak yang harus ditambahkan.
-2 byte dari tip ini untuk memeriksa kemerataan / keanehan angka.
Tidak ada solusi parameter opsional,
878684 byteYang ini melakukan hal yang sama kecuali menentukan benci / suka untuk menambahkan berdasarkan apakah parameternya positif atau negatif. Setiap iterasi, parameter mendekati nol, tanda bergantian.
sumber
Thue, 100 byte
Mengambil input sebagai unary. (String n
#
s)sumber
Pyke, 36 byte
Coba di sini!
Juga 36 byte
Coba di sini! (Tautan menggunakan
X
alih-alihI
, ini harus bekerja untuk jumlah byte yang sama secara offline di mana Anda dapat benar-benar menggunakan byte tersebut. Online\r
akan secara otomatis diganti dengan\n
)sumber
> <> (Ikan), 82 Bytes
Keraguan itu sangat efisien, tetapi tampaknya kurang lebih berhasil. Input adalah melalui tumpukan awal, yang membuat skor 85 Bytes jika Anda memasukkan ukuran
-v
argumen yang diperlukan untuk melakukannya.Cobalah online!
sumber
Lua, 75 Bytes
sumber
('I hate that I love that '):rep(n):sub(1,n*12-5)
. Dan akan terlihat lebih bagus jika Anda menggabungkan "itu." sampai akhir, karenaprint()
output parameternya dipisahkan oleh tab./// , 68 byte
Masukan dalam unary - tambahkan lebih banyak
1
di bagian terakhir.Cobalah online!
sumber
dc, 75 byte
Kami benar-benar hanya mencetak satu helai tali pada suatu waktu di sini, dan tidak meninggalkan sampah di tumpukan. Ini bagus, kita tidak perlu membuang byte yang berurusan dengan register untuk penghitung kita.
sumber
Julia, 91 Bytes
Pikir saya menambahkan solusi julia:
sumber