Грабители - квадратный квадратный корень


18

Задача: Взломать скремблированный код для умножения квадратного корня из целого числа n на квадрат этого!

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

Правила:

  • Вы можете изменить только порядок символов в исходном коде.
  • Безопасные ответы больше не могут быть взломаны.
  • Другие правила, упомянутые в ветке полицейских
  • Пожалуйста, отредактируйте ответ, который вы взломали

ПОБЕДИТЕЛЬ: Emigna - 10 подчиненных (возникли проблемы с подсчетом)

Похвальные грамоты: Notjagan, Plannapus, TEHTMI

Ответы:



9

JavaScript (ES7), Нил

_26_=>_26_**6.25**.5

Самым сложным, конечно, было выяснить, что делать со всеми дополнительными персонажами. (А также не публиковать это решение в неправильной ветке, как я это сначала сделал случайно. Упс ...)


1
@SethWhite: Мне пришлось использовать все символы, которые Нейл использовал в своем закодированном коде, иначе это не было бы действительным взломом.
Ильмари

Как это работает?
Арджун,

@Arjun _26_=>определяет анонимную функцию, принимающую один названный параметр _26_(переменные могут начинаться с подчеркивания, но не с цифры). Затем остаток просто использует , **как Math.pow()повысить вклад в степень 2,5 (6,25) 0,5 мощности.
Джо

Ах! Я думал, что это _26_было что-то особенное ES7. Не знал, что переменные тоже могут быть в этой форме! (Я никогда не видел переменную без алфавита). Это был очень умный подход @Neil. И вы были очень умны, чтобы взломать его! Имейте свои заслуженные +1! :)
Арджун



4

C ++ (gcc) , 100 байт, Mr. Xcoder

#include<math.h>
#include"iostream"
using namespace std;int main(){float n;cin>>n;cout<<pow(n,2.5);}

Попробуйте онлайн!


Отлично сработано! Пожалуйста, отредактируйте ответ, который вы взломали, потому что я не могу сделать это сейчас!
г-н Xcoder

Анонимный пользователь предложил изменить, чтобы сохранить 8 байтов, удалив usingи просто делаяint main(){float n;std::cin>>n;std::cout<<pow(n,2.5);}
Мартин Эндер

Сохраните еще один байт #include <cmath> вместо math.h. :)
zyndor

4

Хаскелл, Лев

x=exp.(2.5*).log

Точечная функция с именем x. Использование: x 4->32.0


4

Информ 7 , corvus_192

Круто, запись Inform7. :) Я просто должен был попробовать.

Я почти уверен, что это намеченное решение:

R is a room.

To f (n - number): say "[n * n * real square root of n]".

Обратите внимание, что это решение работает только в том случае, если оно скомпилировано с бэкэндом Glulx из-за использования real square root ofфункции.


Кстати, двойные кавычки и квадратные скобки на самом деле не нужны; просто say n * n * real square root of nбудет работать так же хорошо. Точки в конце команд также могут быть опущены; или мы могли бы сохранить первый период и вместо этого избавиться от новых строк. Другие части кода, которые мы могли бы урезать, включают в себя статью «а» перед «комнатой» и пробелы перед скобками и после двоеточия. К счастью, поскольку у нас есть запасная пара скобок, мы всегда можем использовать их, чтобы закомментировать все эти дополнительные символы. ;) Так что это тоже правильное решение:

R is room.To f(n - number):say n * n * real square root of n[
" a . "
]

Для интерактивного тестирования этого решения удобно добавить в код что-то вроде следующего тестового набора:

Effing is an action applying to one number.
Understand "f [number]" as effing.
Carry out effing: f the number understood.

После компиляции и запуска программы вы можете напечатать, например, f 4. f 6. f 9. f 25в >командной строке и получить что-то вроде следующего:

Welcome
An Interactive Fiction
Release 1 / Serial number 170404 / Inform 7 build 6L38 (I6/v6.33 lib 6/12N) SD

R

>f 4. f 6. f 9. f 25
32.0
88.18164
243.0
3125.0
>

Кстати, я только что заметил, что Inform (или, скорее, Glulx) округляет последнее десятичное число f 6неправильного: правильное значение гораздо ближе к 88.18163, чем к 88.18164. К счастью, я не думаю, что это влияет на правильность решения (ий), тем более что в задаче указывалось «любой механизм округления на ваш выбор». :)


