Rabusie - pierwiastek kwadratowy z pierwiastka kwadratowego


18

Zadanie: Złam zakodowany kod mnożenia pierwiastka kwadratowego liczby całkowitej n przez jego kwadrat!

Musisz opublikować komentarz w wątku gliniarzy z linkiem do twojego źródła pracy, wyraźnie wskazując, że go złamałeś . W tytule odpowiedzi musisz podać link do oryginalnej odpowiedzi.

Zasady:

  • Możesz zmienić tylko kolejność znaków w oryginalnym źródle.
  • Bezpiecznych odpowiedzi nie można już złamać.
  • Pozostałe zasady wymienione w wątku gliniarzy
  • Edytuj odpowiedź, którą łamiesz

ZWYCIĘZCA: Emigna - 10 poddanych (miał problemy z liczeniem)

Wyróżnienia: Notjagan, Plannapus, TEHTMI

Odpowiedzi:



9

JavaScript (ES7), Neil

_26_=>_26_**6.25**.5

Najtrudniejsze było oczywiście ustalenie, co zrobić ze wszystkimi dodatkowymi postaciami. (A także nie publikowanie tego rozwiązania w niewłaściwym wątku, jak to zrobiłem na początku. Oopsie ...)


1
@SethWhite: Musiałem użyć wszystkich znaków, których użył Neil w swoim zaszyfrowanym kodzie, inaczej nie byłby to prawidłowy crack.
Ilmari Karonen

Jak to działa?
Arjun,

@Arjun _26_=>definiuje anonimową funkcję przyjmującą jeden parametr o nazwie _26_(zmienne mogą zaczynać się znakiem podkreślenia, ale nie liczbą). Następnie pozostała część jest tylko przy użyciu **jako Math.pow()podnieść wejście do potęgi 2,5 (0,5) 6,25 mocy.
Joe,

Ach! Myślałem, że _26_to coś specyficznego dla ES7. Nie wiedziałem, że zmienne mogą być również w tej formie! (Nigdy nie widziałem zmiennej bez alfabetu). To było bardzo sprytne podejście @Neil. I ty też bardzo sprytnie go złamałeś! Miej swój zasłużony +1! :)
Arjun,



4

C ++ (gcc) , 100 bajtów, Mr. Xcoder

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

Wypróbuj online!


Dobra robota! Edytuj odpowiedź, którą łamiesz, ponieważ nie mogę tego teraz zrobić!
Pan Xcoder,

Anonimowy użytkownik zaproponował edycję, aby zaoszczędzić 8 bajtów, usuwając usingi po prostu robiącint main(){float n;std::cin>>n;std::cout<<pow(n,2.5);}
Martin Ender

Zapisz kolejny bajt #include <cmath> zamiast math.h. :)
zyndor

4

Haskell, Leo

x=exp.(2.5*).log

Bezcelowa funkcja o nazwie x. Zastosowanie: x 4->32.0


4

Poinformuj 7 , corvus_192

Fajnie, wpis Inform7. :) Po prostu musiałem spróbować.

Jestem prawie pewien, że jest to zamierzone rozwiązanie:

R is a room.

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

Zauważ, że to rozwiązanie działa tylko, jeśli zostało skompilowane z zapleczem Glulx, ze względu na użycie tej real square root offunkcji.


BTW, podwójne cudzysłowy i nawiasy kwadratowe są w rzeczywistości niepotrzebne; po prostu say n * n * real square root of ndziałałby równie dobrze. Można również pominąć kropki na końcu poleceń; lub moglibyśmy zachować pierwszy okres i zamiast tego pozbyć się nowych linii. Inne części kodu, które moglibyśmy usunąć, to artykuł „a” przed „pokojem” oraz spacje przed nawiasami i po dwukropku. Na szczęście, ponieważ mamy zapasową parę nawiasów, zawsze możemy ich użyć, aby skomentować wszystkie te dodatkowe znaki. ;) Więc to również jest prawidłowe rozwiązanie:

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

