Tugas Anda, jika Anda ingin menerimanya, adalah menulis program yang menghasilkan angka bukan nol (bisa bilangan bulat atau mengambang). Bagian yang sulit adalah jika saya membalikkan kode sumber Anda, hasilnya harus bilangan bulat asli yang dinegasikan.
Aturan
Anda harus membangun program lengkap . Artinya, output Anda harus dicetak ke STDOUT.
Kedua angka tersebut harus dalam basis 10 (mengeluarkannya di basis lain atau dengan notasi ilmiah dilarang).
Mengeluarkan angka-angka dengan spasi tambahan / spasi terkemuka diizinkan.
Ini adalah kode-golf, jadi kode terpendek (asli) di setiap bahasa menang!
Berlaku celah default.
Contoh
Katakanlah kode sumber Anda ABC
dan output yang sesuai adalah 4
. Jika saya menulis CBA
dan menjalankannya, hasilnya harus -4
.
code-golf
source-layout
Sangat Radioaktif
sumber
sumber
-
(0x45 = 0b00101101) bekerja di Jelly --
menghasilkan -1 karena mendefinisikan literal -1, sementaraṆ
(0xB4 = 0b10110100) menghasilkan 1 karena ia melakukan logika tidak dari input implisit nol. (Tentu sajaṆ
berfungsi juga: p)Jawaban:
05AB1E , 2 byte
Cobalah online!
! enilno ti thn
sumber
JavaScript (V8) , 19 byte
Cobalah online!
hampir identik dengan ...
C # (Visual C # Interactive Compiler) , 19 byte
Cobalah online!
(terima kasih kepada @someone untuk menunjukkannya)
masih hampir sama di ...
Lua , 19 byte
Cobalah online!
tapi lebih pendek ...
Python 2 , 15 byte
Cobalah online!
Bahkan lebih pendek di PHP, karena memiliki alat cetak ajaib ini:
<?=
...PHP , 12 byte
Cobalah online!
Bahkan lebih pendek di Ruby, karena Anda bisa
inspect
daripada mencetakRuby , 8 byte
Cobalah online!
sumber
Print(1)//)-1(tnirP
,. ( Coba online! )class A{static void Main(){System.Console.Write(1);}}//}};)1-(etirW.elosnoC.metsyS{)(niaM diov citats{A ssalc
1<!--!<1-
(9 byte) dengan HTML, yang akan menjadi-1<!--!<1
ketika dibalik. Jawabannya persis sama dengan jawaban Anda.print(1)--)1-(tnirp
PowerShell ,
43 byteCobalah online! atau ! enilno ti thn
Golf byte dengan menggunakan aritmatika alih-alih format angka-komentar-angka.
Ini rupanya juga sama dengan jshell (per Sam ), dan jq (per manatwork -
1-0
dan0-1
).sumber
1-0
0-1
/// , 4 byte
Keluaran
9
.Cobalah online!
Terbalik:
Keluaran
-9
.Cobalah online!
Semuanya sebelum
/
dicetak, sedangkan sisanya diabaikan (tidak banyak menggunakan garis miring sehingga saya tidak tahu persis apa yang terjadi, tetapi tidak menghasilkan apa-apa).sumber
/
memulai proses membaca pola, dan dengan demikian, karakter setelah itu dibaca ke dalam pola, bukan di-output./\-//1-
dan berpikir saya pintar. : DKlein 011, 5 byte
Cobalah online!
Terbalik
Cobalah online!
Ini mengambil keuntungan dari topologi unik Klein, khususnya bidang proyektif nyata. (Meskipun secara individual setiap jawaban hanya membutuhkan botol Klein).
sumber
Spasi , 21 byte
Surat
S
(spasi),T
(tab), danN
(baris baru) ditambahkan hanya sebagai penyorotan.Output
1
/-1
.Cobalah online atau coba online terbalik (dengan spasi, tab, dan baris baru saja).
Penjelasan:
Memanfaatkan Program Keluar dibangun menjadi palindrome pendek
NNN
.Program reguler akan:
Program sebaliknya akan:
Penjelasan tambahan kecil tentang mendorong nomor:
S
: Aktifkan Manipulasi StackS
: Dorong nomor ke tumpukanS
atauT
: Positif / negatif masing-masingS
/T
diikuti oleh trailingN
: angka dalam biner, di manaS=0
danT=1
Yaitu
SSTTSTSN
mendorong-10
.sumber
T-SQL, 16 byte
Dipetik 4 karena 1 terlalu sering digunakan :)
sumber
select 1#1-tceles
(17 byte). Anda dapat memeriksa hasilnya di sqlfiddle.com/#!9/9eecb/107825 .Japt , 2 byte
Setiap bilangan bulat digit
>0
dapat digunakan di tempat2
seperti dapatA-G
,H
,I
,J
atauL
(10-16
,32
,64
,-1
&100
, masing-masing).Uji itu | Terbalik
The
n
Metode bila diterapkan ke integer, mengurangi bahwa bilangan bulat dari argumen berlalu untuk itu, yang defaultnya0
. Saat dijalankan,n
metode sedang dijalankan pada input pertama implisit, yang juga default untuk0
.Atau,
g
metode ini dapat digunakan sebagai gantin
, yang memberikan tanda hasil pengurangan argumennya dari integer yang diterapkannya.sumber
Haskell tanpa komentar, 41 byte
Maju cetak
1
+ baris baru:Cobalah online!
Cetak terbalik
-1
tanpa baris baru (yang dapat ditambahkan dengan biaya 2 byte):Cobalah online!
-1
output string digunakan untuk menghindari tanda kurung.$!
(aplikasi ketat) alih-alih spasi memungkinkan garis yang dibalik menjadi definisi yang valid dari operator!$
($
tidak akan dilakukan karena redefinisi akan memutus penggunaan).niam
ditentukan untuk baris terakhir.!$
, yang tidak digunakan tetapi perlu mengurai dan mengetik centang dengan benar.sumber
PHP ,
1513 byteVersi PHP tanpa penyalahgunaan komentar.
ohce
adalah konstanta yang tidak terdefinisi, sehingga akan sama dengan nilai string namanya. Akibatnya, ini akan mencoba mencetak+1-'ohce'
atau-1+'ohce'
ketika terbalik. Karena'ohce'
merupakan nilai non-numerik, 0 akan digunakan sebagai gantinya dalam operasi aritmatika dan hanya1
atau-1
akan dicetak.Cobalah online!
Cobalah online!
sumber
Google , 3 byte
Cobalah online!
! enilno ti thn
sumber
Jelly , 2 byte
Cobalah online!
N
egatif, menghasilkan0
, laluC
omplement, menghasilkan1-0
=1
.Cobalah online!
C
omplement, menghasilkan1-0
=1
.N
egatif, menghasilkan-1
.sumber
K (ngn / k) , 3 byte
Cobalah online!
apakah saya melewatkan sesuatu? tampaknya jelas untuk bahasa REPL
sumber
Cubix ,
765 byteCoba di sini
Terbalik
Penjelasan
Kubus:
Membuka gulungan aliran kontrol, kami mengeksekusi
)O(@
, yang mana kenaikan, keluaran, penurunan, dan keluar.Terbalik dan berbentuk kubus:
Membuka gulungan aliran kontrol, kami mengeksekusi
(O)@
, yang mengalami penurunan, keluaran, peningkatan, dan keluar.Versi sebelumnya
Coba di sini
Terbalik
Tidak sesingkat, tapi menyenangkan secara estetika.
sumber
@)O(@
selama 5 byte dan pemulihan simetri :)Pesona Rise , 4 byte
Cobalah online! Coba Terbalik!
Saya tidak dapat menemukan cara untuk menggunakan kembali
1
perintah, bahkan dengan mengorbankan satu atau dua byte.1@ɩ
juga berfungsi, tetapi jumlah byte yang sama.sumber
APL (Dyalog Unicode) ,
43 byteCobalah online!
Jawaban sepele. Mencetak
1
saat dijalankan dan¯1
saat dijalankan terbalik.sumber
Stack Cats
-mn
, 4 byteCobalah online! Dalam catatan kaki saya sudah memasukkan semua solusi 4-byte lainnya. (Stack Cats mengabaikan semuanya setelah linefeed pertama.)
Coba yang sebaliknya!
Penjelasan
The
-n
bergantian bendera pada output numerik (dan masukan, tapi kami tidak punya), dan-m
bendera biasanya hanya kenyamanan golf yang memungkinkan Anda menghindari bagian berlebihan dari kode sumber. Ini karena setiap program Stack Cats perlu memiliki simetri cermin. Dengan-m
bendera, Anda hanya memberikannya setengah pertama (ditambah karakter sentral). Jadi program sebenarnya di sini adalah:Seperti yang Anda lihat di tautan TIO pertama, ada satu ton solusi 4-byte, tetapi saya memilih yang ini karena kesederhanaannya. Stack Cats adalah berbasis tumpukan, dan program ini hanya menggunakan tumpukan awal. Karena kami tidak memiliki input apa pun, input ini berisi satu
-1
(penanda EOF) di atas sumur nol tanpa batas. Tiga perintah dalam program memiliki arti berikut:Jadi di sini adalah bagaimana program memodifikasi tumpukan (status dan perintah terhuyung-huyung untuk menunjukkan bagaimana setiap perintah mengubah tumpukan dari satu negara ke yang berikutnya):
Ternyata, satu-satunya perintah yang benar-benar melakukan apa pun di sini adalah
_
yang mengubah penanda EOF kita menjadi a1
. Output pada akhir program adalah implisit, dan penanda EOF adalah opsional, jadi ini hanya mencetak1
kita dapatkan.Sekarang jika kita membalikkan kode sumber, karena mirroring implisit, program yang sebenarnya menjadi:
Ini melakukan sesuatu yang sangat berbeda:
Kali ini bagian bawah tumpukan adalah masih
-1
jadi itu bertindak sebagai penanda EOF dan hanya-1
di atas itu akan dicetak....
Sekarang dengan semua yang dikatakan, karena Stack Cats memiliki hubungan yang unik dengan kode pembalikan, saya merasa menggunakan
-m
sedikit curang. Biasanya hanya dimaksudkan untuk menyimpan byte dengan menghilangkan bagian kode sumber yang berlebihan, tetapi di sini sebenarnya membuat tantangannya jauh lebih mudah dan bahkan program lengkapnya lebih pendek. Ini karena membalikkan program penuh hanya akan mengubah program jika berisi<>[]
, yang juga berarti bahwa program tersebut akhirnya menggunakan banyak tumpukan (Stack Cats sebenarnya memiliki rekaman tumpukan, di mana semua kecuali yang awal hanya diisi dengan nol untuk memulai). Selanjutnya, membalikkannya kemudian hanya menukar pasangan<>
dan[]
, yang masih membuat eksekusi simetris. Satu-satunya cara untuk memecahkan simetri itu adalah dengan menggunakannyaI
yang tidak-]
atau-[
atau tidak tergantung pada tanda bagian atas tumpukan. Begitu...Stack Cats
-n
, 11 byteCobalah online! Footer lagi mencakup semua alternatif lain pada jumlah byte yang sama. Beberapa output 1 / -1 dan beberapa output 2 / -2 seperti yang ditunjukkan setelah setiap program. Saya memilih yang ini untuk menjelaskan secara acak sebagai salah satu yang menghasilkan 2.
Coba yang sebaliknya!
Penjelasan
Seperti yang saya katakan, ini sedikit lebih lama. Bahkan jika kita memang menggunakan
-m
notasi untuk ini, itu akan berbobot 6 byte daripada 4 di atas.Perintah yang digunakan saat ini:
Program pertama hanya menggunakan dua tumpukan. Itu agak berantakan untuk dilakukan dalam seni ASCII, tetapi saya akan mencoba yang terbaik. Kurung kotak menunjukkan di mana tumpukan kepala kaset aktif, dan saya akan menempatkan perintah di antara setiap pasangan negara tumpukan.
Sekarang
-1
bertindak sebagai penanda EOF dan2
dicetak.Program lainnya sama sampai
[
. Ini masih hampir sama sampai keduaI
. Kami secara teknis akan berada di tumpukan yang berbeda, tetapi tanpa nilai pada mereka, mereka semua tidak bisa dibedakan. Tetapi kemudian perbedaan antaraI[
danI]
akhirnya penting:Dan kali ini, kami tidak memiliki penanda EOF, tetapi program masih menampilkan
-2
.sumber
Zsh , 12 byte
Cobalah online!
Maju dasar, komentar, metode terbalik.
Jika I / O kurang restriktif, maka solusi 11 byte yang lebih menarik dimungkinkan berkat Zsh yang mendukung kode pengembalian negatif:
Terbalik,
721- nruter
keluar dengan kode127
(perintah tidak ditemukan).exit -127
tidak dapat digunakan, itu akan dilemparkan keu8
. Cobalah online!sumber
CJam , 3 byte
Cobalah online!
Bagaimana mereka bekerja
Versi normal:
Versi terbalik: Anda mendapatkan ide.
sumber
MATL , 3 byte
Cobalah online!
Bagaimana mereka bekerja
Normal:
Terbalik:
sumber
Bahasa Wolfram (Mathematica) ,
2118 byteCobalah online!
-3 Terima kasih kepada Martin Ender
sumber
Hexagony , 5 byte
Cobalah online!
Setiap program yang valid harus:
@
atau:
). Yang terakhir hanya berbeda untuk yang pertama ketika ada perintah gerakan penunjuk memori. Juga perintah ini tidak boleh di byte pertama atau terakhir.!
,;
juga mungkin tetapi mungkin akan membutuhkan lebih banyak byte)Karena itu, program 2 byte jelas tidak mungkin. Program 3-byte tidak dimungkinkan karena byte kedua harus menjadi perintah terminasi, dan byte pertama tidak boleh berupa perintah manipulasi mirror / IP, oleh karena itu hanya 1 byte yang dapat dieksekusi.
Saya pikir program 4-byte tidak mungkin. Program semacam itu harus memiliki bentuk
a@bc
dengan kisi heksagonalOleh karena itu
a
harus menjadi perintah pengalihan IP. Namun tidak mungkin untuk menghasilkan angka positif dan negatif dengan hanya 1 perintah manipulasi memori.sumber
Haskell , 28 byte
Cobalah online!
Cobalah enilno!
sumber
Segitiga , 4 byte
Cobalah online!
Output 1.
Tidak Disatukan:
Terbalik:
Cobalah online!
Output -1.
sumber
Java 5 atau 6,
12767 byteOutput
9
/-9
.Tidak ada kompiler online, karena Java 5 atau 6 tidak tersedia di mana pun.
Namun Anda dapat mencoba 127 byte ini setara Java 8:
Cobalah online atau coba online terbalik .
Penjelasan:
Java 5 dan 6 memiliki bug yang memungkinkan Anda untuk membuat blok kode di dalam enum untuk melakukan sesuatu, meskipun tidak ada metode utama wajib program. Ini akan menghasilkan kesalahan:
Tetapi akan tetap menampilkan apa yang ingin kita STDOUT dulu, jadi kita bisa mengabaikannya .
sumber
Golang , 109 byte
Dan kebalikannya:
Cobalah online!
sumber
Println
bisaPrint
, danimport "fmt";
tidak membutuhkan ruang:import"fmt";
. :)Perl 5 (-p), 12 byte
Cobalah online!
! enilno ti thn
The
}{
pseudo-Operator benar-benar berguna.Perl 5 (-M5.010), 9 byte
Diberikan oleh Nahuel Fouilleul dalam komentar
Cobalah online!
! enilno ti thn
sumber
say 1#1-yas
say+1-yas
dansay-1+yas
Retina , 6 byte
Cetakan
1
.Cobalah online!
Cetakan
-1
.Cobalah online!
Penjelasan:
1
Ini ... tidak melakukan apa-apa. Karena
`
, ini adalah pengganti dari<
ke-
(dengan konfigurasi-
, yang tidak melakukan apa-apa), tetapi inputnya kosong, sehingga outputnya juga kosong.Dan tahap kedua ini cocok dengan regex kosong terhadap input kosong dan menghitung jumlah kecocokan, yaitu 1. Output tersirat.
Penjelasan:
-1
Kali ini kami mengganti regex kosong dengan
-
. Ini memang mengubah input kosong menjadi satu-
.Di sini, konfigurasi benar-benar melakukan sesuatu:
<
mencetak input stage sebelum mengeksekusi stage, jadi kami mencetak-
. Kemudian-
menghitung tanda hubung dalam input tahap yang lagi-lagi 1. Karena output implisit, ini mencetak1
setelah-
, memberi kita-1
seperti yang diperlukan.sumber
sumber
brainfuck , 156 byte
Cobalah online! / Maju / mundur verifikasi di Bash
Mencetak
-1
ke depan dan\n1
ke belakang.Meskipun hampir sepele, saya percaya ini adalah solusi optimal untuk output tetap khusus ini.
Bukti:
Program tidak dapat memiliki
[
atau]
.Karena itu program harus memiliki formulir
<A> . <B> . <C>
.Masing
,
- masing dapat diganti dengan jumlah yang cukup<
tanpa menambah jumlah+
atau-
.Masing
+
- masing hanya berguna dalam program maju atau mundur, tidak pernah keduanya.Bukti:
+
pada bagian A jelas hanya berguna dalam program penerusan, dan+
di bagian C jelas hanya berguna di program backward.Sebutkan⟺ ⟺
shift(P)
= jumlah<
dalam P - jumlah>
dalam program P. Pertimbangkan<B> = <D> + <E>
,+
di tengah berguna dalam program majushift(E) = 0
, juga berguna dalam program mundurshift(D) = 0
. Namun jikashift(D) = shift(E) = 0
kemudian program yangB
dijalankan baik maju atau mundur akan menambah nilai tetap ke sel saat ini sebelum mencetak kedua kalinya, yang tidak dapat terjadi karena ituord('1') - ord('\n') != ord('1') - ord('-')
.Oleh karena itu program membutuhkan setidaknya
ord('-')+ord('1')+ord('\n')+ord('1') = 153
+
s, 2.
s, dan setidaknya a<
>
atau,
karenashift(B) != 0
.sumber