Apakah akan berhenti? (Polisi)


94

Ini adalah utas polisi. Utas perampok ada di sini .

Tantangan Anda adalah membuat program yang berjalan selamanya tanpa berhenti 1 , kecuali jika mendapat input atau input tertentu 2 . Jika menerima input itu, ia harus berhenti dalam waktu terbatas 3 . Ini adalah , jadi jawaban terpendek yang belum dipecahkan oleh perampok dalam waktu satu minggu setelah memposting kemenangan. Setelah minggu berlalu, tandai jawaban Anda sebagai aman dan tunjukkan input penghentian (dalam a > ! spoiler quote). Jika seorang perampok meretakkan kiriman Anda, tandai sebagai peretas dan tampilkan input penghentian (dalam a > ! spoiler quote).

Pengajuan lebih disukai menjadi runnable & crackable di TIO . Pengajuan yang tidak dapat dijalankan atau retak di TIO diizinkan, tetapi harap sertakan instruksi untuk mengunduh / menjalankannya.

Silakan tentukan input Anda deterministik, dan seragam di semua jalur. Lihat meta posting ini untuk detailnya.

Tolong, jangan "menerapkan RSA" atau apa pun yang berarti bagi para perampok. Gunakan bahasa dan fitur yang tidak jelas, bukan enkripsi dan hashing yang membosankan. Saya tidak bisa menegakkan ini dengan aturan, tetapi Anda dapat mengharapkan downvotes deras jika semua yang Anda lakukan adalah sha(input) === "abcd1234".


1 Dengan anggapan bahwa komputer tidak dimatikan, dihancurkan, ditelan matahari, kepanasan karena kematian panas alam semesta, atau terbentur batas waktu TIO tahun 60an.

2 Program harus berhenti pada setidaknya satu input. Selama itu berulang selamanya pada satu input dan berhenti pada yang lain, ia bekerja.

3 Ini harus <60 detik, sehingga kode dapat diuji pada TIO.


Mencari kiriman yang tidak retak?