Aby interaktywnie przetestować to rozwiązanie, wygodnie jest dołączyć do kodu coś w rodzaju następującej wiązki testowej:

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

Po skompilowaniu i uruchomieniu programu możesz wpisać np. f 4. f 6. f 9. f 25W >wierszu polecenia i otrzymać coś w rodzaju następującego wyniku:

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
>

BTW, właśnie zauważyłem, że Inform (lub raczej Glulx) zaokrągla ostatnie miejsce dziesiętne f 6zła: poprawna wartość jest znacznie bliższa 88,18163 niż 88,18164. Na szczęście nie sądzę, aby miało to wpływ na poprawność rozwiązania (rozwiązań), zwłaszcza, że ​​wyzwanie określało „dowolny wybrany przez ciebie mechanizm zaokrąglania”. :)


Jestem pewien, że jakiś czas temu znalazłem skrzypce Inform 7, ale nie mogę go znaleźć podczas wyszukiwania. Czy wiesz, czy gdziekolwiek jest tłumacz online?
Flądrowiec,

@Flounderer: Tak naprawdę nie znam żadnych. Z pewnością istnieją odtwarzacze online (nawet oparte na JS) dla kodu bajtowego maszyny Glulx / Z produkowanego przez kompilator Inform 7, ale nie jestem świadomy niczego, co bezpośrednio wziąłoby zwykły kod źródłowy Inform 7, skompilowałby go i uruchomiłby w trybie online. Kompilator / IDE jest jednak dość łatwy w instalacji; w systemie Ubuntu Linux jest to tak proste, jak apt-get install gnome-inform7.
Ilmari Karonen,

4

Mathematica, Greg Martin

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

Dzięki za pozostawienie nienaruszonego zaokrąglania rzeczy!

Objaśnienie: #(#)#^(1/(1+1))&@yrobi główną pracę pomnożenie ykwadratu, aka y(y), i y„s pierwiastkowania, y^(1/(1+1)). Ten #&@@@{1^(1),-1}kawałek jest po prostu śmieci, aby zużyć inne litery, i #&@@wybiera przydatny kawałek ze śmieci.


4

MATL , 12 bajtów, Luis Mendo

10'U&+:'n/^P

Oblicz 10/4 = 2,5 z 4 pochodzącymi z długości łańcucha. Użyj tego jako wykładnika. P nie ma tu mowy o opozycji.


4

Python 3, 44 bajty, Kyle Gullion

Te *były dość mylące. Bardzo mądry!

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

Z powodu dość ograniczonego zestawu znaków byłbym bardzo zaskoczony, gdyby istniały inne prawidłowe rozwiązania poza trywialną zmianą nazwy lub kolejnością argumentów.


Masz mnie ładnie zrobione!
Kyle Gullion


3

Python 2, 60 bajtów, Anthony Pham

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

Na podstawie odrzucania znaków przez podział zmiennoprzecinkowy Python 2 (domyślny dla /liczb całkowitych).


3

C, 50 bajtów, Dave

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

Wypróbuj online!

Wymaga to -lmflagi kompilatora, ale nie wiem, jak można to rozwiązać bez tego.


poprawne i prawie dokładnie to, co miałem (zmienna została nazwana \uad2fna mojej). Dobra robota; Myślałem, że zostawiłem tam wystarczająco dużo czerwonych śledzi, aby ludzie byli zajęci o wiele dłużej! Również -lmflaga nie była mi potrzebna przy użyciu Clanga (wspomniałbym o tym!), Ale masz rację, mówiąc ściśle, że jest wymagana.
Dave

3

R, Flądra

Jest to pęknięcie 33-bajtowego rozwiązania @Flounderer

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

Stosowanie:

> 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

Tak, nie jest to zamierzone rozwiązanie sin(pi), ale niestety działa! +1
Flądrowiec

To byłoscan()^(-floor(-sin(pi)*2e17)/10)
Flądrowiec

3