Я уверен, что я нашел скрипку Inform 7 некоторое время назад, но я не могу найти ее, когда я ищу. Вы знаете, есть ли где-нибудь онлайн переводчик?
Камбала

@Flounderer: я действительно не знаю ни одного. Конечно, есть онлайн (даже на основе JS) проигрыватели для байт-кода Glulx / Z-machine, созданного компилятором Inform 7, но я не знаю ничего, что напрямую брало бы простой исходный код Inform 7 и компилировало бы и запускало его онлайн. Компилятор / IDE довольно прост в установке; в Ubuntu Linux это так же просто, как и apt-get install gnome-inform7.
Илмари

4

Mathematica, Грег Мартин

f[y_]:=With[{x=
    #&@@{#(#)#^(1/(1+1))&@y,#&@@@{1^(1),-1}}
},Print[#,".",IntegerString[Round@#2,10,3]]&@@QuotientRemainder[1000x,1000]]

Спасибо за то, что оставили округление без изменений!

Объяснение: #(#)#^(1/(1+1))&@yделает основную работу умножая в yквадрате, он же y(y)и y«S квадратного корня y^(1/(1+1)). Этот #&@@@{1^(1),-1}бит просто мусор, чтобы использовать другие буквы, и #&@@выбирает полезный бит из мусора.


4

MATL , 12 байтов, Луис Мендо

10'U&+:'n/^P

Вычислить 10/4 = 2,5 с 4 исходя из длины строки. Используйте это как показатель степени. P здесь не работает.


4

Python 3, 44 байта, Кайл Гуллион

Те *были довольно обманчивы. Очень умно!

lambda i:i**(lambda o,r:o/r)(*map(ord,'i*'))

Из-за довольно ограниченного набора символов я был бы очень удивлен, если бы были какие-либо другие допустимые решения, кроме тривиального переименования или переупорядочения аргументов.


Вы меня хорошо сделали!
Кайл Гуллион,


3

Python 2, 60 байтов, Энтони Фам

print    (input()**(5.0/(2*5554448893999/5554448893840))-0)

Основан на отбрасывании символов с помощью деления с плавающей точкой в ​​Python 2 (по умолчанию для /целых чисел).


3

C, 50 байтов, Дейв

double b(float \ufa2d){return pow(\ufa2d,25e-1);%>

Попробуйте онлайн!

Для этого требуется -lmфлаг компилятора, но я не знаю, как можно было бы решить это без него.


правильно, и почти точно, что у меня было (переменная была названа \uad2fна моем). Отлично сработано; Я думал, что оставил там достаточно красных селедок, чтобы люди были заняты намного дольше! Также -lmмне не понадобился флаг, использующий Clang (я бы об этом упомянул!), Но вы правы, строго говоря, это необходимо.
Дейв

3

R, Flounderer

Это трещина 33-байтового решения @Flounderer

scan()^(floor(pi)-1/2)-sin(7*0e1)

Использование:

> scan()^(floor(pi)-1/2)-sin(7*0e1)
1: 4
2: 
Read 1 item
[1] 32
> scan()^(floor(pi)-1/2)-sin(7*0e1)
1: 6
2: 
Read 1 item
[1] 88.18163
> scan()^(floor(pi)-1/2)-sin(7*0e1)
1: 9
2: 
Read 1 item
[1] 243
> scan()^(floor(pi)-1/2)-sin(7*0e1)
1: 25
2: 
Read 1 item
[1] 3125

Да, это не предполагаемое решение, которое вовлечено sin(pi), но, к сожалению, оно работает! +1
Камбала

Это былоscan()^(-floor(-sin(pi)*2e17)/10)
Камбала

3

RProgN 2, ATaco

]2^\š*

По-видимому, StackExchange нужны дополнительные символы, так что вот и все.


Мое решение было ]š\2^*, но они оба работают одинаково.
ATaco

3

Ходор, 198, этот парень

Walder
Hodor?!
hodor.
Hodor, Hodor Hodor Hodor Hodor Hodor Hodor Hodor, Hodor Hodor,
hodor,
Hodor, Hodor Hodor Hodor Hodor Hodor Hodor, Hodor Hodor,
Hodor, Hodor Hodor Hodor, hodor!,
HODOR!!
HODOR!!!

Объяснение:

Start
read input into accumulator
copy accumulator to storage
Do math, option 7(nth root), n=2
swap storage and accumulator
Do math, option 6(nth power), n=2
Do math, option 3(times), storage
output accumulator as a number
end

примечание: мне пришлось внести некоторые изменения в интерпретатор get, чтобы он работал на моей машине (опубликованная вами, похоже, не принимает строчную букву h, кроме прочего)

Кроме того, мне кажется, что у меня недостаточно представителей, чтобы комментировать, поэтому, если бы кто-то мог сообщить об этом @ Guy, я был бы признателен

Я думаю, что это исправило ошибку, код теперь начинается с Walder вместо Wylis, который добавляет дополнительный байт


Почти готово. Мне пришлось изменить ошибку в моем коде, так что ваш не совсем правильно.
caird coinheringaahing

исправили команду пуска
WWJ

Хотя у вас это было, но вы использовали другой метод, чем я, который использует такое же количество байтов. Ваш ответ будет делать то, что вы хотели, но он не такой, как мой. Кроме того, мне пришлось изменить имя из-за этого, поэтому я внес изменения в ваши сообщения.
caird coinheringaahing

для пояснения, это все еще расценивается как трещина, или я должен точно соответствовать?
WWJ

Я не совсем уверен. Я собираюсь спросить в комментариях. +1 твое решение заставляет меня задуматься!
caird coinheringaahing

3

C #, 172 байта, разнагул

Сложнее всего было понять, что делать со всеми остатками.

using System;using S=System.Console;class PMabddellorttuuv{static void Main(){S.Write(Math.Pow(double.Parse(S.ReadLine()),2.5));Func<double> o;int q=1,M=q*2,b,e;q*=(q*M);}}

Ницца! Я тоже застрял на остатках. Не думал добавлять их в название класса, дох! Молодец!
Emigna

+1 Не то, что я намеревался, но очень хорошее решение. ;)
Разнагул