fetch("https://api.stackexchange.com/2.2/questions/135363/answers?order=desc&sort=activity&site=codegolf&filter=!.Fjs-H6J36vlFcdkRGfButLhYEngU&key=kAc8QIHB*IqJDUFcjEF1KA((&pagesize=100").then(x=>x.json()).then(data=>{var res = data.items.filter(i=>!i.body_markdown.toLowerCase().includes("cracked")).map(x=>{const matched = /^ ?##? ?(?:(?:(?:\[|<a href ?= ?".*?">)([^\]]+)(?:\]|<\/a>)(?:[\(\[][a-z0-9/:\.]+[\]\)])?)|([^, ]+)).*[^\d](\d+) ?\[?(?:(?:byte|block|codel)s?)(?:\](?:\(.+\))?)? ?(?:\(?(?!no[nt][ -]competing)\)?)?/gim.exec(x.body_markdown);if(!matched){return;}return {link: x.link, lang: matched[1] || matched[2], owner: x.owner}}).filter(Boolean).forEach(ans=>{var tr = document.createElement("tr");var add = (lang, link)=>{var td = document.createElement("td");var a = document.createElement("a");a.innerHTML = lang;a.href = link;td.appendChild(a);tr.appendChild(td);};add(ans.lang, ans.link);add(ans.owner.display_name, ans.owner.link);document.querySelector("tbody").appendChild(tr);});});
<html><body><h1>Uncracked Submissions</h1><table><thead><tr><th>Language</th><th>Author</th></tr></thead><tbody></tbody></table></body></html>


1
@LuisMendo dengan asumsi memori tak terbatas baik
programmer5000

1
@ programmer5000 Terima kasih telah menjelaskan. Anda harus memasukkan semua ini ke dalam teks tantangan. Para penjawab tidak diharapkan membaca semua komentar
Luis Mendo

6
Bisakah kita membatasi input menjadi, katakanlah, integer? Perampok dapat mengirimkan beberapa masukan yang salah bentuk atau salah ketik untuk segera menghentikan program. Saya harus melakukan banyak validasi input yang cermat, atau menggunakan bahasa yang dapat menangkap kesalahan sewenang-wenang.
xnor

3
@ xnor Saya pikir Anda harus melakukan pengecekan input.
Stephen

1
@StepHen Itu berfungsi jika input yang rusak masih dapat diuraikan oleh penerjemah. Jika saya memasukkan string ilegal, Rkesalahan langsung, bahkan tanpa memasukkan fungsi untuk retak. Saya berpendapat bahwa itu tidak dihitung sebagai benar-benar menghentikan fungsi.
JAD

Jawaban:


55

Malbolge, 128 byte, dipecahkan oleh KBRON111

(=&r:#o=~l4jz7g5vttbrpp^nllZjhhVfddRb`O;:('JYX#VV~jS{Ql>jMKK9IGcFaD_X]\[ZYXWVsN6L4J\[kYEhVBeScba%_M]]~IYG3Eyx5432+rpp-n+l)j'h%B0

Selamat bersenang-senang!

(Ya, saya belajar Malbolge hanya untuk ini. Ya, butuh waktu yang sangat lama untuk akhirnya bisa bekerja. Dan ya, itu benar-benar sepadan.)

Dibungkus, sehingga Anda dapat melihatnya secara penuh, eh, "kemuliaan":

(=&r:#o=~l4jz7g5vttbrpp^nllZjhhV
fddRb`O;:('JYX#VV~jS{Ql>jMKK9IGc
FaD_X]\[ZYXWVsN6L4J\[kYEhVBeScba
%_M]]~IYG3Eyx5432+rpp-n+l)j'h%B0

Saya menggunakan juru bahasa ini untuk mengujinya; Saya tidak yakin apakah itu penting, tapi saya pikir saya akan menentukan siapa tahu.


2
Itu penerjemah TIO menggunakan btw.
Dennis

2
oh, "Selamat bersenang-senang" adalah tambahan yang bagus
Евгений Новиков

26
Anda brengsek. Malbolge jahat.
Draco18s

1
Saya dicap ... Yang terjauh yang saya dapatkan: dari 13 input sebelum berhenti, hanya yang pertama dan ketiga yang memiliki dampak. Setelah menyeluruh reverse-engineering, saya menemukan bahwa masukan pertama harus 6dan yang ketiga adalah salah satu dari empat: !, #, /dan -. Tetapi kombinasi tersebut tampaknya tidak memperbaiki penghentian. Saya taruh di sini, mungkin seseorang yang lebih pintar menemukan solusi. Jika ada yang mau, saya akan memposting besok bagaimana saya mendapatkan input ini. EDIT: Sekarang saya berpikir tentang hal itu, program saya yang saya tulis untuk tujuan rekayasa balik ini mungkin memiliki bug, dan input pertama mungkin sesuatu yang lain dari pada 6. Karakter ketiga masih berdiri.
Grzegorz Puławski


23

JavaScript (ES6), 17 byte, Retak

x=>{for(;x==x;);}

Pada TIO, karena saya tidak tahu bagaimana melakukan readline Node.js pada TIO, cukup masukkan input pada pemanggilan fungsi. Ini jelas bagi siapa saja yang mengetahuinya, dan tidak bagi siapa pun yang tidak.

Cobalah online!

Menjawab:

Jawabannya adalah NaN, karena dalam JavaScript NaN != NaN,.


2
Retak . Penggunaan aneh dari keanehan bahasa!
programmer5000

3
Anda bertaruh :) Saya suka bagaimana Anda begitu percaya diri itulah yang saya pilih sehingga Anda mengeditnya untuk saya: P
Stephen

12
NaN == NaNsalah dalam banyak bahasa selain JavaScript. Saya tidak akan menyebutnya "keanehan bahasa".
Nayuki

9
Saya percaya NaN != NaNini adalah fitur angka floating point
undergroundmonorail

1
@undergroundmonorail: Benar. Hubungan antara dua angka floating point IEEE bisa di atas, sama, di bawah, atau tidak berurutan . Hasil perbandingan tidak teratur jika salah satu atau kedua operan adalah jenis NaN. (IEEE 754 floating point biner memiliki banyak pola bit NaN : apa pun dengan eksponen semua-satu dan mantissa non-nol adalah NaN, terlepas dari bit tanda. Ada beberapa aturan yang memasukkan "payload" dari sebuah NaN, dan untuk menyebarkannya melalui operasi seperti +atau max(), tetapi kebanyakan orang tidak peduli: P)
Peter Cordes

14

JS (ES6), 67 byte ( Retak )

(x,y)=>{while(x!==y||Object.is(x, y)||!isFinite(x)||!isFinite(y));}

Saya pikir saya tidak mengacau, mungkin ada solusi mudah yang tidak saya lihat.

Saya menghargai umpan balik, ini adalah salah satu posting pertama saya

(+0, -0) Yap, js memiliki negatif 0



Saya menyadari sekarang bahwa saya tidak perlu memeriksa apakah xdan yterbatas, tetapi saya tidak akan mengedit karena sudah retak. Bisa jadi 38 byte
Juan Tonina

10

Python 3.4, (40 bytes) Retak

def f(x):
  while(x==x or not x==x):pass

4
Selamat datang di PPCG!
Martin Ender


12
Saya merasa Anda seharusnya disimpan x==xdalam variabel bernama to_be, sehingga Anda bisa membuat referensi Hamlet.
Peter Cordes

@PeterCordes Tapi itu akan membuat jawabannya tidak bisa
diacak

@pperry: yeah, saya perhatikan itu setelah saya melihat celahnya. : P
Peter Cordes

9

Javascript (BUKAN node.js)

x=>{while(x+"h");}

Kiriman yang diinginkan tidak menggunakan lemparan.

Petunjuk untuk retakan yang diinginkan:

Pengiriman yang diinginkan tidak menimpa .toString(), atau menggunakan Set()keduanya.

Retakan yang diinginkan:

Object.create(null)


Tautan crack yang benar (bukan milik saya, hanya tautan ke jawaban Dom Hasting)
Stephen

Cracked # 2 Cracked tanpa menggunakan throw(masih memberikan kesalahan)
Grant Davis

Retak lagi tanpa menggunakan throw, saya percaya nyata saat ini karena Grant Davis 'tidak bekerja untuk saya. Masih TypeErrors.
Haumed Rahmani

2
Anda bisa melakukannya x=>{try{for(;x+"h";)}catch(e){for(;;)}}sehingga setiap kesalahan akan menghasilkan loop tanpa akhir sehingga kesalahan fungsi prototipe yang hilang (atau kesalahan) akan menghasilkan loop tanpa akhir.
Grant Davis

1
Yang ini hanya bekerja di browser, tidak yakin mengapa itu terjadi: D
jadkik94

8

C (gcc) , 75 byte Retak

#include<stdio.h>
int main(){char c[9];while(1){scanf("%8s",c);printf(c);}}

Cobalah online!

Saya belum pernah memposting di polisi-perampok sebelumnya. Semoga ini tidak terlalu jelas.

Larutan:

Input "% s" membuat segfault ini. Ada beberapa yang lain yang dapat digunakan; semuanya adalah printfspecifier seperti "% n"
Ini adalah printfkerentanan klasik . Sederhananya, string format datang langsung dari input pengguna, sehingga setiap printfpenentu dapat dilewati, tidak aman.



8

JavaScript (di Browser), 79 byte Retak

x=>{try{for(;x||x!=null||x!=void 0||x===null||x===void 0;);}catch(e){for(;;);}}

Anda harus menjalankannya di browser terbaru (seperti ESR Firefox terbaru, Firefox terbaru, Chromium terbaru). Berjalan di browser lama (seperti Netscape 2, IE 4) tidak masuk hitungan.

Catatan: Dihentikan oleh browser karena waktu habis tidak berhenti di sini.

Selalu berhati-hati agar browser Anda tidak macet saat menguji kode ini, dan selamat merampok ^ _ ^

document.all


Bisakah saya menggunakan setTimeout?
Евгений Новиков

@ ЕвгенийНовиков Anda dapat memanggil fungsi ini dengan parameter apa pun. Tetapi tampaknya digunakan setTimeoutsebagai parameter tidak berfungsi.
tsh

ide yang harus dilakukan var key=(()=>{setTimeout(args);return null})()dan kemudiancrackme(key)
Евгений Новиков

sepertinya selingkuh
Евгений Новиков



6

Sekam , 5 byte Retak

↑ε∞←ø

Cobalah online!

Sedikit penjelasan, karena bahasa ini masih cukup baru:

←ømendapatkan elemen pertama dari daftar kosong: ini mengembalikan nilai yang dapat mengasumsikan tipe apa pun, baik itu tipe konkret atau fungsi, yang kemudian akan diterapkan pada input. membuat daftar tak terbatas yang terdiri dari salinan hasil sebelumnya (yang dalam banyak kasus akan berarti daftar nol tanpa batas). ↑εmengambil elemen dari daftar ini selama mereka "kecil" yaitu nilai absolutnya adalah ≤1; pada daftar nol yang tidak terbatas ini tidak akan pernah berhenti.


@ Veedrac yang sebenarnya adalah solusi yang saya maksud
Leo

Kalau begitu, retak!
Veedrac


5

Ruby , 31 byte ( dipecahkan oleh Eric Duminil )

0until(3.send(gets)==5rescue p)

Cobalah online!

Perhatikan bahwa ini perlu dijalankan di lingkungan di mana tidak ada jejak baris baru di hasil gets, atau kalau tidak mungkin untuk membuatnya berhenti (saya pikir) karena apa pun yang berakhir pada baris baru akan kesalahan dan mengenai penyelamatan.



Bagus sekali! Tidak ada metode dalam 3.methodsmengembalikan 5atau keluar dari loop.
Eric Duminil

Menisik! Saya menemukan solusinya secara mandiri, tetapi saya terlalu fokus untuk menjadikannya sama 5dengan berpikir bahwa jawaban yang benar akan melibatkan fungsi yang dilakukannya ...
Value Ink


5

Bash 4.2, 14 byte ( retak )

Mari kita coba ini lagi.

let ${1,,}
yes

Ini tidak berfungsi pada TIO, yang menggunakan Bash 4.3. Input melalui argumen baris perintah.

Di Linux dan dengan gcc diinstal, Bash 4.2.53 dapat diunduh dan dibangun sebagai berikut.

curl -sSL https://ftp.gnu.org/gnu/bash/bash-4.2.53.tar.gz | tar xz
cd bash-4.2.53
./configure
make -j

Retak. Pada dasarnya akhirnya membaca sumbernya.
Veedrac

4

Retina , 78 byte ( Retak ) ( Retak dengan Solusi yang Dituju )

^
1
+`^1(1+)
$1¶$&
s`(?<=^|¶)(1+)(?=¶)(?!.*¶\1+$)

¶(?!1+$)

^(1+)¶\1$

+`1
11

Cukup menyenangkan untuk menulis, semoga menyenangkan untuk dipecahkan

Cobalah online!

Retak dengan solusi yang tidak diinginkan dan solusi yang dimaksud dalam satu menit dari satu sama lain. Satu diposting pertama, satu komentar pertama.

Solusi yang dimaksudkan:

11111 atau representasi unary dari n-1 di mana n adalah angka sempurna




Jadi, siapa yang retak? (Saya memposting crack terlebih dahulu, tetapi mbomb007 berkomentar dulu)
Kritixi Lithos

@Cowsquack keduanya
programmer5000


4

Java 8, 99 byte, Retak

s->{try{Integer i=Integer.parseInt(s),c=i+32767;i+=32767;for(;i!=c;);}catch(Throwable t){for(;;);}}

Ini adalah lambda dari tipe itu Consumer<String>.

Tidak Disatukan:

s -> {
    try {
        Integer i = Integer.parseInt(s), c = i + Short.MAX_VALUE;
        i += Short.MAX_VALUE;
        while (i != c) ;
    } catch (Throwable t) {
        while (true) ;
    }
}

Cobalah online! (perhatikan bahwa program pengujian akan mogok pada input kosong, tetapi lambda itu sendiri tidak akan!) (juga, gunakan 'argumen' bukan 'input' pada TIO, karena program pengujian menggunakan argumen, bukan STDIN)

Jawaban yang Dimaksud:

-32767; Ini berfungsi karena Java keep memiliki dua tipe integer, intdan Integer. Integeradalah objek yang membungkus int. Juga, Jawa terus cache dari Integers yang kotak -127melalui 127. The !=cek Operator identitas, sehingga melalui beberapa un-tinju dan auto-tinju sejumlah xtempat x + 32767di [-127, 127]akan berakhir menjadi sama Integerobjek dari cache, dan dengan demikian i != cakan palsu.



4

Bash 4.2, 10 byte ( Retak )

let $1
yes

Ini tidak berfungsi pada TIO, yang menggunakan Bash 4.3. Input melalui argumen baris perintah.

Di Linux dan dengan gcc diinstal, Bash 4.2.53 dapat diunduh dan dibangun sebagai berikut.

curl -sSL https://ftp.gnu.org/gnu/bash/bash-4.2.53.tar.gz | tar xz
cd bash-4.2.53
./configure
make -j

1
Retak. Anda menuntun saya berputar-putar mengira ini terkait shellshock dan menautkan saya ke versi yang ditambal: P. Hitung retakan yang tidak diinginkan sebagai balas dendam kecil;).
Veedrac

Heh, tidak cukup untuk apa aku pergi. Saya memposting versi yang lebih keras jika Anda ingin mencobanya.
Dennis

3

Jawa: 1760 ( Retak )

Saya merasa terlalu kejam untuk golf yang satu ini, jadi saya hanya mengaburkan nama-nama variabel, dan membuatnya 'berantakan'. Sebenarnya itu sangat kejam, bahwa saya akan mengirim petunjuk dari waktu ke waktu, supaya saya bisa melihatnya retak.

Petunjuk 1: ini memiliki input valid secara teoritis tak terbatas, tetapi ada satu yang paling 'Benar'


public class Main {

	public static void main(String[] a) {
		try {
			while (a.length < 2) {
				int i = 0;
			}
			boolean invalid = 1 < 0;
			char l = '_';
			char h = '-';
			char[] DATATWO = a[0].toCharArray();
			char[] DATATOW = a[1].toCharArray();
			int length = DATATOW.length;
			if (DATATWO.length != length) {
				invalid = 1 > 0;
			}
			int transmissionStartIndex = 0;
			for (int i = 0; i < length; i++) {
				if (DATATWO[i] == l && DATATOW[i] == l) {
					transmissionStartIndex = i;
					break;
				}
			}
			int DATAONE = 0, reg = 0;
			boolean read = 1 < 0, full = 0 < 1;
			int bytes_read = 0;
			for (int i = transmissionStartIndex; i < length; i++) {
				if (DATATOW[i] == l && DATATOW[i + 1] == h) {
					bytes_read++;

					if (bytes_read == 8) {
						read = DATATWO[i] == h;
					} else if (bytes_read == 9) {
						invalid = (DATATWO[i] == h || invalid);
						System.out.println(invalid);
					} else if (bytes_read == 18) {
						System.out.println(invalid);
						invalid = (DATATWO[i] == h || invalid);
						if (invalid) {
							System.out.println("i36 " + DATATWO[i] + " " + h);
						}
						full = 1 > 0;
					} else if (bytes_read < 8) {
						DATAONE += (DATATWO[i] == h ? 1 : 0) << (7 - bytes_read);
					} else if (bytes_read < 18) {
						reg += (DATATWO[i] == h ? 1 : 0) << (8 - (bytes_read - 9));
					} else if (bytes_read > 18) {
						invalid = 1 > 0;
					}
					System.out.println(a[0]);
					System.out.println(new String(new char[i]).replace("\0", " ") + "|");
					System.out.println(a[1]);
				}
			}

			while (!(Integer.toHexString(DATAONE).equals("0x2b") && (read)
					&& Integer.toHexString(reg).equals("0xa6"))) {

				System.out.println(System.currentTimeMillis());
				try {
					Thread.sleep(1);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}

		} catch (Exception e) {
			while (true) {
			}
		}

	}
}

Cobalah online!


Dua argumen kosong sepertinya berhasil
Okx

Juga, keberatan menambahkan tautan tio? Saya pikir semua yang perlu Anda lakukan adalah mengganti main ke Main
Okx

1
Retak , terlepas dari bug.
user3033745

Retak - tidak ada bug khusus versi.
Okx

3

Braingolf , 18 byte Retak

1+[#£-0!e>:$_1>|]

Cobalah online!

Liiiitle sedikit lebih sulit daripada yang terakhir, saya akan mulai menulis yang asli setelah ini

Jawabannya adalah 163


Man, ini mungkin satu-satunya atm pengiriman yang bertahan. Catatan: itidak berfungsi.
Erik the Outgolfer

Peringatan: ini sebenarnya 19 byte ( £). Dan mengapa tidak -1berhasil? Ini rumit.
Erik the Outgolfer

@EriktheOutgolfer Ini 17 karakter dan 18 byte.
Sepenuhnya manusiawi

@totallyhuman saya bersumpah saya telah membaca "19 byte UTF-8, 18 karakter" (userscript diaktifkan) ...
Erik the Outgolfer


3

JavaScript (ES7), 41 byte ( Diretas & Retak )

Sunting: diperbaiki untuk mencegahnya mogok ketika tidak diberi input sama sekali (terima kasih @totallyhuman untuk memperhatikan)


Beberapa solusi mungkin ada, tetapi yang diharapkan relatif sederhana.

(x=0)=>{for(;~x/x.length**3!=-2962963;);}

Solusi yang dimaksudkan:

"8e7" (angka dalam notasi ilmiah dilewatkan sebagai string)
Karena: ~ "8e7" / "8e7" .Panjang ** 3 = -80000001 / 3 ** 3 = -80000001/27 = -2962963


2
Tidak ada input yang bekerja pada yang ini juga, tapi saya tidak ingin repot-repot memecahkannya seperti itu ... Kecuali, itulah solusi yang dimaksudkan. : P
totallyhuman

@ sebenarnya manusia, itu bukan solusi yang dimaksudkan. :-)
Arnauld


2
Pembaruan: dimaksudkan solusi 3 byte panjang
Евгений Новиков

3

Bash + Utils (Cracked oleh Dennis), 74 byte

Saya harap Anda menikmati tar, karena itu satu-satunya utilitas yang dapat Anda gunakan.

cp /bin/tar .
env -i PATH=$PWD I=$? /bin/bash -r -c "$1"
while :;do :;done

Cobalah online!

Retak yang diinginkan

tar -cf --checkpoint=1 --checkpoint-action=exec="/bin/kill $I" .



@ Dennis Bagus! Saya memposting celah yang saya maksudkan, yang sedikit lebih rumit.
Sisyphus

3

Mathematica, 36 26 byte ( retak )

#0[#;$IterationLimit=∞]&

Sebuah loop #0[#;∞]yang sangat singkat yang hanya akan terus berjalan sendiri sampai crash kernel Anda ... (Ini $IterationLimithanya untuk memastikan Anda terjebak selamanya untuk sebagian besar input).

Cobalah di Wolfram Sandbox! - jika Anda terjebak dalam loop tak terbatas, Anda dapat menunggu sampai waktu Anda habis, atau Anda dapat menekan ikon "batalkan evaluasi" kotak di sebelah kiri judul buku catatan (unnamed).

CATATAN : fungsi ini mengubah $IterationLimitpengaturan Anda .




3

C #, 118 byte ( Retak )

using System;_=>{while(1>0){try{if(Nullable.GetUnderlyingType(Type.GetType(Console.ReadLine()))!=null)break;}catch{}}}

Saya tidak berharap ini berlangsung terlalu lama tetapi lebih canggung daripada yang terlihat.

Pada dasarnya semua nama lengkap kelas Nullable berfungsi tetapi sulit untuk mengetahuinya seperti terlihat di bawah ini:
System.Nullable`1[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]
Cara yang lebih mudah untuk menemukan string ini adalah dengan melakukannya typeof(int?).FullName.



3

C, 140 byte ( Retak )

n,i;f(){float x,y,z;for(scanf("%d %d",&n,&z,x=y=0);~((int)x-(int)(1/sqrt(y*2)));x*=(1.5-y*x*x))y=(x=z)/2,i=n-((*(int*)&x)/2),x=*(float*)&i;}

Mudah-mudahan tidak ada terlalu banyak input tidak-bahkan-dekat-dengan-yang dimaksudkan yang membuatnya berhenti, tapi mari kita lihat.

Cobalah online!



3

JavaScript (ES7), 73 byte ( Retak !)

q=>{r=(n,i=0)=>i>1e3?n:r(n*16807%(2**31-1),i+1);while(r(q)!=627804986){}}

Solusi yang tidak diinginkan: brute force. Retakan yang diinginkan melibatkan matematika.

Perhatikan bahwa ada banyak solusi (4194304) karena modulo.



3

brainfuck , 170 byte retak!

>>,>,>,>,>,[-----------<-<+<--<--->>>>]<++<<+<++[----->+<]>[----------------->+++++++<]>[----->>+<<]>>[-<->]<[--->++++++<]>[--->+<]+>-[-----------------<+>]<[-->-<]>+[+-]

Cobalah online!


Selamat datang di situs ini! Anda dapat menyimpan 11 byte dengan menghapus baris baru dari kode Anda.
Wheat Wizard

Saya lupa itu kode golf, terima kasih!
Jerry


Solusi yang valid! Saya perkirakan jumlahnya cukup banyak. Untuk siapa pun yang memecahkan / memaksa, yang dimaksud adalah [az].
Jerry

Untuk setiap 4 karakter, tepat ada 1 nilai karakter terakhir yang membuat program terhenti. Karena itu ada 256 ^ 4 = 4294967296 solusi dengan asumsi Anda dapat masuk nulke brainfuck. BTW Anda dapat menghapus dua >simpan pertama 2 byte.
user202729

3

JavaScript ES6 (Node.js> = 6.0) , 326 byte (Aman)

((v,e=require('events').EventEmitter.prototype,l=_=>{while(1);},P=Proxy,p=process)=>(p.kill=p.exit,e.listeners=new P(e.listeners,{apply:(t,c,a)=>a[0]=='exit'?[]:t.apply(c,a)}),e.removeAllListeners=new P(e.removeAllListeners,{apply:(t,c,a)=>a[0]=='exit'?c:t.apply(c,a)}),p.on('exit',l),i=>{try{v(i)}catch(o){}l()}))(s=>eval(s))

Jauh lebih sederhana daripada tantangan saya yang lain , saya tidak lagi mencoba untuk mengaburkan pendekatan untuk solusi, yang menyelamatkan saya banyak byte. Kali ini, process.kill()tidak akan berhasil.

"delete process._events.exit;process.exit()"

Cobalah online!


Wow! Pekerjaan yang baik!
programmer5000

Sepertinya Anda adalah pemenangnya, walaupun saya mengharapkan kode yang jauh lebih pendek hehe
Piyin

3

Swift 3, 14 bytes ( Retak )

while !false{}

Untuk mengatasinya, tulis kode Anda sebelum atau sesudah pernyataan ini.

  • Solusi Anda harus:
    • pertahankan pernyataan ini tetap utuh, tanpa mengubah kodenya
    • sebenarnya biarkan pernyataan ini berjalan
      • Cukup berkomentar, menelepon fatalError(), dll. Sebelum tidak masuk hitungan.
    • memodifikasi perilaku pernyataan ini untuk mencegah perulangan selamanya
  • Solusinya tidak melibatkan crash program.

Saya tidak tahu Swift, tetapi saya pikir menambahkan timer sebelum kode ini untuk keluar setelah beberapa detik akan memenuhi kriteria.

@Yimin heh, pintar, tetapi itu tidak mengubah semantik dari pernyataan ini, yang benar-benar saya cari ketika saya berkata "memodifikasi perilaku pernyataan ini"
Alexander

Apakah Anda yakin solusinya bekerja? Penerjemah meneriaki ambiguous semanticssaya.
Daniel

@Dappapp, itulah yang saya pikir akan terjadi pada upaya saya sebelumnya. Untuk beberapa alasan, itu sah untuk mendefinisikan kembali operator infiks baru dengan jenis tanda tangan yang sama seperti yang sudah ada, tetapi berusaha untuk melakukan hal yang sama dengan operator unary melempar kesalahan ambiguitas waktu kompilasi. Ini disengaja, dan saya yakin saya punya solusi yang berfungsi
Alexander


2

cQuents , 2 byte ( Cracked 1 ) ( Cracked 2 )

:A

Perhatikan bahwa ini akan dengan cepat mencapai batas output 128 KiB pada TIO, menyebabkannya berhenti, tetapi ketika dijalankan secara lokal akan berulang selamanya, kecuali pada input yang merusaknya. Menemukan input itu seharusnya cukup mudah. Sampai Anda melakukannya, :Aakan tetap menjulurkan lidah segitiga pada Anda.

Perhatikan juga bahwa ini seharusnya adil Atetapi saya memecahkan mode implisit tadi malam. Pada versi interpreter yang lebih lama Aakan bekerja dengan baik.

Retak:

Input kosong / baris baru pada input adalah celah yang valid. Namun, kecuali itu, dengan mengirimkan beberapa input (terpisah ruang) ke program, Anda akan menghentikannya (jika Anda memberikan 2) atau kesalahan keluar (jika Anda memberikan 3 atau lebih).

Cobalah online!


Retak? (Kesalahan keluar dengan input kosong)
Luis Mendo


@ cracker ya, itu celah yang valid. Saya akan memberikan upvote saya kepada seseorang yang menemukan celah input non-kosong.
Stephen

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.