RProgN 2, ATaco

]2^\š*

Najwyraźniej StackExchange potrzebuje dodatkowych znaków, więc proszę bardzo.


Moje rozwiązanie było ]š\2^*, ale oba działają w ten sam sposób.
ATaco

3

HODOR, 198, Ten facet

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!!!

Wyjaśnienie:

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

uwaga: musiałem wprowadzić pewne modyfikacje, aby interpreter działał na moim komputerze (ten, który napisałeś, nie akceptuje między innymi małych liter h)

Poza tym nie mam wystarczającej liczby przedstawicieli, aby móc komentować, więc jeśli ktoś mógłby powiedzieć @Ten facetowi, byłbym wdzięczny

Myślę, że to naprawiło błąd, kod zaczyna się teraz od Waldera zamiast Wylisa, co dodaje dodatkowy bajt


Prawie na miejscu. Musiałem zmienić błąd w moim kodzie, więc twój nie jest w porządku.
caird coinheringaahing

naprawiono polecenie start
wwj

Chociaż miałeś go, ale wybrałeś inną metodę niż ja, która używa tej samej liczby bajtów. Twoja odpowiedź zrobiłaby to, co chciałeś, ale to nie to samo, co moja. Również musiałem zmienić nazwę, bo to tak, że zmienił się do swoich postów.
caird coinheringaahing

dla wyjaśnienia, czy nadal liczy się to jako crack, czy też muszę dokładnie do siebie pasować?
wwj

Nie jestem do końca pewien. Zapytam w komentarzach. +1 od twojego rozwiązania sprawia, że ​​myślę naprawdę ciężko!
caird coinheringaahing

3

C #, 172 bajty, raznagul

Najtrudniejsze było ustalenie, co zrobić ze wszystkimi resztkami.

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);}}

Ładny! Utknąłem również na resztkach. Nie pomyślałem o dodaniu ich do nazwy klasy, doh !. Dobra robota!
Emigna,

+1 Nie to, co zamierzałem, ale bardzo fajne rozwiązanie. ;)
Raznagul,

3

EXCEL, 26 bajtów pajonk

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

A1 jako wejście IP2 zawiera drugie wejście z błędem # nie dotyczy. W tym przypadku ISNA (IP2) należy do 1

Dodatkowo () możemy to zrobić

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

Czy w takim wyzwaniu dozwolony jest drugi wkład?
pajonk

@pajonk Zasady mówią: „Możesz brać wkład w dowolny standardowy sposób”, więc zakładam, że robisz tę sztuczkę z drugim wejściem
Jörg Hülsermann

@pajonk Poprawiłem swój post, być może popełniłeś mały błąd
Jörg Hülsermann

Standardowym sposobem na przyjęcie jednej liczby jest (myślę) przyjęcie jednego wejścia. Moim zdaniem drugi wkład byłby niesprawiedliwy i niezgodny z zasadami. PS Nie ma pomyłki w liczbie nawiasów.
pajonk

@pajonk Nie mogę używać kombinacji z SIN i PI, ponieważ nie ma wystarczającej liczby nawiasów. =SQRT(A1)*A1^2/SIN(PI()/2)Jeśli ustawisz błąd #NA poprzez formowanie lub coś innego, zobaczyłbym go jako dodatkowe drugie wejście. SQRT i ISNA to jedyne dwie funkcje, które mają trochę sensu. Ale proszę zapytaj człowieka, który opracował pytanie
Jörg Hülsermann

3

Python 3.6, 64 bajty, Mr. Xcoder

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

Może nie to, co było zamierzone, ale działa;)

$ 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

Jeszcze za mało przedstawicieli, by skomentować odpowiedź wątku gliniarzy, przepraszam ... Byłbym wdzięczny, gdyby ktoś mógł to dla mnie zrobić, dzięki!


@Pan. Xcoder, jak powiedziano powyżej, nie może komentować twojego postu w wątku gliniarzy, przepraszam za to :)
user4867444 5'17

