Важливий пробіл: копи


51

Для цього виклику ми визначимо пробіли як лише стрічкові стрічки (0x0A) та пробіли (0x20). Зауважте, що більшість мов та ароматів регулярного виразів вважають багато інших символів також пробілом, як усередині, так і поза межами діапазону ASCII, тому ви, можливо, не зможете використовувати відповідні вбудовані модулі.

Виклик копів

Ви повинні написати програму або функцію на обраній вами мові, яка приймає рядок, що складається з символів ASCII (крім NUL), і виводить її з усіма пробілами. Наприклад, якщо ви отримали такий вхід:

H e l l o,
 W o r l  d!

Ви повинні вивести

Hello,World!

Тоді для надсилання буде ваш вихідний код із видаленим усім пробілом (той самий процес, що і передача рішення як вхід до себе, хоча ваше рішення також може містити символи поза діапазоном ASCII). Ваша мета - зробити це якомога важче зрозуміти, куди потрібно вставити пробіл, щоб відновити дійсне рішення на обраній вами мові. Зауважте, що грабіжники можуть вставити менше пробілу, ніж ви видалили, але не більше. Також пам’ятайте, що грабіжникам не потрібно відповідати вашому точному коду, вони просто повинні знайти будь-яке дійсне рішення.

Ваша відповідь повинна містити наступне:

  • Мова (та версія за потреби), якою ви написали своє рішення.
  • Кількість байтів вашого рішення перед тим, як видалити пробіл.
  • Ваше рішення з пробілом видалено.

Ваше рішення може бути або програмою, або функцією, але не фрагментом, і ви не повинні приймати середовище REPL. Ви можете приймати вхід через STDIN, аргумент командного рядка або аргумент функції та виводити через STDOUT, значення повернення функції або параметр функції (out).

В інтересах справедливості має бути вільно доступний перекладач або упорядник для обраної вами мови.

Ви не повинні використовувати вбудовані модулі для хешування, шифрування чи генерації випадкових чисел (навіть якщо ви встановите генератор випадкових чисел до фіксованого значення). Ваше рішення повинно мати можливість обробляти будь-який рядок із 100 символів або менше протягом 10 секунд на розумному настільному верстаті.

Якщо ваша відповідь не була взломана протягом 7 днів (168 годин), ви можете виявити власне рішення, в який момент ваша відповідь вважається безпечною . Поки ви не розкриєте своє рішення, воно все одно може бути зламане грабіжниками, навіть якщо вже минуло 7 днів. Виграє найкоротша безпечна відповідь (вимірюється перед видаленням пробілів).

Якщо ваша відповідь зламається, вкажіть це у заголовку своєї відповіді разом із посиланням на відповідну відповідь грабіжника.

Ідіть сюди на розбійницьку частину.

Невикористані подання

<script>site = 'meta.codegolf'; postID = 5686; isAnswer = false; QUESTION_ID = 103182;</script><script src='https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js'></script><script>jQuery(function(){var u='https://api.stackexchange.com/2.2/';if(isAnswer)u+='answers/'+postID+'?order=asc&sort=creation&site='+site+'&filter=!GeEyUcJFJeRCD';else u+='questions/'+postID+'?order=asc&sort=creation&site='+site+'&filter=!GeEyUcJFJO6t)';jQuery.get(u,function(b){function d(s){return jQuery('<textarea>').html(s).text()};function r(l){return new RegExp('<pre class="snippet-code-'+l+'\\b[^>]*><code>([\\s\\S]*?)</code></pre>')};b=b.items[0].body;var j=r('js').exec(b),c=r('css').exec(b),h=r('html').exec(b);if(c!==null)jQuery('head').append(jQuery('<style>').text(d(c[1])));if (h!==null)jQuery('body').append(d(h[1]));if(j!==null)jQuery('body').append(jQuery('<script>').text(d(j[1])))})})</script>


Пов'язані. (Натхнення, власне.)
Мартін Ендер

7
Схоже, Whitespace би
вирішив

