Копи - квадратний раз квадратний корінь


37

Примітка. Це нитка копів , де слід розмістити скремтований код. Ось нитка розбійників, де має бути розміщено розтріскане джерело та пов’язане з відповіддю поліцейського.


Завдання: Напишіть найкоротшу безпечну програму, яка помножує квадратний корінь на ціле число n на квадрат n

Це , тому правила такі:

  • У своїй відповіді розмістіть скрембліровану версію вихідного коду (символи повинні бути записані в будь-якому порядку). Зашифрована версія не повинна працювати!
  • Ви можете приймати введення будь-яким стандартним способом, те саме стосується і виводу. Жорстке кодування заборонено
  • Після того, як розбійник розірве код (якщо це трапиться), ви повинні зазначити, що ваш код зламаний у вашому заголовку, і додати спойлер до тіла вашої відповіді з вашим точним кодом
  • Те саме стосується безпечних відповідей (згадайте, що це безпечно, і додайте спойлер )
  • Код вважається безпечним, якщо ніхто не зламав його протягом 5 днів після публікації, і ви можете необов'язково вказати це у назві
  • Ви повинні вказати мову програмування
  • Ви повинні вказати кількість байтів
  • Ви повинні вказати механізм округлення у своїй відповіді (див. Нижче)

Можна припустити, що результат нижчий за 2 32 і n завжди позитивний. Якщо результат є цілим числом, ви повинні повернути точне значення з десятковою або без десяткової точки; інакше мінімальна десяткова точність становитиме 3 десяткових знаки з будь-яким обраним вами механізмом округлення, але може включати більше. Ви повинні вказати механізм округлення у своїй відповіді. Вам не дозволяється повертатися як дроби (чисельник, пари знаменника - вибачте, Баш!)

Приклади:

In -> Out

4 -> 32.0 (or 32)
6 -> 88.18163074019441 (or 88.182 following the rules above)
9 -> 243.0
25 -> 3125.0

Найкоротша безпечна відповідь до кінця квітня буде вважатися переможцем.


2
Пов'язані. (Ті ж правила CnR, різні завдання.)
Мартін Ендер

2
@MartinEnder Якщо завдання відрізняється єдиним завданням, то хіба це не дублікат?
Натан Меррілл

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

1
Успіхів усім! Я дуже радий, що ви вирішили це знову відкрити. З нетерпінням чекаємо цікавих відповідей!
Містер Xcoder

2
Я написав свій код, щоб працювати на вхід до 2 ^ 32 ... Ось чому я запитав про помилки округлення, я скоріше зійшов з позначки в цей момент
fəˈnɛtɪk

Відповіді:


2

05AB1E, 20 байт - безпечно

Ще один абсолютно інший підхід від моїх попередніх відповідей.

****++/133DDFPTs}¹¹Ð

Без округлення

Приклад виконання

In   -> Out
0    -> 0
4    -> 32.0
6    -> 88.18163074019441
25   -> 3125.0
7131 -> 4294138928.896773

Я не сумніваюся, @Emigna збирається тріщинувати це, але так, треба спробувати! :-D


Рішення

