Tugas Anda adalah membalik urutan di mana beberapa prints
dieksekusi.
Spesifikasi:
Kode Anda akan berada di formulir ini:
//some lines of code
/*code*/ print "Line1" /*code*/
/*code*/ print "Line2" /*code*/
/*code*/ print "Line3" /*code*/
/*code*/ print "Line4" /*code*/
//some lines of code
Anda harus print
(atau echo
, atau write
, atau setara) string tersebut dari yang keempat ke yang pertama.
Anda memutuskan baris mana dari program Anda yang
print
harus diisi, tetapi harus berbatasan ;Setiap baris hanya bisa berisi satu
print
, dan panjangnya tidak bisa lebih dari 60 byte ;Karena ini adalah kontes popularitas , jadilah kreatif dan hindari menulis hanya
goto
atau sederhanafor(i){if(i=4)print"Line1";if(i=3)...}
Jawaban yang paling banyak dipilih dalam 2 minggu memenangkan ini.
Output Anda HARUS menjadi
Line4 Line3 Line2 Line1
ATAULine4Line3Line2Line1
ATAULine4\nLine3\nLine2\nLine1
(di mana\n
adalah baris baru), dan itu harus dihasilkan hanya dengan mengeksekusi merekaprints
mundur.
Selamat coding!
PEMBARUAN: Kontes telah berakhir! Terima kasih semua :)
Jawaban:
Commodore 64 BASIC
sumber
PHP
Memprioritaskan penyalahgunaan ... :-)
sumber
print
dapat digunakan sebagai ekspresi, karena mungkin dalam perl, nilai baliknya selalu1
.!1
mengembalikanbool(false)
, yang ketika diketik sebagai string mengembalikan string kosong. Pembatasan yang lebih tepat untuk PHP mungkin untuk memintaecho
daripadaprint
; di atas benar-benar hanya satu pernyataan.print ("Line 1". !print ("Line2". !print ("Line 3". !print "Line4")));
- semua yang ada di sebelah kanan pernyataan cetak adalah bagian darinya.print
disebut pertama, itu tidak selesai mengevakuasi apa yang perlu dicetak sampai bagian dalam (bawah)print
sudah dipanggil dan dievaluasi sepenuhnya. Dan!
hanya menyembunyikan 1 yang akan mencetak sebaliknya. Cemerlang, @bwoebi!C
Perilaku tidak terdefinisi adalah perilaku yang paling menarik!
Output aktual dapat bervariasi tergantung pada kompiler, tautan, sistem operasi, dan prosesor Anda :)
sumber
Jawa
Menggunakan refleksi
Keluaran:
Penjelasan mengapa ini bekerja dapat ditemukan di sini .
sumber
C (dan semacam-Python)
Versi baru, menggunakan makro agar sesuai dengan format pertanyaan dengan sempurna. Mengikuti komentar Quincunx, saya menambahkan
return
untuk membuatnya lebih bagus.Ini juga bekerja dengan Python, tetapi mencetak dalam urutan yang benar.
Versi asli - keduanya praktis sama, setelah substitusi makro:
sumber
#define } 0))));
(saya tidak tahu persis bagaimana makro bekerja di C). Dengan begitu Anda bisa memiliki pernyataan cetak dalam metode utama, tidak ada yang lain.}
, tetapi Anda dapat menentukanreturn
, yang sekarang saya lakukan. Ini hampir menjadi polyglot sekarang -print
sintaksnya berfungsi dalam beberapa bahasa skrip,#define
sering merupakan komentar, tetapimain(){..}
tidak berfungsi dalam bahasa apa pun yang dapat saya temukan.print
akan diganti"\n",printf(
?ES6 (menggunakan mode mundur;)
Wow, sepertinya para desainer ECMAScript memiliki pandangan jauh ke depan yang luar biasa ketika mereka membuat mode bagian belakang dari spesifikasi:
Keluaran (evaluasi, sungguh):
Perhatikan bahwa itu persis dari formulir yang diminta, dengan hanya sedikit mundur ke belakang agar sesuai dengan sintaks mode . Perhatikan juga bahwa mode ini hanya didukung di Firefox versi terbaru saat ini .
Catatan akhir: Sebenarnya, tidak ada mode mundur. Tapi ini masih skrip yang valid yang berjalan di Firefox (salin semuanya). : D
ES6 "mode longgar"
BONUS : Berikut ini adalah versi terbaru yang tidak menggunakan mode mundur, tetapi menggunakan "mode longgar" yang baru ditentukan di mana mesin JS hanya akan mencoba menebak apa yang seharusnya dilakukan kode, terlepas dari kepatuhan pada sintaks JS yang ditentukan ( pada dasarnya kebalikan dari mode ketat):
Harap dicatat bahwa " mode longgar " saat ini hanya tersedia di Firefox> = 34.; P
sumber
C
sumber
Rubi
Edit: Atau,
sumber
ruby
-ish dengan blok kode? pastebin.com/LDWpxKx8method_missing
cukup Ruby-ish itu sendiri.PHP
Saya tahu, ini gila ...
sumber
goto
" ;-)Haskell
Ini hampir seperti Haskell, karena program sekarang terlihat seperti komposisi fungsi dari kanan ke kiri. Jika fungsi tidak dicetak, tetapi sesuatu yang akan mengembalikan nilai (berguna) deklarasi operator tidak perlu dan kode akan menjadi sesuatu yang Anda akan lihat di perpustakaan.
sumber
(<<) = flip (>>)
<*
dan*>
.<*
operator aplikasi berbeda dari ini<<
:a <* b
setara dengando x<-a;b;return x
, yaitu menjalankana
efek pertamaPerl
sumber
HTML + CSS
CSS:
Lihat jsFiddle .
Sunting:
Untuk menyesuaikan dengan aturan dengan lebih baik, berikut adalah varian dalam XML, yang sebenarnya digunakan
print
.di mana style.css seharusnya
HTML tanpa CSS
Dan untuk itu, di sini ada satu tanpa CSS.
Biola .
sumber
p {float:right;}
div {float:left}
.C ++
(Variabel lokal dihancurkan dalam urutan deklarasi terbalik.)
C ++ 11
(Hampir sama, tetapi menggunakan lambdas dan anggota data array sebagai gantinya.)
sumber
std::function
, dan saya mencoba untuk menyingkirkannya. Sekarang saya tidak perlu karena Anda mendapatkannya!Haskell
sumber
Javascript
sumber
1,2,3,4
sebagai batas waktu juga berfungsi untuk saya. (Namun, saya tidak tahu apakah perilaku ini distandarisasi dalam ECMAScript.)setTimeout
distandarisasi dalam HTML5 / timer, bukan ES. Juga, ini menentukan batas waktu minimum 4 ms :-)C
Berusaha menyimpang dari tips dalam pertanyaan sekreatif mungkin:
sumber
BF
Menganggap pembungkus sel.
Mengapa ini berhasil?
Baris pertama dan terakhir terdiri dari satu loop yang berulang empat kali (counter =
cell0
).Di dalam loop, ada variabel penghitung (
cell1
) yang meningkat setiap kali dijalankan.Setiap baris memeriksa apakah berkurang empat, tiga, dua, atau satu sama dengan nol. Oleh karena itu, pada putaran pertama, penghitung adalah satu dan baris terakhir dieksekusi, pada putaran kedua, baris ketiga dieksekusi, dll.
The
(line 1)
menunjukkan di mana Anda harus membuat teks yang dicetak. Panah di loop mengalokasikancell2
untuk tujuan ini. The[-]
membersihkan keluarcell2
setelah Anda menggunakannya.sumber
Pesta
Dalam memori dari dihormati SleepSort dan SleepAdd , saya hadir untuk Anda ... SleepReverse :
sumber
$1
dan$2
:function print(){(sleep $((4-$2));echo "$1 $2";)&}; print Line 1
Jawa
Semuanya dalam waktu yang tepat ... ;-)
sumber
Python 3
sumber
Pesta
Inilah skrip berwajah ganda:
sumber
tac
ada! Haha terima kasih.Gangguan Umum № 1
Sangat mudah untuk menulis
ngorp
makro yang mengeksekusi formulirnya dalam urutan terbalik:Gangguan Umum № 2
Inilah salah satu yang menangani masalah dengan sangat harfiah; kode dari pertanyaan muncul di program tanpa modifikasi:
sumber
PHP
eval
Varian lain :sumber
F #
Baru saja membuat operator khusus yang menjalankan fungsi dalam urutan terbalik.
sumber
(?) f g x
berbunyi kasar(?)(f, g, x)
, bukanf(g(x))
Go (Golang)
Cobalah: http://play.golang.org/p/fjsJLwOFn2
sumber
Python3
Bisa lebih pendek 6 byte dengan menghapus semua spasi di baris terakhir.
sumber
Javascript
C ++ 11
sumber
std::reverse
danstd::for_each
, cukup gunakanwhile (! functors.empty()) { functors.back()(); functors.pop_back(); }
Batch
sumber
C #
Alih-alih langsung memanggil metode Run, saya membuat metode dinamis yang berisi salinan bytecode Run's Run, kecuali bahwa operand opcode load-string ditukar. Yang menyebabkan metode baru untuk menampilkan string dalam urutan terbalik.
sumber
Python
solusi lain menggunakan
eval()
ini tidak terlalu rumit, tetapi mudah dimengerti.
sumber