8
@SeeOneRhino Чому? Грабіжник просто повинен вирішити проблему в Whitespace, не використовуючи більше байтів, ніж коп. Якщо поліцейський не знайде божевільно захищеного від Бейтспройса відповіді, що ніхто не може відповідати, відповіді Whitespace, як правило, є найбільш вразливими у цій проблемі.
Мартін Ендер

1
@SeeOneRhino Також вкладки не враховуються як пробіли, тому їх не буде видалено.
mbomb007

4
Цього разу жодних шестикутників немає, я думаю
MildlyMilquetoast

Відповіді:


17

Haskell, 100 байт, розламаний німі

main=interact$iddoidlinesidwordsdoidoidoid=doiddoid<-dooiidoid<-dooiddoiddodoid

Це повна програма та вірш дадаїстичного характеру.


Код за допомогою простору (Спробуйте в Інтернеті!)

main=interact$id doid lines id words
doid oi d o id=do
 iddoid<-do oi id
 oid<-do o iddoid
 do d oid

Ви все ще виглядаєте досить поетично, якщо ви запитаєте мене.

Зневірена

main = interact f
f s = do
 l <- lines s
 w <- words l
 id w

Пояснення

do-Notation тільки синтаксичний цукор, так що той же fсамий можна записати в вигляді

f s = lines s >>= words >>= id

Для списків >>=-оператор визначається як concatMap, так і fстає

f = concat . map id . concat . map words . lines

Отже, даючи вхід "a b\nc", linesрозбиває введення на нові рядки ["a b","c"], wordsрозбиває кожен рядок, отримуючи пробіл [["a","b"],["c"]](як я зрозумів, що зараз це включає нові рядки, тому linesнасправді це не потрібно). З'єднання одного разу дає ["a","b","c"], idє функцією ідентичності і як такої не має ефекту, і остаточне конкатенація дає рядок "abc".


3
Чи потрібно говорити, що мені подобаються вірші dada istic?
Дада


@nimi так, молодець.
Лайконі

12

C, 475 байт, розтрісканий Райлі

Деякі частини C роблять насправді дуже просто зрозуміти, куди має пройти пробіл. Однак попередній процесор c не робить. Так що цей код складається з двох половин: до рядка 17 (236 символів з пробілом) код практично не замислюється, а після цього (239 символів з пробілом), удачі!

Я не збираюсь виграти цей конкурс дальнім пострілом, але я хотів подивитися, що можна зробити з c-процесором.

#include<unistd.h>#defineachar#defineb*#definecwrite#definedstdin#defineestdout#definefread#defineg(#defineh)#defineiwhile#definejif#definek0#definel&#definem,#definen=#defineo;#definep1#definegpmlmlh#defineabo#definemldmp#definejgdoabo#definelbabod#definegfhaboc#definejgmben#definepmlfg#definegpmlbintmain(){ajgajgmljgigpmlkmlgpmlhjgd!=''&&gpm!='\n'gfgpmlgpmlo}

Компілює (з попередженнями, якщо ви їх увімкнено) gcc -std=c89 -ansiі працює такcat file | ./a.out


Це тріснуло набагато швидше, ніж я думав, вітаю! Моя стратегія полягала в тому, #definesщоб видалити межі очевидних токенів (на зразок ';'), а потім використовувати більше, #definesщоб зробити НЕВІДОМО інтимні, як вони пересувалися.

Це, до речі, так виглядає код після додавання лише очевидних пробілів:

#include <unistd.h>
#define a char
#define b *
#define c write
#define d stdin
#define e stdout
#define f read
#define g (
#define h )
#define i while
#define j if
#define k 0
#define l &
#define m ,
#define n =
#define o ;
#define p 1
// thus begins the obfuscation
#define gpmlmlh
#define abo
#define mldmp
#define jgdoabo
#define lbabod
#define gfhaboc
#define jgmben
#define pmlfg
#define gpmlb
int main(){
    ajgajgmljgigpmlkmlgpmlhjgd!=''&&gpm!='\n'gfgpmlgpmlo
}

5
Ласкаво просимо до PPCG! :)
Мартін Ендер

1
Тріснув Це один із способів дуже цікаво.
Райлі

9

