Wątek złodziei można znaleźć tutaj: The Mystery String Printer (Robbers)
Twoje wyzwanie
- Napisz program, funkcję lub skrypt REPL, który drukuje ciąg do STDOUT.
- Rabusie spróbują stworzyć program, który wydrukuje ten sam ciąg.
- Jeśli uda im się utworzyć program w ciągu 7 dni, zgłoszenie zostanie złamane.
- Jeśli nikt nie może utworzyć programu, który wydrukuje ten sam ciąg w ciągu 7 dni, przesłanie jest bezpieczne. Możesz zdecydować się na ujawnienie swojego programu lub pozostawić go jako wyzwanie przyszłym rabusiom. Jeśli jednak tego nie ujawnisz, nie możesz zdobyć żadnych punktów za przesłanie (nie umieszczaj słowa „bezpieczne” w nagłówku odpowiedzi, jeśli zdecydujesz się to zrobić).
Ograniczenia
- Program musi być mniejszy lub równy 128 bajtom ogółem (więcej na ten temat później).
- Jeśli program zależy od nazwy programu lub nazwy / zawartości pliku zewnętrznego, musisz powiedzieć, że tak się dzieje, i uwzględnić to w całkowitej liczbie bajtów.
- Wydrukowany ciąg musi być mniejszy lub równy 2048 bajtów.
- Wydrukowany ciąg musi składać się wyłącznie z drukowalnych znaków ASCII (można dodać nowe wiersze).
- Program musi generować to samo wyjście przy każdym uruchomieniu.
- Wbudowane operacje podstawowe kryptograficzne (w tym wszelkie rng, szyfrowanie, deszyfrowanie i mieszanie) są niedozwolone.
- Program nie może pobierać danych wejściowych.
- Brak standardowych luk.
Punktacja
- Jeśli zgłoszenie zostanie złamane przed upływem siedmiu dni, zgłoszenie otrzymuje 0 punktów.
- Bezpieczne przesłanie ≤ 128 znaków daje 1 punkt.
- Bezpieczne przesłanie ≤64 znaków daje 2 punkty. Jeśli jest mniejszy lub równy 32 bajtom, zarabia 4 punkty i tak dalej.
- Każde bezpieczne poddanie się zapewnia również dodatkowy 3 punktowy bonus (niezależnie od długości).
- Za każde pęknięcie po pierwszym jest niewielka (1/2 punktu) kara.
- Zauważ, że rozwiązanie rabusia musi mieć ten sam zakres długości programu.
- Każda osoba może przesłać maksymalnie 1 program na zakres bajtów na język (różne wersje i arbitralne podstawienia tego samego języka nie liczą się jako osobne języki). Przykład: możesz opublikować 32-bajtowy i 64-bajtowy program pyth, ale nie możesz opublikować 128-bajtowego programu zarówno w Javie 7, jak i Javie 8.
- Osoba z najwyższą sumą punktów wygrywa.
Zgłoszenia
Każde zgłoszenie musi zawierać następujące informacje:
- Nazwa języka Wszystkie nowe rozwiązania złodziei muszą być w tym samym języku.
- Zakres rozmiaru programu (jest to najbliższa potęga o dwa razy większa niż rozmiar programu; na przykład, jeśli twój program ma 25 bajtów, będzie to „≤32”).
- Rzeczywisty ciąg do wydrukowania.
- Jeśli przesyłanie jest bezpieczne, w nagłówku wpisz „bezpieczny” i długość programu (z dokładnością do najbliższej potęgi 2). Jeśli w nagłówku jest wiele liczb, umieść potęgę 2 na końcu.
Ten fragment stosu generuje tabele wyników i zawiera listę wszystkich otwartych zgłoszeń. Jeśli występują jakieś problemy z fragmentem kodu, zostaw komentarz.
/* Configuration */
var QUESTION_ID = 60328; // Obtain this from the url
// It will be like http://XYZ.stackexchange.com/questions/QUESTION_ID/... on any question page
var ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";
var COMMENT_FILTER = "!)Q2B_A2kjfAiU78X(md6BoYk";
var OVERRIDE_USER = 167084; // This should be the user ID of the challenge author.
var SECONDSINDAY = 86400;
var SAFECUTOFFDAYS = 7;
var SORTBYTIME = true;
var SUBTRACTCRACKEDPOINTS = true;
var EXPIREDTIME = 1446336000;
/* App */
var answers = [],
answers_hash, answer_ids, answer_page = 1,
more_answers = true,
comment_page;
function answersUrl(index) {
return "//api.stackexchange.com/2.2/questions/" + QUESTION_ID + "/answers?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + ANSWER_FILTER;
}
function commentUrl(index, answers) {
return "//api.stackexchange.com/2.2/answers/" + answers.join(';') + "/comments?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + COMMENT_FILTER;
}
function getAnswers() {
jQuery.ajax({
url: answersUrl(answer_page++),
method: "get",
dataType: "jsonp",
crossDomain: true,
success: function(data) {
answers.push.apply(answers, data.items);
answers_hash = [];
answer_ids = [];
data.items.forEach(function(a) {
a.comments = [];
var id = +a.share_link.match(/\d+/);
answer_ids.push(id);
answers_hash[id] = a;
});
if (!data.has_more) more_answers = false;
comment_page = 1;
getComments();
}
});
}
function getComments() {
jQuery.ajax({
url: commentUrl(comment_page++, answer_ids),
method: "get",
dataType: "jsonp",
crossDomain: true,
success: function(data) {
data.items.forEach(function(c) {
answers_hash[c.post_id].comments.push(c);
});
if (data.has_more) getComments();
else if (more_answers) getAnswers();
else process();
}
});
}
getAnswers();
var SAFE_REG = /<h\d>.*?[sS][aA][fF][eE].*<\/\h\d>/;
var POINTS_REG = /(?:<=|≤|<=)\s?(?:<\/?strong>)?\s?(\d+)/
var POINTS_REG_ALT = /<h\d>.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/;
var CRACKED_HEADER_REG = /<h\d>.*[Cc][Rr][Aa][Cc][Kk][Ee][Dd].*<\/h\d>/;
var CRACKED_COMMENT_REG = /(.*[Cc][Rr][Aa][Cc][Kk][Ee][Dd].*<a href=.*)|(.*<a href=.*[Cc][Rr][Aa][Cc][Kk][Ee][Dd].*)/
var OVERRIDE_REG = /^Override\s*header:\s*/i;
var LANGUAGE_REG = /<h\d>\s*(.+?),.*<\/h\d>/;
var LANGUAGE_REG_ALT = /<h\d>\s*(<a href=.+<\/a>).*<\/h\d>/
var LANGUAGE_REG_ALT_2 = /<h\d>\s*(.+?)\s.*<\/h\d>/;
var LANGUAGE_REG_ALT_3 = /<h\d>(.+?)<\/h\d>/;
function getAuthorName(a) {
return a.owner.display_name;
}
function process() {
var valid = [];
var open = [];
answers.forEach(function(a) {
var body = a.body;
var cracked = false;
a.comments.forEach(function(c) {
var was_safe = (c.creation_date + (SECONDSINDAY * SAFECUTOFFDAYS) > a.creation_date);
if (CRACKED_COMMENT_REG.test(c.body) && !was_safe)
cracked = true;
});
if (CRACKED_HEADER_REG.test(body)) cracked = true;
// if (SUBTRACTCRACKEDPOINTS||!cracked) {
var createDate = a.creation_date;
var currentDate = Date.now() / 1000;
var timeToSafe = (createDate + (SECONDSINDAY * SAFECUTOFFDAYS) - currentDate) / SECONDSINDAY;
var SafeTimeStr = (timeToSafe > 2) ? (Math.floor(timeToSafe) + " Days") :
(timeToSafe > 1) ? ("1 Day") :
(timeToSafe > (2 / 24)) ? (Math.floor(timeToSafe * 24) + " Hours") :
(timeToSafe > (1 / 24)) ? ("1 Hour") :
"<1 Hour";
var expired = createDate > (EXPIREDTIME);
var safe = timeToSafe < 0;
var points = body.match(POINTS_REG);
if (!points) points = body.match(POINTS_REG_ALT);
safe = safe && !cracked
isOpen = !(cracked || safe);
if (points) {
var length = parseInt(points[1]);
var safepoints = 0;
if (length <= 4) safepoints = 32;
else if (length <= 8) safepoints = 16;
else if (length <= 16) safepoints = 8;
else if (length <= 32) safepoints = 4;
else if (length <= 64) safepoints = 2;
else if (length <= 128) safepoints = 1;
valid.push({
user: getAuthorName(a),
numberOfSubmissions: (safe && !expired) ? 1 : 0,
points: (safe && !expired) ? safepoints : 0,
open: (isOpen && !expired) ? 1 : 0,
cracked: (cracked && !expired) ? 1 : 0,
expired: (expired) ? 1 : 0
});
}
if ((isOpen || expired) && points) {
var language = body.match(LANGUAGE_REG);
if (!language) language = body.match(LANGUAGE_REG_ALT);
if (!language) language = body.match(LANGUAGE_REG_ALT_2);
if (!language) language = body.match(LANGUAGE_REG_ALT_3);
open.push({
user: getAuthorName(a),
length: points ? points[1] : "???",
language: language ? language[1] : "???",
link: a.share_link,
timeToSafe: timeToSafe,
timeStr: (expired) ? "Challenge closed" : SafeTimeStr
});
}
// }
});
if (SORTBYTIME) {
open.sort(function(a, b) {
return a.timeToSafe - b.timeToSafe;
});
} else {
open.sort(function(a, b) {
var r1 = parseInt(a.length);
var r2 = parseInt(b.length);
if (r1 && r2) return r1 - r2;
else if (r1) return r2;
else if (r2) return r1;
else return 0;
});
}
var pointTotals = [];
valid.forEach(function(a) {
var index = -1;
var author = a.user;
pointTotals.forEach(function(p) {
if (p.user == author) index = pointTotals.indexOf(p);
});
if (index == -1) pointTotals.push(a);
else {
pointTotals[index].points += a.points;
pointTotals[index].numberOfSubmissions += a.numberOfSubmissions;
pointTotals[index].cracked += a.cracked;
pointTotals[index].expired += a.expired;
pointTotals[index].open += a.open;
if (SUBTRACTCRACKEDPOINTS && a.cracked && pointTotals[index].cracked > 1) pointTotals[index].points -= .5;
}
});
pointTotals.forEach(function(a) {
a.points += (a.numberOfSubmissions) ? ((a.numberOfSubmissions) * 3) : 0;
});
pointTotals.sort(function(a, b) {
if (a.points != b.points)
return b.points - a.points;
else if (a.numberOfSubmissions != b.numberOfSubmissions)
return b.numberOfSubmissions - a.numberOfSubmissions;
else if (a.open != b.open)
return b.open - a.open;
else if (a.cracked != b.cracked)
return a.cracked - b.cracked;
else return 0;
});
pointTotals.forEach(function(a) {
var answer = jQuery("#answer-template").html();
answer = answer
.replace("{{NAME}}", a.user)
.replace("{{SAFE}}", a.numberOfSubmissions)
.replace("{{OPEN}}", a.open)
.replace("{{CLOSED}}", a.expired)
.replace("{{CRACKED}}", a.cracked)
.replace("{{POINTS}}", a.points);
answer = jQuery(answer);
jQuery("#answers").append(answer);
});
open.forEach(function(a) {
var answer = jQuery("#open-template").html();
answer = answer
.replace("{{NAME}}", a.user)
.replace("{{LENGTH}}", a.length)
.replace("{{LANGUAGE}}", a.language)
.replace("{{TIME}}", a.timeStr)
.replace("{{LINK}}", a.link);
answer = jQuery(answer);
jQuery("#opensubs").append(answer);
});
}
body {
text-align: left !important
}
#answer-list {
padding: 10px;
width: 350px;
float: left;
}
#open-list {
padding: 10px;
width: 470px;
float: left;
}
table thead {
font-weight: bold;
vertical-align: top;
}
table td {
padding: 5px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b">
<div id="answer-list">
<h2>Leaderboard</h2>
<table class="answer-list">
<thead>
<tr>
<td>Author</td>
<td>Safe</td>
<td>Open</td>
<td>Cracked</td>
<td>Late Entry</td>
<td>Score</td>
</tr>
</thead>
<tbody id="answers">
</tbody>
</table>
</div>
<div id="open-list">
<h2>Open submissions</h2>
<table class="open-list">
<thead>
<tr>
<td>Author</td>
<td>Length</td>
<td>Language</td>
<td>Time Remaining</td>
<td>Link (open in new tab)</td>
</tr>
</thead>
<tbody id="opensubs">
</tbody>
</table>
</div>
<table style="display: none">
<tbody id="answer-template">
<tr>
<td>{{NAME}}</td>
<td>{{SAFE}}</td>
<td>{{OPEN}}</td>
<td>{{CRACKED}}</td>
<td>{{CLOSED}}</td>
<td>{{POINTS}}</td>
</tr>
</tbody>
</table>
<table style="display: none">
<tbody id="open-template">
<tr>
<td>{{NAME}}</td>
<td>{{LENGTH}}</td>
<td>{{LANGUAGE}}</td>
<td>{{TIME}}</td>
<td><a target="_parent" href="{{LINK}}">Link</a>
</td>
</tr>
</tbody>
</table>
Użyj następujących formatów wpisów:
Language, (any text with the program size as the last number)
=
lub
Language
=
Length <= 16
Pamiętaj, że fragment kodu umieści pierwsze słowo w nagłówku jako język, jeśli nie wykryje przecinka.
W celu bezpiecznego przesyłania umieść bezpiecznie w swoim nagłówku. Urywek automatycznie umieści Twój program w kolumnie „bezpieczny”, jeśli upłynie czas, więc jest to bardziej informacja dla złodziei, że Twój program jest bezpieczny.
W przypadku zgłoszeń z krakowaniem umieść crack w nagłówku.
Program powinien także być w stanie rozpoznać, czy komentarz mówi „pęknięty” i zawiera link; nie jest to jednak gwarantowane.
Kolejność złamań: Punkty -> Liczba bezpiecznych zgłoszeń -> Najmniejsza liczba złamanych zgłoszeń.
Pamiętaj, że fragment jest sortowany według otwartych zgłoszeń przed ich najmniejszym pęknięciem, ale otwarte zgłoszenia nie będą liczone na koniec konkursu.
To wyzwanie jest już zamknięte.
Zwycięzca największej liczby punktów: Dennis
Najbezpieczniejsze zgłoszenia: DLosc
(Należy pamiętać, że liczba bezpiecznych zgłoszeń nie przekłada się na liczbę punktów, ponieważ przy obliczaniu wyniku bierze się pod uwagę rozmiar programów).
Odpowiedzi:
Pyth, Safe, zakres ≤ 8
Kod:
Wyjaśnienie:
źródło
]
?VBA, [Bezpieczny]
Zakres <= 128 bajtów
Podpowiedź, gdzie wydrukować
Wyjście 255 bajtów
Rozwiązanie
Kod
Wyjaśniono
źródło
Matematyka, bezpieczna, zakres ≤ 64
Wynik:
Źródło:
źródło
GenomeLookup
wszystko ...ngn APL (bezpieczny)
Zakres ≤ 8
Rozwiązanie
Wypróbuj online.
Jak to działa
⍟⍣=42
stosuje logarytm naturalny (⍟
) wielokrotnie do 42, aż do osiągnięcia stałego punktu (⍣=
), dając 0.31813150520476413J1.3372357014306895 .Wartość początkowa nie ma tu tak naprawdę znaczenia, o ile nie jest to ani 1, ani 0 .
3○
stosuje styczną do swojego prawego argumentu, uzyskując 0,07343765001657206J0,8920713530605129 .*
stosuje naturalną funkcję wykładniczą do swojego prawego argumentu, uzyskując pożądany wynik.źródło
Pyth, złamany przez Sp3000
Zakres ≤ 8
źródło
> <> (Bezpieczne)
Testowany na internetowych i oficjalnych tłumaczach.
Zakres: <= 16
Strunowy:
4621430504113348052246441337820019217490490
To jest ładne 1337, prawda?
Wyjaśnienie:
Oto kod źródłowy (15 bajtów):
f
wypycha 15 (nasz licznik) na stos (jest on pomijany!
na końcu, aby nie pchać więcej niż jednego licznika)1-
odejmuje 1 od licznika:0(?;
Frowny face sprawdza, czy licznik jest mniejszy niż 0, reszta kończy program, jeśli tak jest::
Dwukrotnie duplikuje licznik0g
Pobiera znak w punkcie(c,0)
kodu źródłowego, w którymc
znajduje się licznik*
Mnoży drugi duplikat licznika przez reprezentację ASCII poprzednio chwytanej postacin
Wyświetla wynik.Tak więc, podzielmy, wynik jest
[462, 1430, 504, 1133, 480, 522, 464, 413, 378, 200, 192, 174, 90, 49, 0]
. Odpowiada to interpretacji kodu ASCII w odwrotnej kolejności pomnożonej przez liczby 14 do 0 (tj[!*14, n*13, ... f*0]
.).Prawdopodobnie najtrudniejszą częścią łamania tego byłoby wymyślenie, jak poprawnie podzielić liczby, ale jeśli dostaniesz właściwe, to tylko kwestia wypróbowania rzeczy, dopóki nie dostaniesz czegoś, co działa.
źródło
Bałwan 1.0.2
Zakres ≤32.
Rozwiązaniem jest:
źródło
Matlab, ≤16. Pęknięty przez Wauzla
Zakres ≤16 .
Działa to również w Octave .
Wydrukowany ciąg jest następujący:
źródło
Perl (bezpieczny)
Zakres ≤ 32
Rozwiązanie
Wypróbuj online.
Jak to działa
for-951..1048
wykonuje poprzednie polecenie dla każdej liczby całkowitej w tym zakresie, zapisując je w zmiennej niejawnej.y/124589//
wykonuje transliterację, eliminując określone cyfry ze zmiennej niejawnej.y///
zwróci liczbę eliminacji, tj. liczbę wystąpień tych cyfr w zmiennej niejawnej.print 2**
wypisuje 2 do potęgi eliminacji ( 1 , 2 , 4 lub 8 ).źródło
Python, <= 16 ( cracked przez kennytm )
Zostało to stworzone przez REPL (uruchomienie polecenia w powłoce Pythona).
Podczas edytowania tego streszczę również komentarze przyszłych rabusiów wolnych od spoilerów: nie działa to we wszystkich Pythonach. Działa w kompilacji Python 2.7 gdzie
sys.maxint = 9223372036854775807
.źródło
> <> , ≤ 8 [ pęknięty ]
To łącznie 12
o
sekund. Program zatrzymuje się bezbłędnie i współpracuje zarówno z oficjalnym tłumaczem, jak i tłumaczem online .źródło
TI-BASIC, ≤4 bajty, pęknięty przez Reto Koradi
Pęknięcie zajęło 5 dni 23 godzin. Tak blisko...
Wyjście (10 bajtów):
Program:
Ponieważ w zasadzie nikt nie zgadnie, moim celem w zaprojektowaniu tego programu było uczynienie brutalnej siły jedynym możliwym podejściem.
Aby to zrobić, zablokowałem wyświetlanie danych wyjściowych lub danych wyjściowych z zastosowaniem jednej z tych funkcji odwrotnych na ISC. ISC nie ma stycznej hiperbolicznej i doszedłem do wniosku, że żadne podobne narzędzie nie miałoby
tanh(7°
.Aby dodać pewne zabezpieczenie przed brutalną siłą, użyłem konwersji stopnia na radian, nieco niejasnej funkcji, ale to nie wystarczyło.
źródło
sin(
TI-BASIC za 1 bajt. Więc coś w rodzajusin(sin(sin(e
byłoby tylko 4 bajty.fPart(
.CJam, ≤ 8 [bezpieczny]
Nie lubię długich liczb, więc oto krótki. Nie krępuj się bawić w trybie offline i online .
Ponieważ uważam, że przesyłanie tylko liczb jest dość nudne, będę powoli podawał kilka wskazówek, aby to zrekompensować.
Rozwiązanie
Program był
0W#
jest0^-1
, co zamiast błędu dajeInfinity
.s
następnie rzutuje to na ciąg znaków (uwaga, która`
daje1d0/
zamiast tego).Dla drugiej połowy
Wc
konwertuje -1 na znak, który staje się punktem kodowym 65535 z powodu oblewania znakami (patrz ta wskazówka ).i
następnie konwertuje char z powrotem na int, tj. 65535.Na koniec
b
konwertuje ciągInfinity
na bazę 65535, aby podać powyższą liczbę.źródło
JavaScript (konsola), <= 32 ( pęknięty przez inserttusernamehere )
Testowane w konsolach internetowych Chrome i Firefox. To ciąg 43 znaków.
Moje zamierzone rozwiązanie było nieco bardziej skomplikowane niż połączenie (przekleństwo, ES6!).
Wyjaśnienie:
źródło
Python, <= 32 ( cracked by Egor Skriptunoff)
Dane wyjściowe to 1832 bajtów, w tym znaki nowego wiersza:
źródło
CJam ( cracked by Dennis)
Długość <= 4
Nie daję temu bardzo dużej szansy na przeżycie, ale i tak chciałem wypróbować rozwiązanie 4-bajtowe.
Mój kod był dokładnie tym, co Dennis poddał inżynierii wstecznej:
Następnie CJam drukuje całą zawartość stosu, łącząc. Tak więc wynik został
17
połączony19^20
.źródło
KK#
, wypróbowałem jeszcze kilka mocy i wreszcie znalazłemJK#
.Lua, ≤ 4 ( pęknięty przez feersum)
Wynik:
Musisz znaleźć ciąg dla Lua REPL, który daje stałą „1 / M”.
To proste, ale niezbyt trywialne.
źródło
=
wyrażenie.0x2p-21
Pip , <= 16 (bezpieczny)
To jest moje ostatnie przesłanie Pipa, obiecuję. :)
Będę zaskoczony, jeśli ktoś sprowadzi to do 16 bajtów - zajęło mi to sporo prób dopasowania. (Weź to za wyzwanie, jeśli chcesz!)
Odpowiedź:
Ten kod wykorzystuje predefiniowane zmienne
t
= 10 is
= spacja.źródło
Ruby, rozbity przez KennyTM
Zakres: ≤64.
(I tak, wszystkie dane wyjściowe są w STDOUT.)
Zamierzone rozwiązanie:
źródło
TI-Basic ( pęknięty przez Thomasa Kwa )
Wariant TI-89
Zakres: ≤8
Długość wyjściowa: 460
Nie sądzę, że możesz użyć na tym RIES, ale wątpię, czy i tak przetrwa 7 dni. No cóż.
Kod:
źródło
MATLAB, rozbity przez Toma Carpentera
Zakres <= 16
źródło
Mathematica, Cracked by Sp3000
Zakres: <= 32
źródło
Wt - <= 64 bajtów, pęknięty przez histokrata.
555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555
To 2016 5s; tak poza tym.
źródło
CJam, ≤8 (bezpieczny)
Oryginalny kod:
Oznacza to, że należy zacząć od
3.141592653589793
i zastąpić każdy znak"3.141592653589793"
odpowiednim znakiem w"\"3.141592653589793\""
. Po usunięciu duplikatów zastępuje".123456789
je""35\.49831
.źródło
Python 2 (bezpieczny 16)
Zakres ≤ 16. Jeśli wersja ma znaczenie (dla precyzji drukowania?), Używam ideone .
Nie widzę sposobu na odgadnięcie kodu bez przeszukiwania komputera, ale wszyscy już wcześniej zrobili na mnie wrażenie.
Odpowiedź:
źródło
dir(complex)
do sprawdzania, jakie operacje są zdefiniowane dla liczb zespolonych. Nie wiedziałem, że możesz użyć modułu. Zauważ, że to prawdopodobnie nie będzie pomocne, ale może ...JavaScript ES6, ≤ 128 bajtów - pęknięty
Wyjście (1124 bajtów):
Baw się dobrze i powodzenia!
Oryginalny kod:
źródło
Still safe :3
TI-BASIC (cracked Thomas Kwa)
Zakres: <= 2
Strunowy:
-10
Kod:
Xmin
Tego faceta po prostu nie można oszukać ...
źródło
~9
(inwersja bitów)AppleScript, pęknięty ≤ 2 bajty
„Brutal zmuszony ... narzekanie narzekanie ...”
Co to jest? Krótka odpowiedź AppleScript? : o
(tak, drukuje to na standardowe wyjście)
źródło
a=
luba-
1=
lub1-
lub? Nie mam pojęcia =)say"Cracked."
, a jeśli nie masz nic przeciwko gramatyce, o jeszcze jeden bajtsay"Cracked"
. c:> <> (Fish) , Cracked by Sp3000
Długość <= 8
Dane wyjściowe to 23
>
, a program nie powoduje błędu.źródło
GolfScript (bezpieczny)
Zakres ≤ 8
Rozwiązanie
Wypróbuj online.
Jak to działa
{9?7*}
wypycha ten blok na stos..%
powiela blok i odwzorowuje go… na sobie.GolfScript wykonuje rzutowanie, jakby nie było jutra. W takim przypadku interpreter oczekuje iterowalności, więc oryginalny blok zostaje rzutowany na tablicę, uzyskując następującą tablicę kodów znaków: [57 63 55 42] .
Sam blok podnosi kod każdego znaku do dziewiątej potęgi (
9?
), a następnie mnoży wynik przez siedem (7*
).W przypadku kodów czteroznakowych w tablicy powoduje to przesunięcie
Przed wyjściem interpreter drukuje cztery liczby całkowite bez separatorów.
źródło