D1TFÐ*D¹3*+s3*¹+/*}P

Для цього використовується той факт, що ця послідовність:

u_0 = 1, u_ {n + 1} = u_n * (u_n ^ 2 + 3 x) / (3 u_n ^ 2 + x)

переходить до sqrt (x) і кубічно швидко в цьому (вибачте, не знайшов, як відформатувати математичні рівняння в PCG).

Детальне пояснення

D1TFÐ*D¹3*+s3*¹+/*}P
D1                   # Duplicate the input, then push a 1: stack is now [x, x, 1] (where x is the input)
  TF                 # 10 times (enough because of the cubic convergence) do
    Ð                # triplicate u_n
     *               # compute u_n ^ 2
      D              # and duplicate it
       ¹3*+          # compute u_n ^ 2 + 3 x
           s         # switch that last term with the second copy of u_n ^ 2
            3*¹+     # compute 3 u_n ^ 2 + x
                /    # compute the ratio (u_n ^ 2 + 3 x) / (3 u_n ^ 2 + x)
                 *   # compute u_n * (u_n ^ 2 + 3 x) / (3 u_n ^ 2 + x), i.e. u_{n+1}, the next term of the sequence
                  }  # end of the loop
                   P # compute the product of the whole stack, which at that point contains u_10 (a sufficiently good approximation of sqrt(x)), and the 2 copies of the input from the initial D: we get x ^ 2 * sqrt(x)

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


17

Python 3 , 44 байти ( тріщини )

'**:(((paraboloid / rabid,mad,immoral))):**'

Без округлення Точність з плаваючою точкою.


4
Давай, це заслуговує на більше очок, це так креативно! Є симетрія, і всі слова - це реальні слова.
Ерік Атголфер

Якби я не робив дурні помилки ... Тріщини
KSab

11

MATL , 12 байт ( розламаний @tehtmi )

'Un&0P'/^:+1

Без округлення; використовує плаваючу крапку.

Задумане рішення (відмінне від рішення, знайдене @tehtmi):

:&+n10U'P'/^

Пояснення

:&+ % Create a matrix of size n × n, where n is implicit input
n % Number of elements. Gives n^2
10U % 10 squared. Gives 100
'P' % 'P' (ASCII code 80)
/ % Divide. Gives 1.25
^ % Power. Implicit display



@tehtmi Дійсно! Молодці! Моє призначене рішення було іншим; Я щойно опублікував це
Луїс Мендо

10

Röda , 28 байт ( розтріскано від @tehtmi )

 (),.025^^cdfhnnnopprstuu{|}

Зверніть увагу на пробіл на початку. Округлення немає, але воно використовує числа з плаваючою комою, тому точність обмежена.


Це анонімна функція чи "повна" функція?
Kritixi Lithos

@KritixiLithos якщо поліцейський не хоче давати підказки, це не передбачається
Містер Xcoder


10

Perl, 42 байти (безпечно)

Є 41 байт коду та -pпрапора (інших прапорів немає).

/"/4~~r..rso4r<_$4va=eg1de|i/h0-&$c={}l+"

Результат не округлюється (а точніше - округляється до тієї ж точки, яку Perl мав би округлити, виконуючи $_ = (sqrt $_) * ($_ ** 2)).

Рішення:

$_=eval".i44<4}{|~"=~s/./chr-10+ord$\&/gre
(Без \до &- уцінок спойлера , здається, не любить $слід &)
Спробуйте його в Інтернеті!

Пояснення:

.i44<4}{|~є, $_**2*sqrtале з кожним символом замінюється символом його кодом ascii + 10. (код ascii $є 36, тому він стає .чиїм кодом ascii 46тощо).
Мета цього s/./chr-10+ord$\&/greполягає в тому, щоб скасувати це перетворення: він замінює кожен символ символом кодом ascii 10 нижче. ( chr-10+ord$\&Ймовірно , яснішим , як , chr(ord($\&)-10)де chrповертає символ , що відповідає коду ASCII, і ordповертає код ASCII , відповідний символ).
нарешті, evalоцінює цей рядок і, таким чином, обчислює результат, який зберігається в $_, який неявно друкується в кінці завдяки -pпрапору.


Правда. Я намагався швидко відредагувати, тому що побачив 4 повторних голосу та сподівався виправити питання до того, як 5-й був поданий. Якби питання було залишено в пісочниці до готовності, було б краще для всіх зацікавлених.
Пітер Тейлор

@PeterTaylor Звичайно, немає проблем, і все одно це було сміливо настільки видно (я нікого не звинувачував, а просто вказував на незначний потік (що я виправив одразу (вводячи помилки в процес))). І я не міг більше погодитися з частиною пісочниці.
Дада

ти можеш це трохи пояснити?
phuclv

@ LưuVĩnhPhúc Ви маєте на увазі, чи можу я дати вам трохи допомоги, щоб зламати це? ммх ... код починається з $_=. А є evalдесь. (це не багато, але я відчуваю, що не можу дати вам більше, не надавши вам занадто багато інформації)
Dada

8

Октава, 43 байти (безпечно)

$'()*+,-/23579:[]aelnouv'*,-23:[]lu',-23]',

Це сценарій, який вимагає введення з командного рядка (це не функція). Це точність з плаваючою комою (тому немає округлення).

Рішення:

eval(-[5,-2:3,-3:2]+['nlouu*$$',39,']2/7'])

Пояснення:

eval( <string> ) % Evaluated the string inside the brackets and executes it
Все, що знаходиться всередині evalдзвінка, оцінюється як " input('')^2.5

Як?"

-[5,-2:3,-3:2] % A vector: [-5, 2, 1, 0, -1, -2, -3, 3, 2, 1, 0, -1, -2]
['nlouu**$$',39,']2/7'] % This is a string: nlouu**$ concatenated with the number
. % 39 (ASCII ']'), and ']2/7'. Thus, combined: 'nlouu**$$']2/7'

Додавання першого вектора до цього рядка перетворить його в цілий вектор:
[105, 110, 112, 117, 116, 40, 39, 39, 41, 94, 50, 46, 53]

evalнеявно перетворює це в рядок, і ці числа так само бувають: input('')^2.5


1
Це було важко. Молодці!
Луїс Мендо

7

C, 50 байт ( тріщиною fergusq )

%(())   ,-12225;>\\aaabbdddeeefffllnoooprrttuuuuw{

Використовується стандартне заокруглення IEEE754. Як зазначається у відповіді fergusq, це може знадобитися -lmзалежно від вашого компілятора.



@fergusq правильно, і майже точно те, що у мене було. Молодці; Я думав, що я залишив там досить червоних оселедців, щоб довше зайняти людей!
Дейв

@Dave Вау, це спочатку схоже на помилку синтаксису.
Erik the Outgolfer

6

Математика, 131 байт, не конкуруючий ?, тріснув

Це був зламаний @ lanlock4 ! Однак у мене все ще є інтернет-бали, щоб подарувати тому, хто знайде оригінальне рішення, де насправді потрібні всі персонажі ....

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

Це задумано як пазл. Хоча ви можете використовувати вищезазначені символи, як тільки ви хочете, я, безумовно, маю на увазі відповідь слідувати формі

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

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

6 -> 88.182
9 -> 243.000
9999 -> 9997500187.497

(Mathematica - це невільне програмне забезпечення, але є пісочниця Wolfram, де можна протестувати скромні кількості коду. Наприклад, вирізання та вставлення коду

f[y_]:=With[{x=
    y^2.5
},Print[#,".",IntegerString[Round@#2,10,3]]&@@QuotientRemainder[1000x,1000]]

визначає функцію, яку можна згодом викликати як, f@6або f[9], яка робить те саме, що і нешифрована версія коду вище. То чи справді це має бути неконкурентоспроможним?)



6

Swift - 64 байти (безпечно)

prot Fdnufi;nooitamunc xetgru(->atl)Ior:n{tFn pg,F(ao.o25t)(w)l}

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




4

C #, 172 байти ( розтріскано SLuck49 )

       (((((())))))***,,,,......1225;;;;;;<====>CFLMMMMMPPPRSSSSSWaaaaaaabbbbcccddddddeeeeeeeeeeegghiiiiiiiillllllmmnnnnnnnooooooooqqqqrrrssssssssstttttttttuuuuuuuvvwyy{{}}

Цей код є повноцінною програмою.

На початку є сім космічних символів.

Вхід зчитується з форми STDIN і друкується в STDOUT. Результат вdouble не округлення.

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

using System;
using S = System.Console;

class P
{
    static void Main()
    {
        var t = S.ReadLine();
        double q = int.Parse(t);
        Func<double, double, double> M = Math.Pow;
        S.Write(M(q, 2 * .25) * M(q * q, 1));
    }
}






3

Фур’є , 124 119 байт

((()))*******--011111<=>>>HHINNNN^^^eeehhhhkkkkmmmmmmmmmmmmmmmmossuuuuuuuuuuuuuuuuu{{{{{{{{{{}}}}}}}}}}~~~~~~~~~~~~~~~~

Немає пробілів або символів нового рядка.

Square root is rounded to the nearest whole number because Fourier doesn't seem to handle anything other than integers (and since @ATaco got permission, I hope this is ok)

fixed an editing mistake, if you were already cracking this, the previous was functional

Realized that I had misunderstood part of the code, and was using more characters than I needed to

If I missed anything let me know




3

Octave, 30 bytes (Safe)

(((((())))))**++/:@eeeiiijmsu~

A bit simpler than my first one. Shouldn't be too hard, but it's hopefully a fun puzzle.


2
No ^? Hmmm...
Luis Mendo

1
Came up with this @(e)(e**((i/(i+i))+~sum(e:j))) but it's only n^1.5...this one's tricky.
Kyle Gullion

3

Ohm, 11 bytes

M ⁿ¡D¼½;+1I

Use with -c flag. Uses CP-437 encoding.


I'm sorry, but are you quite sure this is correct?
user4867444

Now that no one has cracked it in the imparted time, mind sharing your solution please? I'm very curious :)
user4867444

For now, this is the shortest answer considered safe. I will accept it, but if you do not post your original code in 5 days, I will uncheck this, since I am not sure this is possible. EAGER too see your solution
Mr. Xcoder

2
@RomanGräf try to find your solution, please. Otherwise I will uncheck this...
Mr. Xcoder

1
@RomanGräf : ping? Still very eager to see that solution :)
user4867444


2

Javascript, 123 bytes, Cracked by notjagan

 """"""((((((((()))))))))********,--.....//2;;======>>Seeeeeeegggggggggggghhhhhhhhhhhilllllnnnnnnnnnnorrrsstttttttttttttu{}

This code is a full function

There is one space character at the very start of the list of characters

The rounding of this answer is the floating point precision for Javascript, accuracy is within 10^-6 for every answer.

Got shorter because the precision didn't need to be maintained quite as high as I thought it did.

I had realized that it would be much easier to solve than I initially had made it but it was already there :P

Initial code:

g=t=>t-(t*t-n)/("le".length*t);e=h=>{n=h*h*h*h*h,s=2**(n.toString("ng".length).length/"th".length);return g(g(g(g(g(s)))))}

Newtons method, applied 5 times from the closest power of 2







2

Excel, 26 bytes

=(())*//11122AAAIINPQRSST^

No rounding.

Note: As Excel is paid software, this works also in free LibreOffice


1
Is there a way to run this without buying Excel? Currently it is the consensus that non free languages cannot be used in cops and robbers.
Wheat Wizard

1
Should work in free Libreoffice, but I'll check and reach back.
pajonk

1
Works just fine.
pajonk


@WheatWizard, not relevant anymore, but I think the consensus is: Non-free languages can be used, but should be marked as non-competing.
Stewie Griffin

2

RProgN 2, 6 Bytes (Cracked by @notjagan)

š2]^*\

No rounding, displays many decimal places. Does not display any for an integer solution.


2
Does this really perform n²√n? I can easily get it to calculate n² + √n, but I can't for the life of me see how you got the terms to multiply.
notjagan

@notjagan me too... have been trying for 2 hours to crack it and nothing works. ATaco are you sure that the source is correct?
Mr. Xcoder

@Mr.Xcoder Ah, you're quite correct. Sorry for wasting your collective times! Please see the edited source.
ATaco

Now it makes sense!
Mr. Xcoder

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