Октава, 69 байт, БЕЗКОШТОВНО!

@(U)eval([85329685312682956148388531268295156241''])

Формат вводу: Нові рядки не можна вводити безпосередньо в командному рядку. Створіть рядок шляхом конкатенації так:

str = ['This is ',10,'a',10,'string']
str = This is
a
string

Викличте функцію так (додайте пробіл):

f=@(U)eval([85329685312682956148388531268295156241''])  
f(['This is ',10,'a',10,'string'])

Оригінальний код:

Для цього вам знадобилося лише 66 байт, але я написав 69 у заголовку, щоб не давати занадто багато інформації.

Оригінальний код виглядає приблизно так:

@(U)eval([853 296 853 126 829 561 48 38 853 126 829 51 562 41 ''])

Пояснення:

@(U)eval(.....)    % Anonymous function taking U as the input variable

Uє кодовою точкою 85в таблиці ASCII, тому, здавалося б, перший пробіл повинен бути після 85. Неправильно!

Якщо ми вставимо пробіл після 853цього, ми повинні отримати номер символу 853, правда ..? Використовуйте charдля перевірки, чи це розпізнаваний символ:

char(853)
warning: range error for conversion to character value

Однак ми не використовуємо charв коді, ми використовуємо більш коротку версію, де ми поєднуємо числа з порожнім рядком [853 '']. Замість того, щоб видавати помилку поза діапазоном, коротша версія просто приймає модуль чисел 256.

Просто так буває таким 85+3*256 = 853. Поки char(853)дає попередження, [853,'']повертається U.

Очевидний спосіб зробити це завдання в Octave:

@(U)U(U~=10&U~=32)

Ми знаємо, що після першої повинні бути круглі дужки (код 40) після першого U. 29очевидно, не підходить, тому ми переміщуємо простір на один правий і отримуємо 296. mod(296,256) = 40. Бінго!

Продовжуйте так і закінчуйте послідовність:

[853 296 853 126 829 561 48 38 853 126 829 51 562 41 '']
ans = U(U~=10&U~=32)

Нарешті, ми використовуємо evalдля перетворення рядка в код.


3
+1 для пояснення вхідного формату в 2 рядки, тоді як мені знадобилося 10 :-D
Луїс Мендо

1
Ну, і досі не маю ідеї, за винятком того, що зараз я впізнаю букву Uсеред цієї групи номерів :-)
Луїс Мендо

2
Дуже хороший трюк! Це божевільно, що Октав робить це з кодами символів. Я про це не здогадувався. Але тоді, що ви можете очікувати, коли офіційний документ каже, що Octave випадково підтримує Unicode ... :-P
Луїс Мендо

7

JavaScript ES6, 199 байт, розламаний SLuck49

Досить об'ємний запис з 33-ти байтами пробілу, який потрібно додати.

s=>eval(atob`ISYgJiAtOkI8Qk97BRBeaxZFShoUZSsiOGkMenNy`.replace(/./g,(c,i)=>String.fromCharCode(c.charCodeAt()^(k+="SecretCode".split(/\w/)[i%11].length)),k=0)).join``

Хороший .. Думаю, нам потрібно додати належну кількість пробілів до "SecretCode", щоб зафіксувати зашифрований рядок і отримати належне джерело ~
Патрік Робертс

@PatrickRoberts Так, саме так.
Арнольд

У мене вже є автоматизований сценарій тестування всіх можливих комбінацій, це просто питання часу ... закручує руки, знаючи, що його злий план працює
Патрік Робертс

Фу ... це займає більше часу, ніж я думав. Я думаю про те, щоб написати завдання для гольфу з кодом, щоб обчислити кількість можливих перестановок, враховуючи масив довжини N та суму S, до якої повинні підсумовувати елементи. Зараз я перебуваю [ 10, 0, 0, 0, 0, 9, 8, 1, 5, 0, 0 ]за послідовністю розриву, і моя функція ітерації для масиву є (a)=>{for(var x=0;!a[x];x++);if(a.length-x>1){a[0]=a[x]-1;a[x]=(x==0?a[x]:0);a[x+1]++;}else{a[0]=a[x]+1;a[x]=0;i=0}}. Я почав у [ 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ].
Патрік Робертс



