Dalam tantangan ini, teks tenda palsu adalah teks yang diperlihatkan bagian demi bagian, dengan cara seperti scrolling.
Beberapa contoh:
testing 4
t
te
tes
test
esti
stin
ting
ing
ng
g
hello 2
h
he
el
ll
lo
o
foobarz 3
f
fo
foo
oob
oba
bar
arz
rz
z
Something a bit longer 10
S
So
Som
Some
Somet
Someth
Somethi
Somethin
Something
Something
omething a
mething a
ething a b
thing a bi
hing a bit
ing a bit
ng a bit l
g a bit lo
a bit lon
a bit long
bit longe
bit longer
it longer
t longer
longer
longer
onger
nger
ger
er
r
small 15
s
sm
sma
smal
small
small
small
small
small
small
small
small
small
small
small
mall
all
ll
l
aaa 3
a
aa
aaa
aa
a
brace yourself 6
b
br
bra
brac
brace
brace
race y
ace yo
ce you
e your
yours
yourse
oursel
urself
rself
self
elf
lf
f
Anda harus menulis program atau fungsi yang mengambil dua input dan mencetak output seperti dijelaskan di atas. Anda mungkin atau tidak mengeluarkan spasi tambahan di output Anda. Ini adalah kode-golf sehingga kode terpendek dalam byte menang.
Jika program Anda berdiri sendiri (yaitu ketika dijalankan benar-benar mencetak garis-garis) (Input dapat berupa hard-coded tetapi mudah diubah) dan tidur sedikit di antara setiap baris output Anda mendapatkan bonus -10.
Jawaban:
CJam,
1211 byte1 byte disimpan oleh Dennis.
Saya menggunakan "Input bisa berupa kode-keras tetapi mudah diubah": ini mengharapkan input sudah ada di stack, jadi Anda bisa menambahkannya
"testing" 4
ke atas, misalnya.Uji di sini.
Penjelasan
Perhatikan bahwa transpos dari output yang diinginkan jauh lebih sederhana:
Jadi kita hanya perlu membuat
n
garis, menambahkani
spasi untuki
darin-1
bawah ke0
. Itulah yang dilakukan oleh kode:19 - 10 = 9?
Saya menemukan bonus "tidur sedikit di antara setiap baris" agak kabur dan cerdik, tapi di sini adalah versi 19 byte yang hanya berhenti setelah setiap baris dengan menghitung semua permutasi dari array
[0 1 .. 7]
. Dalam juru bahasa online ini hanya mengarah pada hasil akhir yang ditampilkan sedikit kemudian, tetapi jika Anda menggunakan juru bahasa Java ini sebenarnya akan mencetak setiap baris setelah "sedikit tidur":sumber
z
. Dengan asumsi input dapat dicetak ASCII, Anda dapat menggantinyaW%
dengan$
.z
semua waktu untuk tantangan berbasis grid ascii.)C, 69 byte
sihir printf!
Versi yang diperluas dengan beberapa penjelasan:
Dan inilah sebuah contoh:
sumber
Pyth, 13 byte
Cobalah secara online: Pyth Compiler / Executor
Penjelasan
sumber
Python
6563Ini sebenarnya digunakan untuk menulis contoh. Solusi dasar.
sumber
join
Javascript ( ES7 Draft ), 61 byte
Javascript ( ES6 ) Hardcoded Input, 47 byte
Dengan asumsi input kode-keras dalam variabel
s
(string) danl
(panjang), dapat dikurangi menjadi 47 byte pencetakan dengan peringatan untuk setiap baris:sumber
K, 19 byte
Tack
x
spasi (x#" "
) ke awal stringy
. Kemudian gunakan bentuk "fixed-point scan" dari operator\
untuk membuat set string yang diputar. Titik tetap dalam K berhenti iterasi jika hasil penerapan fungsi mengembalikan hasil yang diulang atau jika input awal ditinjau kembali. Karena![1]
akan memutar string satu langkah pada satu waktu,![1]\
adalah ungkapan yang bagus untuk permutasi siklik. Lalu kami hanya memotong hasilnya denganx#'
.Contoh dijalankan:
sumber
J (22)
Ini berakhir lebih lama dari yang saya perkirakan, tapi saya kira itu tidak terlalu buruk.
Fakta menyenangkan: bukan dari
[
dan]
sebenarnya cocok, atau ada hubungannya dengan satu sama lain.sumber
[{."1]]\.@,~' '#~[
(18 byte).Julia, 75 byte
Ini menciptakan fungsi tanpa nama yang menerima string dan integer sebagai input dan mencetak output. Untuk menyebutnya, berikan nama, mis
f=(s,n)->(...)
.Penjelasan + tidak dikumpulkan:
Contoh:
Perhatikan bahwa solusi ini adalah 66 byte jika
s
dann
dianggap sudah ada dalam program.sumber
QBasic, 56 - 10 = 46
Ini golf QBasic - autoformatter akan memperluas
?
kePRINT
dan menambahkan beberapa spasi. Diuji dengan QB64 , meskipun seharusnya tidak ada apa pun di sini yang tidak akan berfungsi dengan DOS QBasic.QBasic umumnya tidak baik dengan operasi string, tapi ada sangat nyaman adalah fungsi yang kembali sejumlah tertentu dari ruang!
Mengambil beberapa kebebasan dengan "input mungkin hard-coded," kode ini mengharapkan variabel
s
menjadiDIM
'dAS STRING
, untuk menghindari$
tipe suffix, serta string yang ditugaskans
dan nomor ken
.Pembukaan contoh:
Keluaran:
Baris kosong teratas dapat dihilangkan dengan memulai
FOR
loop pada 2 bukannya 1.Bonus: Menambahkan
CLS
tepat sebelumNEXT
untuk empat byte remeh mengubah ini menjadi ... tenda nyata !Saya
PRINT CHR$(3)
QBasic. : ^ Dsumber
Ruby,
68, 55 byteSetelah pembaruan dari @blutorange:
Keluaran:
ruby marquee.rb "Something a bit longer" 10
Pengajuan pertama jadi meminta kritik.
sumber
a=" "*(z=$*[1].to_i)+$*[0];a.size.times{|b|puts a[b,z]}
Haskell,
615954 byteContoh penggunaan:
Sunting: baris kosong di awal / akhir diperbolehkan
sumber
Bash, 109 - 10 = 99 byte
Saya melihat bahwa dalam waktu yang saya perlukan untuk menulis solusi saya, saya telah dipukuli dengan baik. Namun demikian, saya menghabiskan terlalu lama menulisnya untuk tidak mempostingnya ...
Selain itu, ia memiliki beberapa fitur unik, seperti waktu antara pencetakan yang dapat disesuaikan pengguna berdasarkan berapa banyak yang ada di direktori saat ini! (Juga agak tidak konsisten, tergantung pada bagaimana rasanya disk Anda)
Contoh:
Tidak dikumpulkan dan berkomentar:
Saya belum pernah benar-benar mencoba ini sebelumnya. Saran dan komentar diterima!
sumber
Bash Murni, 61 byte
Keluaran:
sumber
Perl, 50
57
karakter+3
untuk-i
,-n
dan-l
.-10
karakter untuk tidur.-i
digunakan untuk input numerik, yang disimpan dalam$^I
. Pada dasarnya, kami menambahkani
spasi ke depan dan akhir input, dan kemudian mencari setiapi
karakter dan mengulanginyawhile
.say
dengan mudah mengembalikan1
yang dapat kita masukkansleep
.sumber
s/^|$/$"x$^I/eg;sleep say$1 while s/.(.{$^I})/$1/
. Anda juga dapat kehilangan-l
bendera, tapi saya pikir Anda perlu untuk menghitung 5 untuk-i -n
(karena-i
tidak bendera default) jika Anda menjalankan melalui:echo -n "testing" | perl -i4 -nE'...'
. Namun harus tetap turun ke 44!Shell POSIX, 94
Saya tahu ini terlihat lebih dekat dengan perl, tetapi ini benar-benar shell!
Baris pertama menambahkan ruang utama yang diperlukan, hanya pada saat pertama kali melalui loop. Ini menetapkan $ 3 untuk menunjukkan bahwa ia telah melakukannya.
Baris kedua (NB tertanam baris baru) muncul kembali hingga input habis, mencetak n karakter pertama dari string, kemudian memanggil dirinya sendiri dengan karakter pertama dihapus dari $ 1.
Diuji dengan Debian
/bin/dash
- contoh output mengikuti:./marquee "testing" 4
./marquee "Sesuatu sedikit lebih lama" 10
./marquee "small" 15
sumber
Python 2, 51 byte / 37 byte
Tanpa input hardcoded (51 byte):
Sebut seperti
f("testing", 4)
.Dengan input hardcoded (37 byte):
Kedua versi menghasilkan garis spasi awal.
sumber
Python 2, (54 byte - 10 = 44)
64626046(Saya berasumsi baris untuk input hard-coded tidak menambah jumlah byte.)
Saya belum melihat program yang benar-benar tidur di antara garis-garis pencetakan, jadi saya membuat satu yang tidak, karena lebih mirip tenda seperti itu. Program ini 2 byte lebih banyak di Python 3.
EDIT: Program sekarang melakukan perhitungan alih-alih tidur. Saya menggunakan
i
perhitungan sehingga program tidak menyimpannya sebagai konstanta, tetapi harus menghitungnya setiap waktu.Coba Python 3 satu di sini (Python 2 repl adalah buggy)
sumber
time.sleep
ada perhitungan panjang yang bisa Anda gunakan? Juga, ini sedikit lebih pendek untuk menggunakanwhile
loop:i=0\nwhile s[i-n:]:print(' '*n+s)[i:n+i];i+=1
q=
. Terima kasih.i**(7**7)
Pyth, 12 byte
Demonstrasi.
Pyth, 17 - 10 = 7 byte
Versi ini menggunakan penundaan antar cetakan garis. Ini dapat dilihat pada kompiler baris perintah, yang bisa Anda dapatkan di sini .
Jalankan yang berikut ini:
Ini memiliki penundaan sekitar 0,3 detik sebelum setiap cetak. Jika Anda lebih suka penundaan yang lebih lama, Anda dapat menggunakan:
Ini memiliki penundaan sekitar 4 detik.
sumber
Jawa,
133119115Versi panjang:
Padding diterapkan ke string, dan kemudian substring dari string yang empuk dicetak ke konsol.
-4 byte terima kasih kepada @KevinCruijssen.
sumber
for(;i<= s.length();System.out.println(s.substring(i-n,i++)));
( -3 bytes )Matlab, 95
Seperti biasa, ini adalah manipulasi matriks. Inti di sini adalah perintah
spdiags
yang memungkinkan Anda membuat matriks diagonal dengan sangat mudah.Dengan hardcoding 71 byte (string yang diharapkan disimpan
t
dan nomor dalamk
)sumber
APL, 50 - 10 = 40 karakter
Saya yakin itu bisa lebih pendek. 50 adalah panjang program tanpa dua konstanta.
Penjelasan:
Dikembangkan untuk ngn APL di terminal.
sumber
Powershell -
8583 byteSudah terlambat, tidak akan menang :-) Tapi saya pikir saya akan melempar Powershell untuk kelengkapan:
function m($s,$n){1..$($n+$s.length)|%{-join(" "*$n+$s+" "*$n)[$_-1..$($n+$_-1)]}}
sumber
Cobra - 60
sumber
Groovy - 82
sumber
Lua, 79 byte
sumber
C #, 112 byte
Program lengkap dengan metode ungolfed dan uji kasus:
sumber
Jelly , 15 byte - 10 = 5 ( tidak bersaing ?)
Cobalah online!
Tidur sebentar di antara setiap baris. Mencetak baris tambahan, jika itu dapat diterima.
yay Jelly mengalahkan Arang
sumber
PHP4.1, 85-10 = 75 byte
Ya, ini adalah sangat lama, tetapi memiliki fungsi yang saya butuhkan.
Anda masih dapat menjalankannya di versi PHP yang lebih baru, tetapi Anda perlu mengatur variabel sendiri sebelum menjalankan kode di bawah ini.
Itu membantu saya mengurangi ukuran kode saya banyak!
Ini sangat mendasar:
Saya berlari untuk bonus karena ini, mengutip OP:
Seperti yang dapat Anda lihat dengan jelas, ia tertidur.
Ini mengasumsikan bahwa Anda telah
register_globals
mengaktifkan secara default, yang merupakan pengaturan default untuk versi ini.Anda dapat dengan mudah menguji di browser Anda, dengan
minimalBeberapa perubahan:Kode di atas adalah polyglot dan Anda dapat berjalan di browser Anda atau di penerjemah PHP. Bukankah seharusnya saya mendapatkan hadiah untuk ini? Cookie, mungkin?
Daftar perubahan:
sleep(1)
dalam tes iniconcat
Tujuannya adalah untuk mengatasi perbedaan PHP dan JS dalam string gabungan.
-
digunakan untuk mengisi ruangecho
,printf
adalah menggunakan sebagai gantinya (batasan PHP)<br>
digunakan sebagai gantinyasumber
J ,
1514 byteCobalah online!
sumber
APL (Dyalog) , 17 byte
Cobalah online!
(program ini mengasumsikan
⎕IO←0
default pada banyak mesin)Penjelasan
sumber