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

Pan Xcoder
źródło

Odpowiedzi:

3

NIE , 41 bajtów, ten facet

NOOOOOO?NOOOOOOOOOOO!nnOOOOO
NOOOOOOOO?no
Emigna
źródło
Naprawdę? Przynajmniej poznałem mój język.
caird coinheringaahing
@ThisGuy: Udało ci się zrobić fajne języki :) Jednak ogólnie nie jest to zbyt przydatne;)
Emigna
Spójrz na akapit
caird coinheringaahing
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 ...)

Ilmari Karonen
źródło
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,
6

Python, 15 bajtów, Mr. Xcoder

lambda x:x**2.5

Dość proste. Po prostu bierze xi podnosi do 2.5potęgi.

Kritixi Lithos
źródło
6

OCaml, 13 bajtów, shooqie

fun f->f**2.5

Wypróbuj online!

Dada
źródło
Właśnie to opublikowałem! Nie mogę w to uwierzyć! Dobra robota!
Pan Xcoder,
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!

fergusq
źródło
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

nimi
źródło
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”. :)

Ilmari Karonen
źródło
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.

Nie drzewo
źródło
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.

tehtmi
źródło
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.

KSab
źródło
Masz mnie ładnie zrobione!
Kyle Gullion
3

R, Steadybox

y<-function(p)(p^(1/2)*p^2);

wydaje się być anagramem funny(p1)-tio(^*^)/pc(2)<p2;

Flądrarz
źródło
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).

notjagan
źródło
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.

fergusq
źródło
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
plannapus
źródło
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.

notjagan
źródło
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

wwj
źródło
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);}}
SLuck49
źródło
Ł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))
Jörg Hülsermann
źródło
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!

użytkownik4867444
źródło
@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öda , 28 bajtów, fergusq

f(n){push n^0.5,n^2|product}
tehtmi
źródło
3

Python 2.7, Koishore Roy

s=e=x=y=input()**0.5
print'%.3f'%(y**(5.0))
ovs
źródło
Albo y=x=e=sobie działają :)) Dobra robota i tak!
Pan Xcoder,
Dobra robota. : P Teraz muszę pracować nad nowym kodem. Cerować!
Koishore Roy,
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
plannapus
źródło
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

Fəˈnɛtɪk
źródło
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.

notjagan
źródło
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);}}
Emigna
źródło
2

05AB1E , 47 bajtów, Okx

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

Wypróbuj online!

Emigna
źródło
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. :(

Roman Gräf
źródło
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ć .

Laikoni
źródło
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
plannapus
źródło
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 '=.

Emigna
źródło
1
Robiłem to dla zabawy: D
P. Knops,
@ P.Knops: To najlepszy powód :)
Emigna