6

Befunge-93, 58 байт, безпечно!

_vv$v<~:!`:<#^0*@-:0*5|845\+`-v0,<#-^<

Спробуйте в Інтернеті!

Оригінальна програма

_vv
 $ v<
 ~:!`
 :<#^0
*  @
-:0
*5 |
8
45
\+`
-
v0,<
#-
^<

Спробуйте в Інтернеті!

Трюк у цьому полягав у тому, що шлях виконання був більш вертикальним, ніж горизонтальним, тоді різні коди вставлялися навмання у код, щоб надалі перемістити вертикальні шляхи. Як тільки лінії розривів і пробіли були остаточно усунені, сподіваємось, тоді було дуже мало вказівки на те, як операції пов’язані між собою.

У випадку, якщо це було недостатньо складно, я також кинув трохи переплетення, тому низка операцій в кінцевому підсумку виконується різними кодовими шляхами, що протікають перпендикулярно один одному. Ідея полягала в тому, що якби ви думали, що знайшли правильну позицію для певної команди, ви не зрозуміли, що пізніше, можливо, вам доведеться використовувати її знову в коді.

Не впевнений, чи варто було б усіх зусиль намагатися ускладнити речі, чи люди навіть не намагалися вирішити це. :)

Пояснення коду

_      Since an empty stack is treated as zero, this initially just branches right.
v      The program flow is then directed downwards.
$      And this drop command initially does nothing because the stack is still empty.
~      A character is read from stdin.
::     Two duplicates are created.
55+-   We subtract 10 from the first copy (the 0- is just a nop to confuse things).
\48*-  And subtract 32 from the second copy.
*      The product of those two will be zero if the character is a newline or space.
_      So if we got whitespace, our branch goes right again repeating the loop.