Przyszedłem opublikować podobne rozwiązanie, from math import pi as pp0012223467899;f=lambda x:x**2.5*1*(1)/1aby zobaczyć, że zostałem pobity do sedna. Dodałem link do tego postu w wątku gliniarzy.
Kyle Gullion



3

R, Flądra

Oto pęknięcie 31-bajtowego rozwiązania @ Flounderer:

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

Ok, to było trudne. Tworzy funkcję o nazwie `[.`. Wywoływany jest argument funkcji, `]`który jest podniesiony do potęgi 2,5 poprzez zastosowanie 9. elementu wbudowanej serii czasowej lh(„regularny szereg czasowy dający hormon luteinizujący w próbkach krwi w odstępach 10-minutowych od ludzkiej kobiety, 48 próbek . ”, który jest używany jako przykład w jednym z podstawowych pakietów R.). lh[9]jest tutaj nad nim zastąpiony przez jego odpowiednik `[`(lh, 9). Usunięcie zaciemnienia przez podstawienie fnazwy funkcji i nnazwy argumentu powoduje, że funkcja staje sięf=function(n)n^lh[9] .

Stosowanie:

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

2

Python 2, 44 bajty, Anthony Pham

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

Pobiera dane wejściowe z raw_input, konwertuje na int i podnosi do potęgi 2.5


2

JavaScript, fəˈnɛtɪk

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

Pobiera 5/2 do 5 razy 2 do pierwszej ujemnej mocy, gdzie 5 i 1 otrzymano z długości łańcuchów. W pewnym sensie podjął łatwą drogę, komentując obce postacie.


2

C #, 112 bajtów, Jan Ivan

using System;class P{static void Main(){var b=Math.Pow(double.Parse(Console.ReadLine()),2.5);Console.Write(b);}}

2

05AB1E , 47 bajtów, Okx

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

Wypróbuj online!


Ach, wiedziałem, że będzie sposób obejścia metody, której użyłem do „zabezpieczenia” kodu. Dobra robota!
Okx

@Okx: Tak, 05AB1E jest bardzo trudny do uzupełnienia dodatkowym kodem, nie czyniąc go ominiętym.
Emigna

Zobaczę, czy mogę sprawić, że staniesz się trudniejszy;)
Okx

@Okx: Nie mogę się doczekać :) Mam też pomysł, że mogę spróbować wdrożyć po pracy;)
Emigna

2

Fireball , 8 bajtów, Okx

♥²♥1Z/^*

Wyjaśnienie:

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

Nie jestem pewien, czy to działa. Obecnie nie mam Java na moim laptopie. :(


Nie sądzę, żeby to zadziałało. Łatwa naprawa, więc dam ci odpowiedź. Musisz tylko zamienić Z1na 1Z.
Okx

Byłem pewien, że popełniłem tam błąd. Zaktualizowano
Roman Gräf

2

Haskell , 64 bajty, @nimi

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

Wypróbuj online! To było zabawne. Najpierw odkryłem, że product.(<$>(($succ(cos$0))<$>[id,recip])).(**)zachowuje się poprawnie i potem musiałem flip flip <$> () $ id .gdzieś do niego pasować .


2

R, steadybox

a222=function(s)(s**0.5)*s**2**1

Stosowanie:

> a222=function(s)(s**0.5)*s**2**1
> a222(4)
[1] 32
> a222(6)
[1] 88.18163
> a222(9)
[1] 243
> a222(25)
[1] 3125

Oryginał:a=function(s)s**2*s**(0.125*2*2)
Steadybox

2

05AB1E , 22 bajty, P. Knops

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

Wypróbuj online!

Wyjaśnienie

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

Reszta operacji nigdy nie zostanie wykonana.
Możemy to zrobić bez q, a także mając ?po obliczeniu i ucieczki znak równości na przykład '=.


1
Robiłem to dla zabawy: D
P. Knops,

@ P.Knops: To najlepszy powód :)
Emigna
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.