3

EXCEL, 26 байтов Pajonk

=SQRT(A1)*A1^2/1/ISNA(IP2)

A1 в качестве входа IP2 содержит второй вход с # N / A Ошибка в этом случае ISNA (IP2) принадлежит 1

Для дополнительного () мы можем сделать это

=SQRT(A1)*A1^2/ISNA(PI(1/2))

Разрешен ли второй вклад в такой вызов?
pajonk

@pajonk Правила гласят: «Вы можете принимать входные данные любым стандартным способом», поэтому я предполагаю, что вы делаете этот трюк со вторым входом
Йорг Хюльсерманн,

@pajonk Я улучшил свой пост, возможно, вы допустили небольшую ошибку
Йорг Хюльсерманн,

Стандартный способ получения одного числа - это (я думаю) один вход. На мой взгляд, второй вклад будет несправедливым и противоречит правилам. PS Нет ошибки в количестве скобок.
pajonk

@pajonk Я не могу использовать комбинации с SIN и PI, потому что не хватает скобок. =SQRT(A1)*A1^2/SIN(PI()/2)Если вы устанавливаете #NA Error через форматирование или что-то еще, я бы увидел это как дополнительный второй вход. SQRT и ISNA - единственные две функции, которые имеют небольшой смысл. Но, пожалуйста, спросите человека, который разработал вопрос
Йорг Хюльсерманн

3

Python 3.6, 64 байта, мистер Xcoder

php38af4r2aoot2srm0itpfpmm0726991i=     (lambda x:x**2.5*1*1/1);

Может быть, не то, что было задумано, но работает;)

$ python3
Python 3.6.1 (default, Apr  4 2017, 09:36:47) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> php38af4r2aoot2srm0itpfpmm0726991i=     (lambda x:x**2.5*1*1/1);
>>> php38af4r2aoot2srm0itpfpmm0726991i(6)
88.18163074019441
>>> php38af4r2aoot2srm0itpfpmm0726991i(4)
32.0
>>> php38af4r2aoot2srm0itpfpmm0726991i(25)
3125.0