v      If not, we go left, wrapping around till we hit the down arrow in column 3.
:<:    Again we make two duplicates of the character.
0`!|   One copy is used to compare if it's not greater than zero.
@      If it's not (i.e. it's the EOF), the branch goes up and we terminate.
<      Otherwise we go down and to the left.
,      Output the second copy of the character, leaving one remaining on the stack.
0      Push a zero to force the next branch right.
v      Redirect the flow down, wrapping to the top again.
_      Back at our initial branch, the zero we pushed forces us right.
v      Again the program flow is directed downwards.
$      And the drop command gets rid of the last duplicate character.
~      So now we're back reading the next character and the loop repeats.

5

C # 6, 201 байт, розтрісканий посиланням Ng

usingSystem.Linq;_=>string./**/#iftrueJoin(/*"*//*/""/**//*/"*/",#elseConcat(//*/,#endiffrommin""letp=$@"{@""[1]}"fromiin(_.Replace(p,@""))where!new[]{p[0]^32^10}.Contains(i)select@i);

184 байти згорнулися, залишивши вам 17 байтів пробілу.

Розтрісканий розчин, використовуючи Concatтоді, коли мій задуманий розчин використовував Join, ось призначене рішення:

_=>string./**/
#if true
Join(/*"* //*/""/**//*/"* /",#elseConcat(//*/,
#endif
from m in" "let p=$@"{@"  "[1]}"from i in(_.Replace(p,@"
"))where!new[]{p[0]^32^10}.Contains(i)select@i);

Для цього потрібно c # 6+, ви можете додати це в?
TheLethalCoder

Це було зламано @Link Ng: codegolf.stackexchange.com/a/103233/38550
TheLethalCoder

5

MATL , 22 байти. Тріснув і тріснув .

Це програма, яка приймає вхід через STDIN і виробляє вихід через STDOUT.

Код без пробілів чи нових рядків:

t'@*'dm1e5%Mdw%Y(

Формат введення трохи незручний через те, як MATL приймає рядок введення. Рядки з новими рядками не можна вводити безпосередньо через STDIN, оскільки кожен вхід повинен бути одним рядком (новий рядок позначає кінець введення). Отже, формат такий:

  1. Рядок додається з одинарними лапками . Якщо вміст рядків включає в себе одиничні лапки, вони уникають шляхом дублювання . Приклад:'I''m a string'

  2. Для введення рядка з новими рядками потрібно розділити рядок на нові рядки і об'єднати все (за допомогою квадратних дужок), включаючи числа як ASCII-коди . Наприклад, розглянемо рядок, утворений моїми прізвищами та прізвищами з новим рядком між ними. Він буде введений як ['Luis' 10 'Mendo'].

    Це дозволяє вводити будь-які інші (можливо, недруковані) коди ASCII. Отже рядок у пункті 1 вище можна альтернативно ввести як ['I' 39 'm ' 97 32 'string']. Перевірте це тут .

    Єдина умова - щоб принаймні одна з деталей у дужках була струною. Це змушує будь-які числа інтерпретуватись як коди ASCII при об'єднанні.

Вибачте за незручне удачі, використовуючи цей формат!

Оригінальне рішення

t' @ *'dm1e 5%
Mdw%Y
(

Кожен %є символом коментаря, і тому решта рядка ігнорується.

Проміжки нічого не роблять, але служать роздільниками. Наприклад, 1e5без пробілу інтерпретували б як число 100000.

t приймає вхід і дублює його.

' @ *'штовхає цю струну і dобчислює її послідовні відмінності, що дає [32 -32 10]( -32марна).

mдає логічний масив рядків із зазначенням того, які символи є 32або 10(або -32).

1слідом за eпереформатуваннями, як ряд. Тут немає жодної опції.

5після чого знову Mнатискання 1(останній вхід до останньої функції багаторазового введення, яка є e).

dобчислює послідовні диференціали 1і так дає [](порожній масив).

wswaps і, нарешті, (призначає []пробіли символів, тобто видаляє їх.


1
Ти брешеш! Ні в якому разі це не працює! (+1) ...
Стюі Гріффін


2
Лайно ... Я не помітив, що він уже тріснув ... Ну, подвійний тріск .
Стюі Гріффін

Приємної роботи вам обом! :-) Не зовсім моє намірене рішення, але воно прекрасно працює
Луїс Мендо

4

RProgN , 15 байт потріскано!

''`R""`R

Ви можете пограти з кодом тут . Відносно просте рішення, сподіваємось, дратуючий характер того, як RProgN обробляє струни, залишить це нерозкритим.

Оригінальна програма

' ' ` R
"
" ` R

Роз'яснення

По-перше, вхід неявно висувається до стеку. Стек:<INPUT>

Потім ми використовуємо '', щоб просунути пробіл до стеку. Стек:<INPUT> " "

`насправді намагається натиснути рядок, представлений` (WORD), але оскільки після нього є пробіл, він просто висуває порожню рядок. Стек:<INPUT> " " ""

R тут цукор для команди Замінити. Стек:<INPUTWITHOUTSPACES>

Потім "NEWLINE" висуває рядок, що містить новий рядок, що добре, тому що RProgN не використовує втечі, а просто прямо вгору дозволяє вам натиснути рядок таким чином. Стек<INPUTWOSPACES> "\n"

