Terinspirasi oleh komentar ini ...
Terima kasih kepada pengguna, Step Hen , Wheat-Wizard , dan Dennis yang telah membantu saya memperkuat spesifikasi tantangan ini sebelum mempostingnya!
Ini adalah utas Perampok! Untuk utas Polisi, buka di sini
Dalam tantangan ini , Anda bertugas menjalankan beberapa kode yang membuatnya sehingga bahasa Anda tidak lagi memenuhi kriteria kami sebagai bahasa pemrograman. Dalam tantangan itu, itu berarti membuatnya agar bahasa tidak bisa lagi ...
Ambil input dan output numerik
Tambahkan dua angka bersamaan
Uji apakah angka tertentu prima atau tidak.
Ini adalah tantangan polisi dan perampok , di mana ada dua tantangan yang berbeda dengan dua tujuan yang berbeda: Polisi akan mencoba menulis beberapa kode yang membuat bahasa sebagian besar tidak dapat digunakan, dan para perampok akan mencoba menemukan solusi tersembunyi yang memungkinkan polisi untuk memulihkan bahasa mereka.
Polisi akan menulis dua potongan kode:
Salah satu yang membuat bahasa mereka sebagian besar tidak dapat digunakan, misalnya dengan menghapus fungsi bawaan untuk mengambil operasi input / output dan numerik. Kode ini tidak diizinkan mogok atau keluar. Seharusnya mungkin untuk menambahkan kode ke akhir cuplikan ini, dan kode itu akan dievaluasi . Dan
Potongan kode yang mengambil dua angka sebagai input, menambahkannya bersama-sama, dan mengeluarkan jumlah mereka. Cuplikan ini harus tetap berfungsi dengan benar bahkan setelah menjalankan cuplikan pertama. Saat kedua snippet digabungkan bersama, mereka harus membentuk program lengkap yang menambahkan dua angka, atau mendefinisikan fungsi yang menambahkan dua angka. Cuplikan ini mungkin akan bergantung pada perilaku yang tidak jelas, dan sulit ditemukan.
Polisi juga akan memilih metode input dan output standar apa pun . Namun, mereka harus mengungkapkan dengan tepat format (input dan output) yang mereka gunakan. Agar Anda dapat memecahkan jawaban mereka, Anda harus mengikuti format input / output yang sama, atau retak Anda tidak masuk hitungan.
Jawaban polisi akan selalu terungkap
The pertama potongan (jelas tidak yang kedua).
Bahasa (termasuk versi minor, karena sebagian besar pengiriman mungkin bergantung pada kasus tepi yang aneh)
Format IO, termasuk apakah itu fungsi atau program penuh. Perampok harus menggunakan format yang sama untuk menjadi celah yang valid.
Setiap kasus tepi aneh diperlukan untuk jawaban mereka untuk bekerja. Misalnya, hanya berjalan di linux , atau membutuhkan koneksi internet .
Sebagai seorang perampok, Anda harus melihat salah satu dari kiriman polisi, dan berupaya memecahkannya. Anda mungkin retak itu dengan menulis setiap potongan valid yang bisa bekerja sebagai potongan 2 (menambahkan dua angka bersama setelah bahasa dibuat sebagian besar tidak dapat digunakan). Ini tidak harus potongan yang sama dengan yang awalnya ditulis polisi. Setelah jawaban Anda retak, poskan kode Anda sebagai jawaban di utas ini, dan poskan tautan ke jawaban Anda sebagai komentar pada jawaban polisi. Kemudian, postingan itu akan diedit untuk mengindikasikan telah di-crack.
Ini sebuah contoh. Untuk cuplikan pertama, Anda mungkin melihat program python 3 berikut sebagai jawaban polisi:
Python 3
print=None
Mengambil input dari STDIN dan output ke STDOUT
Cuplikan kedua yang valid dapat berupa
import sys
a,b=int(input()),int(input())
sys.stdout.write(a+b)
Ini valid karena akan mengambil dua angka sebagai input, dan mengeluarkan jumlah mereka meskipun Anda menggabungkan kedua snippet bersama, misalnya
print=None
import sys
a,b=int(input()),int(input())
sys.stdout.write(a+b)
Ini adalah celah yang valid untuk jawaban mereka.
Jika jawaban seorang polisi tetap tidak terpecahkan selama satu minggu penuh, mereka dapat mengedit dalam potongan kedua mereka, dan menunjukkan bahwa jawaban mereka sekarang aman . Setelah diedit agar aman, Anda mungkin tidak lagi mencoba untuk memecahkannya. Jika mereka tidak mengeditnya dengan aman, Anda dapat terus mencoba memecahkannya sampai selesai.
Pemenang utas perampok adalah pengguna yang telah memecahkan sebagian besar jawaban, dengan pemutus ikatan adalah saat mereka mencapai N celah. (jadi jika dua pengguna yang berbeda masing-masing memiliki 5 celah misalnya, pengguna yang memposting celah ke-5 mereka terlebih dahulu adalah pemenang). Setelah waktu yang cukup berlalu, saya akan menerima jawaban pemenang dengan suara terbanyak.
Selamat bersenang-senang!
Klarifikasi aturan
Cuplikan pertama harus berjalan dengan benar tanpa mengambil input apa pun . Ini dapat menampilkan apa pun yang Anda suka, dan output ini akan diabaikan. Selama setelah potongan selesai, potongan kedua berjalan dengan benar.
Cuplikan kedua harus benar-benar dieksekusi agar jawaban Anda valid. Ini berarti jawaban seperti
import sys sys.exit()
tidak valid karena tidak melanggar bahasa. Itu hanya berhenti.
Setelah aman, skor Anda adalah jumlah byte dari kedua cuplikan .
Ini kembali ke Harap mengungkapkan kasus tepi aneh yang diperlukan untuk jawaban Anda untuk bekerja ... Kiriman Anda harus berisi informasi yang cukup sebelum diturunkan untuk dapat direproduksi setelah diungkapkan. Ini berarti bahwa jika jawaban Anda menjadi aman, dan kemudian Anda edit di: Inilah jawaban saya. Oh ya, BTW ini hanya berfungsi jika Anda menjalankannya pada Solaris, bercanda pada Anda! jawaban Anda tidak valid dan akan dihapus dan tidak dianggap memenuhi syarat untuk menang.
Cuplikan kedua dibolehkan mogok setelah mengeluarkan jumlah. Selama output masih benar (misalnya, jika Anda memilih untuk output ke STDERR, dan kemudian Anda mendapatkan banyak informasi macet, ini tidak valid)
Papan peringkat
Berikut adalah daftar setiap pengguna dengan setidaknya satu celah, diurutkan berdasarkan skor dan kemudian nama (berdasarkan abjad). Jika Anda mengirimkan celah, perbarui skor Anda sesuai dengan itu.
#User #Score
Ilmari Karonen 8
Dennis 5
Olivier Grégoire 4
Sisyphus 3
Veedrac 3
Arnold Palmer 2
Bruce Forte 2
DJMcMayhem 2
Dom Hastings 2
ppperry 2
1bluston 1
2012rcampion 1
Ben 1
BlackCap 1
Christian Sievers 1
Cody Gray 1
HyperNeutrino 1
Joshua 1
Kaz 1
Mark 1
Mayube 1
Xnor 1
zbw 1
sumber
SecurityManager
yang ada dalam ruang lingkup ... Anda juga dapat membaca dariSystem.in
pada titik ini, karena itu belum ditutup.sun.awt.SecurityManager
dan"sun.awt.command"
ini tergantung pada platform dan bukan bagian dari Java .System.getProperties().get("blah")
(karena saya hanya memblokir aksesSystem.getProperty
, bukanSystem.getProperties
), tapi ini cukup bagus! Sudah selesai dilakukan dengan baik!C (GCC / Linux) oleh Sisyphus
Cuplikan ini menutup fungsi yang disediakan dan memulai yang baru (injeksi kode klasik), yang dengan sendirinya mengubah
close
sehingga alih-alih menutup fd, jalankan kode yang kita inginkan.sumber
Python, solusi Wheat Wizard di sini
Maksudku, kamu bisa mengatur batas rekursi kembali, dan tidak ada hal buruk yang terjadi ...
Bekerja pada TIO
Catatan
Ini adalah pengiriman CnR pertama saya, jadi jika ini melanggar aturan, tolong beri tahu saya dan saya akan menghapus ini.
sumber
os.sys
, jika itu membuat perbedaan: PHaskell oleh Ben
Saya masih memiliki angka dan karakter literal (saya gunakan
0
,'0'
dan'-'
), dan[a..]
dan[a..b]
yang sangat berguna. Dan saya punya unary-
, tapi saya bisa melakukannya tanpa.Saya membuat ulang
++
untuk mengimplementasikanr
(reverse
) dan mendefinisikant
dants
yang manatail
dantails
.x a b
mengembalikann
elemen thb
, di manan
panjanga
minus satu.x
biasanya dapat didefinisikan sebagaisnd.last.zip
. Fungsid
mengambil daftar dan mengembalikan daftar dengan elemen dari posisi yang merupakan kelipatan sepuluh.l!!s
mengembalikann
elemen thl
, di manas
representasi string terbalik darin
.+
mengembalikan sebagai bilangan bulat jumlah dua bilangan alami yang diberikan sebagai string terbalik, juga-
untuk perbedaan.add
mengembalikan sebagai bilangan bulat jumlah dari dua bilangan bulat negatif yang mungkin diberikan sebagai string.Saya ingin tahu apakah ini agak mirip dengan apa yang ada dalam benak Ben.
sumber
:
berada dalam ruang lingkup bahkan denganNoImplicitPrelude
dan tanpa mengimpor apa pun.C (gcc) oleh Conor O'Brien
Cobalah online!
sumber
Python 2 oleh Wheat Wizard (iterasi keempat)
Cobalah online!
Tanpa eksploitasi, hanya fungsi untuk menambahkan hanya menggunakan karakter
' &)(,.:[]a`cdfijmonrt~'
, sebagaimana dimaksud (sebenarnya hanya'(),.:[]`acdfijmnort'
).Saya tidak berusaha membuatnya pendek; Saya baru saja menulis subekspresi untuk nilai-nilai perantara seperti 0 dan string kosong dan string-substitusi pada.
Cobalah online!
Gagasan intinya adalah bahwa format string
'{0:5}'.format('1')
memuat angka nol hingga panjang5
sejenisnya'1 '
. Dengan menggabungkan dua string seperti menggunakan''.join
, jumlah panjangnya adalah jumlah angka input. Kemudian, kami menempelkan pada0
akhir dan memanggil.find()
ke posisi akhir, yang jumlahnya.String
'{0:5}'
ke format diproduksi dengan mengekstraksi{:}
karakter dari string reprs kamus, dibuat dengandict
. String repr dari masing-masing puncak berturut-turut ditempatkan di mana 5 akan berada. Saya ingin menggunakan dict seperti{0:5}
itu sendiri, tetapi repr nya mencakup ruang yang mengacaukannya.Input 0 mengacaukan proses karena sub string memiliki panjang minimum 1. Kami memiliki mereka yang
and/or
memberikan string kosong dalam kasus ini.sumber
int([]in[])
hanyaint()
karena keduanya akan menghasilkan 0.Haskell, oleh Laikoni
sumber
x86 Perakitan mode real 16-bit, oleh Joshua
Penjelasan:
"Kerusakan" yang diperkenalkan oleh kode Joshua adalah pengaturan flag trap (TF), yang menempatkan CPU ke mode langkah tunggal. Ini berarti bahwa hanya satu instruksi yang akan dieksekusi pada satu waktu, sebelum CPU berhenti (jebakan) dengan interupsi tipe-1. Inilah yang memungkinkan para debugger untuk mengimplementasikan kode satu langkah — cukup praktis di sana, tetapi PITA yang nyata jika Anda ingin menjalankan kode di luar konteks debugger!
Ini adalah bagian kode berikut yang menyalakan bendera perangkap:
Implementasi flag trap berarti kita mendapat kesempatan untuk mengeksekusi tepat satu instruksi sebelum CPU jebakan — itu adalah yang datang segera setelah perintah di
POPF
sini. Jadi, kita perlu menghitung ini.Triknya adalah
INT 3
instruksi, yang memanggil interrupt number 3. Ada dua alasan mengapa ini berfungsi untuk "melepaskan" kode:Bendera perangkap dibersihkan dalam penangan interrupt. Ini hanya bagian dari desain Intel, tetapi mungkin dilakukan untuk alasan kewarasan dasar. Ingatlah bahwa implementasi flag trap adalah bahwa interupsi tipe-1 dipanggil setelah eksekusi setiap instruksi, jadi jika TF tidak dihapus,
INT 1
itu sendiri akan memicu interupsi — itu akan terganggu sepanjang jalan turun. Juga, memiliki interupsi TF yang jelas hanya membuatnya lebih mudah untuk men-debug kode, seperti IDE yang secara otomatis melangkahi panggilan ke fungsi perpustakaan.Cara memotong kerja pada dasarnya sama dengan jauh
CALL
. Mereka memanggil penangan interupsi yang alamatnya disimpan pada posisi yang sesuai dalam tabel vektor interupsi global. Karena tabel ini dimulai pada alamat0x0000:0000
, dan disimpan dalam format 4-bytesegment:offset
, menghitung alamat sesederhana mengalikan 4 dengan vektor interupsi / angka. Dalam hal ini, kita memanggil interupsi 3, sehingga akan menjadi 4 × 3 = 12.... dan Anda akan melihat bahwa Yosua dengan serius mengatur ini untuk kita. Sebelum mengaktifkan bendera jebakan, ia memiliki kode berikut:
yang mengatur
0x0000:000C
(pengendali interupsi untukINT 3
) keBP:SI
. Itu berarti setiap kaliINT 3
dipanggil, itu mendorong register FLAGS ke stack, diikuti oleh alamat kembali, dan kemudian cabang keBP:SI
, yang memungkinkan kita untuk mulai menjalankan kode lagi, dalam konteks di mana bendera perangkap dimatikan.Semuanya menurun setelah itu
INT 3
. Yang perlu kita lakukan adalah menambahkan dua angka bersamaan dan mencetak hasilnya. Kecuali bahwa ini tidak sesederhana dalam bahasa rakitan seperti di bahasa lain, jadi ini adalah tempat sebagian besar kode dihabiskan.Joshua mengizinkan perampok untuk menentukan mekanisme I / O yang dia inginkan , jadi saya mengambil pendekatan sederhana dengan mengasumsikan bahwa nilai-nilai dilewatkan dalam
DX
danCX
mendaftar. Itu masuk akal, karena ini tidak musnah oleh kode "prolog" -nya.Output kemudian dilakukan dengan menyimpan byte ASCII langsung ke memori video. Buffer video dimulai pada
0xB800:0000
mode teks CGA, EGA, dan / atau VGA, jadi kami mulai mencetak di sana. Formatnya adalah: karakter dalam byte rendah, dan atribut warna dalam byte tinggi. Itu artinya setiap karakter menggunakan offset 2-byte. Kami hanya mengulangi masing-masing digit dalam angka (basis-10), mengubahnya menjadi ASCII dan mencetaknya satu per satu ke layar. Ya, ini banyak kode. Tidak ada fungsi perpustakaan untuk membantu kami dalam bahasa assembly. Ini hampir pasti dapat dioptimalkan lebih lanjut, tetapi saya bosan mengerjakannya ...Setelah output ditampilkan, kode dibiarkan macet atau melakukan apa pun, jadi kami hanya menghapus interupsi dan menghentikan CPU.
sumber
INT 3
dan berakhir segera kembali pada instruksi yang mengikutinya, jadi saya hanya pergi dengannya. Mungkin ada hubungannya dengan lingkungan pengujian saya?CLI
hanya akan menonaktifkan interupsi perangkat keras, tetapi bahkan jika sudah melewatiHLT
, Anda akan berpikir itu akan gagal dan mengeksekusi kodel
segera setelahnya.Python 2 oleh TwiNight
Cobalah online!
sumber
Python 3 , ppperry 's 2 Tantangan
Wow, ini menyenangkan! Saya menikmati pemecahan ini.
Sunting: Oke, saya memperbaikinya. Sepertinya kelas-kelas berada pada indeks yang berbeda dalam daftar subclass di TIO daripada di komputer saya, jadi saya membuatnya bekerja untuk keduanya, dan menambahkan TIO.
Cobalah online!
sumber
sys.excepthook is missing
?sys.excepthook
, tetapi akan ada penyebab nyata yang tercantum di suatu tempat di sana.)IndexError('list index out of range',)
. Ini sesuai dengan definisi_io_RawIOBase
._io_IOBase = [cls for cls in object.__subclasses__() if cls.__name__ == '_IOBase'][0]
harus bekerja di mana-mana.Haskell oleh zbw
Tidak dapat menjalankan kode saat run-time? Jalankan saat kompilasi!
Ini sangat menyenangkan, saya tidak tahu template haskell sebelum tantangan ini.
sumber
Jelly oleh hiper neutrino
Sangat sederhana. Newline menyebabkan tautan pertama tidak dipanggil.
Cobalah online!
sumber
Python 2 oleh Wheat Wizard
Cobalah online!
sumber
Java oleh LordFarquaad
Memblokir akses ke objek di tingkat sumber benar-benar pintar (dan mengganggu saat pengujian), bagus sekali!
sumber
ClassLoader
telah dibayangi?"".getClass().getClassLoader()
. Membayangi biasanya hanya masalah yang harus Anda pikirkan sekali dan kemudian tidak masalah. Anda bahkan bisa membayangiObject
, saya masih bisa menyelesaikan ini. Ok, Anda mungkin memaksa saya ke solusi 1kb, tapi itu mungkin.Ruby oleh histocrat
Cobalah online!
sumber
Inform 7, oleh Ilmari Karonen
Pelecehan kata benda ambigu yang mencolok ... Kode saya dimulai dengan
factory is a room
. Baris sebelumnya adalah kode polisi. Ketikadd 1 and 1
untuk mendapatkan 2, misalnya.sumber
Java, Roman Gräf
Set
stdout
danstderr
kembali ke nilai awal mereka.Saya percaya saya dapat menggunakan nama yang sepenuhnya memenuhi syarat alih-alih impor, jika saya salah mohon perbaiki saya (ini adalah posting pertama saya di sini.) Ini mungkin dapat dilakukan dengan menggunakan refleksi juga.
Sunting: inilah solusi reflektif hanya dengan menggunakan
java.lang.reflect.*
:sumber
stdin
,stdout
danstderr
disimpan di tempat lain! Anda bahkan tidak perlu menggunakansetOut
dansetErr
karena Anda bisa langsung menggunakannyaPrintStream
.JavaScript oleh Daniel Franklin
Ini mungkin dianggap sebagai solusi yang sedikit curang, tetapi itu berfungsi untuk saya di Chromium 59 / Linux, bahkan jika saya juga menerima peringatan yang mengatakan:
Ps. Inilah celah lain, kali ini tanpa peringatan:
sumber
prompt()- -prompt()
menghemat dua byteJava 8 oleh Olivier Grégoire
Retakan yang sangat bertele-tele untuk tantangan yang sangat bertele-tele. :) Rasa sakit bekerja secara tidak langsung dengan kelas-kelas yang tidak dapat Anda sebutkan terasa jelas.
Cobalah online!
Ps. Ini usaha saya sebelumnya, ditulis sebelum Olivier mengklarifikasi bahwa input dimaksudkan untuk diambil melalui argumen baris perintah. Berbeda dengan crack di atas, ini bukan Linux-spesifik.
Cobalah online!
sumber
String[] args = ((String) system.getMethod("getProperty", String.class).invoke(null, "sun.java.command")).split(" ");
yang tidak spesifik untuk Linux, tetapi memang menggunakan apa yang tampak sebagai properti tidak berdokumen yang ditetapkan oleh beberapa JVM.C # (.NET Core) oleh raznagul
Saya menganggap ini bukan solusi yang dimaksudkan.
sumber
/dev/std*
itu. Saya awalnya bertujuan untuk pendekatan yang serupa, tetapi tidak dapat menemukan cara mudah untuk membuka stream untuk stdin / out tanpa akses ke System.Console, jadi saya memilih untuk refleksi sebagai gantinya. Tentu saja, solusi Anda mungkin hanya bekerja di Linux dan sistem Unixish lainnya dengan/dev
entri yang sesuai , tetapi raznagul tidak secara eksplisit mengatakan itu harus bekerja pada Windows. Dan itu berfungsi pada TIO.Java, oleh racer290
Ini agak mengabaikan dasar bahwa
static
initializers dipanggil sebelummain
metode. Itu adalah percobaan yang bagus: Saya kecewathrow new Error()
pada awalnya, tetapi akhirnya menemukan jalannya;)sumber
System.out.println("Hello World!");
Tidak menambahkan dua bilangan bulat? .. " 2. Cuplikan kode yang mengambil dua angka sebagai input, menambahkannya bersama-sama, dan mengeluarkan jumlahnya. Cuplikan ini masih harus berfungsi dengan benar bahkan setelah menjalankan cuplikan pertama. Ketika kedua cuplikan tersebut digabungkan bersama, mereka harus membentuk program lengkap yang menambahkan dua angka, atau mendefinisikan fungsi yang menambahkan dua angka. Cuplikan ini mungkin akan bergantung pada perilaku yang tidak jelas, dan sulit ditemukan. "Java oleh Kevin Cruijssen
Dibangun dengan baik. Banyak kode untuk membuat orang merenungkan bagaimana menyelesaikan tantangan ini. Saya kira "masukkan kode Anda setelah itu" adalah petunjuk besar.
Coba di sini.
sumber
JavaScript oleh Grant Davis
Bekerja di konsol JS pada
about:blank
halaman (sebagaimana ditentukan dalam pos polisi) di Chromium 59 / Linux.sumber
cQuents , Step Hen , 3 byte
Cobalah online!
Butuh banyak berbicara dengan Langkah Hen untuk mencari tahu bagaimana sih bahasa anehnya bekerja, tetapi singkatnya:
Kodenya adalah
#|1,1:A
.#|1,1
adalah input default, yang berarti setiap input yang diberikan untuk program ditambahkan oleh 2 1's. (Yaitu jika Anda melewati 47 dan 53, input Anda adalah[47, 53, 1, 1]
.:
cukup set mode, yang akan menampilkann
item th dalam urutan jikan
diatur, dan jika tidak output seluruh urutan.Akhirnya
A
mendapat input pertama.Karena kita memiliki 4 input
[47, 53, 1, 1]
, menambahkanBC
ke akhir juga akan mengambil input ke-2 dan ke-3, dan input ke-4 secara implisit menjadin
.Karena urutan kita
ABC
, diuraikan secara aljabar, artinya menjadiA*B*C
. Kami tidak menginginkan itu, tetapi jika kami menyisipkan+
antara A dan B, itu menjadiA+B*C
, di manaA
danB
merupakan input kami, danC
adalah 1.sumber
how the hell his weird language works
mungkin begitu saya menyelesaikannya mungkin lebih masuk akalC # (.NET Core) oleh raznagul
Cobalah online!
Ini mungkin akan memakan waktu lebih sedikit jika saya benar-benar tahu C #. Namun, dengan beberapa penelusuran dokumentasi dan sedikit bantuan dari Jon Skeet , saya berhasil menyatukan sesuatu yang berfungsi.
sumber
Tantangan Vim oleh @DJMcMayhem
Sudah lama sejak saya tidak dapat keluar dari vim , inilah solusi saya (perhatikan ini jauh lebih dari
23
byte - jadi mungkin bukan solusi yang dimaksudkan):Cobalah online!
Idenya adalah hanya untuk menyalurkan dua bilangan bulat
awk
melaluibash
, karena=
dan+
dinonaktifkan saya harus menggunakan work-around kecil. Theawk
garis memperluas ke:Sunting : Tujuan awal adalah bahwa input sudah ada di buffer, tetapi itu tidak akan lebih sulit - kesulitan utama adalah untuk mendapatkan kerja tambahan.
Inilah saran perbaikan oleh @DJMcMayhem: Coba online!
sumber
[insert your number here]
dalam mode sisipkan. Sebaliknya, itu sudah ada di buffer. Tapi Anda bisa menyiasatinyaOecho "<esc>Go"|awk...
, jadi saya pikir ini penting. Bagus sekali! Ini bukan celah yang ada dalam pikiran saya (saya berharap untuk jawaban murni vim) jadi saya mungkin akan memposting jawaban baru yang menambal perintah eksternal dan!
.Java 7 oleh Poke
Cobalah online!
Tidak diperlukan trik khusus Linux, hanya penyembunyian sederhana dari nama yang tidak memenuhi syarat
String
danSystem
kelas. Ini mungkin bukan solusi yang dimaksudkan, tetapi berhasil.sumber
GolfScript oleh Ilmari Karonen
Cobalah online!
sumber
RProgN2 oleh @ATaco
Cobalah online!
Sejauh ini, ini bukan jawaban terbaik yang bisa saya berikan, tetapi memungkinkan menambahkan angka bersama lagi. Seandainya saya benar-benar melewati dan melakukan penanganan tumpukan yang tepat, saya mungkin bisa bermain golf ini sedikit, tetapi sampai sekarang saya senang dengan jawabannya.
Dalam posting asli ATaco, dia secara efektif baru saja menugaskan kembali semua operator aritmatika utama untuk menghancurkan input mereka. Untuk memperbaiki masalah ini, saya mendefinisikan ulang penambahan apa dalam hal operasi binernya, yang merupakan rasa sakit karena RProgN2 tidak memiliki operator negasi biner atau xor.
Catatan: Jika Anda ingin menguji input, angka dengan lebih dari satu digit harus dalam formulir
"XX..." n
untuk dikonversi menjadi angka yang sebenarnya karena RProgN2 mengambil setiap karakter sebagaimana adanya kecuali konsep atau string. Sunting: @ATaco mencatat bahwa menambahkan '$' sebelum nomor multidigit akan melakukan hal yang sama.EDIT: Ini adalah logika untuk solusi saya. Seperti yang Anda lihat, pasti bukan kode yang paling disempurnakan, tetapi berfungsi.
sumber
56$46$12
Akan mendorong angka 5, 6, 46 dan 12. Saya akan memposting solusi saya yang sebenarnya dan besok seperti ituJavaScript (Node.js) oleh jrich , 298 bytes
Saya merasa ini bukan solusi yang dimaksudkan, tetapi jika itu dilakukan dengan baik, saya menghabiskan beberapa waktu untuk mencari tahu cara mendapatkan nama fungsi yang dinyatakan! :)
Cobalah online!
sumber