Недостаточно представителей, чтобы прокомментировать ответ ветки полицейских, извините ... Буду признателен, если кто-то сможет сделать это для меня, спасибо!


@Г-н. Xcoder, как сказано выше, не может комментировать ваше сообщение в ветке полицейских, извините за это :)
user4867444

Пришел, чтобы опубликовать аналогичное решение, from math import pi as pp0012223467899;f=lambda x:x**2.5*1*(1)/1просто чтобы увидеть, как меня избили. Я добавил ссылку на этот пост в ветке полицейских для вас.
Кайл Гуллион



3

Р, Flounderer

Это трещина 31-байтового решения @ Flounderer:

`[.`=function(`]`)`]`^`[`(lh,9)

Хорошо, это было сложно. Создает функцию с именем `[.`. Вызывается аргумент функции, `]`который повышается до степени 2,5 с использованием 9-го элемента встроенной lhвременной последовательности («регулярный временной ряд, дающий лютеинизирующий гормон в образцах крови с интервалами в 10 минут от женщины-человека», 48 образцов . ", который используется в качестве примера в одном из базовых пакетов R). lh[9]здесь на вершине он заменен его эквивалентом `[`(lh, 9). Де-обфусцированная путем замены fимени функции и nимени аргумента, функция становится f=function(n)n^lh[9].

Использование:

> `[.`=function(`]`)`]`^`[`(lh,9)
> `[.`(4)
[1] 32
> `[.`(6)
[1] 88.18163
> `[.`(9)
[1] 243
> `[.`(25)
[1] 3125

2

Python 2, 44 байта, Энтони Фам

print int(raw_input())**(0+000000000000.5*5)

Принимает входные данные из raw_input, конвертирует в int и повышает до 2.5


2

JavaScript, fəˈnɛtɪk

n=>n**("ggggg".length*2**(-"g".length))// ""((((((()))))))***,-...;;=====>Seeeeegggghhhhhhhhhilllnnnnnnorrrsstttttttttttu{}

Получает от 5/2 до 5 раз от 2 до отрицательной первой степени, где 5 и 1 были получены из длины строк. В некотором смысле взял легкий выход, комментируя посторонних персонажей.



2

05AB1E , 47 байт, Okx

).2555BFHIJJKKKPQRS``„cg…ghi…lsw…x}T…Áöž«‚¹n¹t*

Попробуйте онлайн!


Ах, я знал, что будет метод обхода, который я использовал для «защиты» кода. Отлично сработано!
Okx

@Okx: Да, 05AB1E очень сложно дополнить дополнительным кодом, не делая его обходным.
Emigna

Я посмотрю, смогу ли я сделать вас
хитрее

@Okx: С нетерпением жду этого :) У меня также есть идея, которую я могу попытаться реализовать после работы;)
Emigna

2

Огненный шар , 8 байт, окс

♥²♥1Z/^*

Объяснение:

♥²♥1Z/^*
♥²       Push first input squared.
  ♥      Push first input again.
   1Z/   Push 1/2
      ^  First input to the 1/2th
       * Multiply square and root

Не уверен, что это работает. В настоящее время у меня нет ноутбука на моем ноутбуке. :(


Я не думаю, что это сработает. Хотя это легко исправить, поэтому я дам вам ответ. Вам просто нужно поменять Z1INTO 1Z.
Okx

Я был уверен, что сделал ошибку там. Обновлено.
Роман Грэф,

2

Haskell , 64 байта, @nimi

product.(<$>(($(succ.cos$0))<$>[(flip<$>flip)id$id,recip])).(**)

Попробуйте онлайн! Это было весело. Сначала я обнаружил, product.(<$>(($succ(cos$0))<$>[id,recip])).(**)который ведет себя правильно и чем должен был flip flip <$> () $ id .где-то вписаться в него.



2

05AB1E , 22 байта, P. Knops

n¹t*qA9¥="'?:@->%#[{!.

Попробуйте онлайн!

объяснение

n      # square of input
   *   # times
 ¹t    # square root of input
    q  # end program

Остальные операции никогда не выполняются.
Мы могли бы сделать это и без того q, чтобы ?после вычисления и экранирования знака равенства, например, с '=.


1
Просто делал это для развлечения: D
P.

@ P.Knops: это лучшая причина :)
Emigna
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.