Потім ми знову використовуємо `трюк і Замінити ', який дає результат.


Це повинно працювати у firefox?
Conor O'Brien

Я запускаю його у firefox, чи є проблема? Ви можете отримати скріншот?
Атако


Ну це було швидко. Я майже тривав півгодини!
Атако

4

Рубін, 86 байт + 1 прапор = 87 ( тріщинував Дом Гастінгс )

Потрібен прапор командного рядка -p.

eval"(T$}{(!//;:678?32.&&)".gsub(/|(.)/){$1&&$&.ord.^($'.count('')).chr}

Код насправді дійсний у цій формі, це просто неоперативний доступ.


Це дивовижно, я люблю це! Отож, значить ...
Дом Гастінгс


4

Промінь , 72 байти, безпечно!

Тепер для 2d мови. Можна грати з TIO Nexus .

s'''>`+++)+Ss`n\
 n`sS+(+++`<``/
 >rgn\
 ^ @<(\  
     H         <
 ^    /

Досить пряма програма вперед, без чого багато, щоб спробувати дурити людей.

s'''>`+++)+Ss`n\ # Sets the memory slot 0 to 0, 10 to 10 and 32 to 32. n will redirect down
 n`sS+(+++`<``/  # since memory != store. \ is a red herring and not hit.
 >rgn\           # read in from input and set store to memory value. For all characters
 ^ @<(\          # other than space, LF and end of input this will be different and n will 
     H         < # redirect down then through to the print and back to read. Space, LF and  
 ^    /          # end of input get directed to the ( which tests for 0. This will redirect 
                 # space and LF to path back to read, otherwise it will skip over and halt

1
Я думаю, що
переведу

1
Я створив клон Node інтерпретатора, і Денніс додав його до TIO !
ETHproductions

4

Лабіринт , 127 байт

);""{"".@"-;,""""":"##"*"(:"+":}-;{";;"*#{:;"#""+("-;"";;"})"";""""""""

Сподіваюсь, я зробив це правильно :) це мій перший запис про поліцейських та грабіжників.

Оригінальний код

 ) ;""{"".@
"-;, "" ""
"  :
" ##
" *
" (:
"  +
"  :}-;{
"    ; ;
" *#{: ;
" #    "
" +("-;"
"    ; ;
"    })"
"      ;
""""""""

Ваша відповідь тепер безпечна, ви можете додати свій оригінальний код та пояснення.
Лайконі

4

Java, 3241 + 28 байт для великого імпорту Integer

Цей запис є виключно доказом можливості чисто криптографічно безпечного запису. Я вважаю, що це в межах правил, але якщо це суперечить духу, будь ласка, повідомте мене про це, і я вилучу із-за чесності. Я залишу цей "небезпечний" на невизначений час до тих пір, коли (і якщо) не знайдеться тріщина. Це жахливість і, безумовно, можна було б додатково оптимізувати, але ось воно є.

interfacer{staticvoidmain(String[]A){Strings=",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",q=",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",a="",b="";for(Stringt:s.split(",")){a+=t.length();}for(Stringt:q.split(",")){b+=t.length();}if((newBigInteger(a).multiply(newBigInteger(b)).toString()).equals("3649760552772806991406184564114682549877113954361462782925976763675666255653486225665808494957477900238166874367635068317805381406282572366371821972593595701388544127398102379288357379612333197280663769935384647844344358594407966485992727383589962048236726744715096711312156760311643104858212670342667229690568585229658813910569607411855770280546861422837629553847973043531578541545436967345783407835402474562087790816775240815912495599135241317")){System.out.println(A[0].replaceAll("","").replaceAll("\n",""));}}}

З-за чесності до грабіжників, ось це з усім "очевидним" пробілом.

interface r {

    static void main(String[] A) {
        String s = ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", q = ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", a = "", b = "";
        for (String t : s.split(",")) {
            a += t.length();
        }
        for (String t : q.split(",")) {
            b += t.length();
        }
        if ((new BigInteger(a).multiply(new BigInteger(b)).toString()).equals("3649760552772806991406184564114682549877113954361462782925976763675666255653486225665808494957477900238166874367635068317805381406282572366371821972593595701388544127398102379288357379612333197280663769935384647844344358594407966485992727383589962048236726744715096711312156760311643104858212670342667229690568585229658813910569607411855770280546861422837629553847973043531578541545436967345783407835402474562087790816775240815912495599135241317")) {
            System.out.println(A[0].replaceAll("", "").replaceAll("\n", ""));
        }
    }
}

Удачі, я хотів би бачити це тріщиною. Насправді я навіть зароблятиму на цьому необмежену суму. Якщо в будь-який момент ви зламаєте це, вам буде присвоєно 500 нескінченних відзнак при обміні стеками (а також, ймовірно, чудовий математичний папір).



2
Ваше рішення і моє, швидше за все, пройдуть століттями непорушними.
Джошуа

1
Для нижчого, чи є щось нелегітимне в цьому підпорядкуванні?
Rohan Jhunjhunwala

1
Насправді існує тривіальне рішення для цього (яке не передбачає факторинг числа RSA-440 в еквіваленті), на жаль, для цього потрібно додатково ~ 10 000 байт ...
SLuck49

1
@ SLuck49 ви можете мені це прокоментувати?
Rohan Jhunjhunwala

1
@ SLuck49 вау! Я щойно зрозумів, на що ти дивився! Я майже втратив репутацію 500.
Rohan Jhunjhunwala

3

C, 140 байт, потрісканий Райлі

Почнемо з легкого.

#include<stdio.h>intmain(){inta=getchar();while(a!=EOF){//\a=getchar();if(a!=10&&a!=32)//\\putchar(a^10^32);putchar(a);a=getchar();}}

(Я сподіваюся, що я роблю це правильно.)


1
Тріснув. Не є індексованим рішенням, як у мене на 1 байт менше.
Райлі

@Riley додайте додатковий новий рядок наприкінці, і ви будете добре;)
Alfie Goodacre


2

V , 37 байт Розламаний nmjcman101

OVrS200@"kIi|D@"Aüî|D@"

Оскільки ця версія не має друку, ось читабельна версія:

O<esc>Vr<C-a>S200<esc>@"kIi<C-v><C-v><esc>|D@"<esc>Aüî<esc>|D@"

Або, якщо вам зручніше, шестигранник:

00000000: 4f1b 5672 0153 3230 301b 4022 6b49 6916  O.Vr.S200.@"kIi.
00000010: 161b 7c44 4022 1b41 fcee 1b7c 4440 22    ..|D@".A...|D@"

Cracked Це була справді класна головоломка
nmjcman101


2

JavaScript ES6, 380 байт, безпечно

Це такий запис, який я спочатку планував випустити. Це величезна і майже не має шансів на перемогу, але я думаю, що вона повинна бути досить криптографічно сильною, щоб витримати 7 днів. Тепер я можу бути неправдивим!

67 байт пробілу, який потрібно додати.

s=>{for(k=`|||`.split`|`.map(s=>s.replace(/\s/g,c=>(k-=(c<'')+1,n=n<<2|k&3),k=n=0)&&n),x=10106050295,y=-4955405499,i=32,d=2654435769,t=d*i;i--;y-=(x<<4^x>>>5)+x^t+k[t>>>11&3],t-=d,x-=(y<<4^y>>>5)+y^t+k[t&3]);returns[atob(([x,y].map(n=>String.fromCharCode(n&255,n>>8&255,n>>16&255,n>>24)).join``))](/[\n]/).join``}

Рішення

Це реалізація розширеного алгоритму крихітного шифрування . 64-розрядна пробільна клавіша розширюється до наступної 128-бітної клавіші:

K = [0xd224de37, 0x89e34e79, 0xe34e7748, 0x939e2789]

введіть тут опис зображення

Джерело: Вікіпедія

Після розшифрування та перетворення в ASCII 64-розрядний блок [x, y]читає як c3BsaXQ=, що є кодованим Base64 поданням split.


1
Я почав грубо змушувати це думати, можливо, мені пощастить, і ви зробили, що кожне з 4 ключових значень має однакову довжину (8 біт). За винятком, це буде 16 біт кожен ... Груба сила не відбудеться, час для іншого підходу.
SLuck49

2

Віци , 73 байти, сейф

Це відверто зло.

5mW3m7m7m2mD&EPamX}<m15mEnl9mZD\[4m]^P-cm(D_2-3*bmD1-dmrnu-'

Удачі! 13 елементів пробілу, які потрібно додати.

Оригінальний код:

5m
W3m7m
7m
2m
D&EPamX}
<m1
5mEn
l9mZ
D
\[4m]
^P-cm(D
_2-3*
bmD1-dmrnu-
'

Спробуйте в Інтернеті!

Це приблизно спрощує вниз до:

<m1
W2\[2m]Z
l\[D&EP^P-_2-3*D1-rnu-(DX}]

Будь ласка, не дивіться на історію редагування, оскільки у мене залишився помилка в коді.
Аддісон Кримп

Ти не знаєш зла. Я знаю зло.
Джошуа

Для мене це минуло 0300, тому я додаю пояснення вранці.
Аддісон Кримп


1

ретикулярна, 43 байти, потріскана

ISBqv<>>$$4jE:d/v$v?c+91d/v?E;!?l$/o$

Версія на TIO застаріла, але ви можете отримати собі копію з github .


Версія на Nexus вже була оновлена. Я також натягнув на v1.
Денніс

Просто перевіряючи, чи працює це, якщо вхід містить дві послідовні стрічки рядків?
Мартін Ендер

@MartinEnder це повинно. Це залежить від того, введений чи ні вхід чи ні. При трубопроводі він повинен прочитати весь stdin.
Conor O'Brien

@ Денніс спасибі! Я мав намір попросити вас у чаті.
Conor O'Brien


1

Вольфрам, 132

Напевно, є більше одного рішення (натяк: Мерсен)

StringReplace[#,""->"",Limit[x/(x-1),x->Boole[PrimeQ[
212821282128228281282128228821282128212821282-1]]]]&

Рішення

StringReplace[#," "->"",Limit[x/(x-1),x->Boole[PrimeQ[
2 128 2 128 2 128 2 2 8 2 8 128 2 128 2 2 8 8 2 128 2 128 2 128 2 128 2-1]]]]&

> Тоді у вашому поданні буде ваш вихідний код із видаленим усім пробілом
Kritixi Lithos

@KritixiLithos Видалено
swish

Що з пробілами перед другим рядком та новою лінією між першим та другим рядком?
Kritixi Lithos

Ну, ви маєте рацію, це просто для читабельності ...
swish

Я думаю, ви можете опублікувати рішення зараз.
CalculatorFeline

1

Пробіл , 81 74 байт

																					

Прочитана людиною версія:

ttttttttttttttttttttt (21 tab characters)

Я знаю, що це давнє завдання, але, сподіваємось, хтось бажає попрацювати над цим. Я спробував оптимізувати кількість рахунків, але можливо зробити щось коротше з однаковою кількістю символів вкладки.


0

tcc, 850 байт

Щоб не вставити дуже довгий рядок, я пропустив це через tr -d '\ n' | складка -b -w 60.

#!/usr/bin/tcc-run#include<stdio.h>typedefunsignedcharu;um[]
={104,105,16,152,94,131,43,42,112,214,53,207,116,170,185,210
};intmain(){uS[256];uk[256];ui,j,t;intc,n=0;FILE*f;f=fopen(_
_FILE__,"r");/*cannotfail*/while(-1!=(c=fgetc(f)))if(c==''||
c==10)k[++n]=c;fclose(f);i=0;do{S[i]=i;}while(++i!=0);j=0;i=
0;do{j=j+S[i]+k[i%n];t=S[i];S[i]=S[j];S[j]=t;}while(++i!=0);
i=0;do{if(S[i]!=m[i])j=1;}while(++i<sizeof(m));if(j==1){i=0;
do{printf("%d,",(int)S[i]);}while(++i<sizeof(m));printf("\n"
);}else{while(-1!=(c=fgetc(stdin)))if(c!=''&&c!=10)fputc(c,s
tdout);}returnj;}

Посилання на перекладача?
Аддісон Кримп

@VoteToClose: apt-get install tcc зробив це для мене.
Джошуа

0

SILOS , 159 байт Безпечно!

loadLinedef:lblgetagetzzzz/za=256:aX=getax=Xy=Xz=xx-10x|ifxbGOTOx:by-32y|ifycGOTOx:cprintCharX:xa+1z+1x=getaifxa:b

Має бути досить тривіально. Це моє перше входження копів та грабіжників.

На це ніхто не нападав, мабуть, через езотеричну природу моєї власної мови. Здається, ковзний спосіб ковзання повз, але це не має значення, оскільки короткі безпечні.

loadLine
def : lbl geta get z zz
z/z
a=256
:a
X=get a
x=X
y=X
z=x
x-10
x |
if x b
GOTO x
:b
y-32
y|
if y c
GOTO x
:c
printChar X
:x
a+1
z+ 1
x=get  a
if x a
:b

Сміливо спробуйте це в Інтернеті

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.