Oblicz kwadrat i pierwiastek kwadratowy!

48

Musisz utworzyć który wyprowadza kwadrat danych wejściowych w jednym języku i pierwiastek kwadratowy danych wejściowych w innym języku. Najkrótsza odpowiedź w bajtach wygrywa!

Musisz mieć dokładność co najmniej 3 miejsc po przecinku, a wartość wejściowa zawsze będzie dodatnia.

programmer5000
źródło

Odpowiedzi:

45

Jolf i MATL , 1 bajt

U

Pierwiastek kwadratowy w Jolf, kwadrat w MATL.

Wypróbuj online! (MATL)

Wypróbuj kod Jolf. Działa tylko w przeglądarce Firefox.

Oba mają 1 bajt, ponieważ zarówno MATL, jak i Jolf używają stron kodowych ASCII / rozszerzonego ASCII, więc wszystkie polecenia mają 1 bajt.

Rɪᴋᴇʀ
źródło
90

C i C ++, 68 65 bajtów

#include<math.h>
float f(float n){auto p=.5;return pow(n,2-p*3);}

Oryginalna odpowiedź:

#include<math.h>
float f(float n){return pow(n,sizeof('-')-1?2:.5);}

W obu wersjach C produkuje, n^2a C ++ produkuje sqrt(n).

Dave
źródło
23
+1 jako „Ha!” dla wszystkich tych, którzy traktują C i C ++ tak samo.
DocMax 11.04.17
20
@ CAD97: W języku C autooznacza „przydział na stosie”. Słowo kluczowe jest dość bezużyteczne, ponieważ i tak jest domyślne, więc C ++ zmieniło jego przeznaczenie na coś innego. Jednak w języku C nie wyraża żadnej opinii na temat typu p(jest to klasa pamięci, a nie typ), więc jest intdomyślnie liczony (domyślnie takie intzachowanie jest obecnie odradzane i prawdopodobnie istnieje tylko dlatego, że niektóre z poprzedników C w ogóle nie miały typów danych, ale kompilatory nadal to rozumieją). I oczywiście (int)0.5wynosi 0
2
To jest genialne.
Quentin,
1
Znaleziono pytanie dotyczące przepełnienia stosu .
YSC
9
Myślę, że wyjaśnienie tej odpowiedzi poprawiłoby się poprzez edycję komentarza @ ais523 wyjaśniającego, dlaczego C. produkuje n^2.
Brian J
50

Python 2 i Python 3, 23 21 bajtów

lambda n:n**(1/2or 2)

Python 2.x produkuje n^2, Python 3.x produkuje sqrt(n).

2 bajty zapisane dzięki @Dennis!

Dave
źródło
To jest takie fajne!
njzk2
Dlaczego? Czy to wcześniej brak miejsca or?
chx
@chx W Py2 /wykonuje dzielenie całkowite ( 1/2==0). W Py3 dokonuje podziału zmiennoprzecinkowego ( 1/2==0.5). 0Jest falsey.
Nic Hartley,
to dlaczego nie usunąć spacji po lub?
chx
@chx Wypróbuj sam. Jeśli to zrobisz, zgłasza błąd składniowy.
numbermaniac
32

2sable / Galaretka , 2 bajty

*.

2sable oblicza kwadrat. Wypróbuj online!

Galaretka oblicza pierwiastek kwadratowy. Wypróbuj online!

Jak to działa

2sable

*   Read the input twice and compute the product of both copies.
    This pushes the square of the input.
 .  Unrecognized token (ignored).

Galareta

 .  Numeric literal; yield 0.5.
*   Raise the input to the power 0.5.
    This yields the square root.
Dennis
źródło
7
To tak, jakby te języki zostały stworzone właśnie dla tego wyzwania
FloatingRock
20

C (clang) i Python , 109 107 69 53 bajtów

#/*
lambda n:n**.5;'''*/
float a(i){return i*i;}//'''

C: Wypróbuj online!

Python: Wypróbuj online!

Działa przy użyciu komentarzy do polyglot. Reszta jest dość objaśniająca.

Pierwszy raz używając C!

  • Zaoszczędź sporo bajtów dzięki @Riker.
  • Zaoszczędzono 2 bajty, usuwając niepotrzebne białe znaki.
  • Zaoszczędzono bardzo wiele bajtów, używając funkcji dla C zamiast STDIN / OUT.
  • Zaoszczędź 16 bajtów dzięki @Delioth, usuwając instrukcję importu na górze.
Towarzyszu SparklePony
źródło
@Riker zrobi, dziękuję.
Towarzysz SparklePony 11.04.17
Wierzę, że możesz usunąć jedną nową linię po komentarzu C (wiersz 2, ostatni znak), ponieważ C nie potrzebuje spacji i jest już literałowym ciągiem dla Pythona. Ponieważ nie zwracasz żadnego specjalnego kodu, możesz pominąć return 0;koniec - C99 zawiera ukryty zwrot 0 na main(). Źródło
Delioth,
@Delioth Właściwie bardziej sensowne było po prostu użycie tej funkcji i wykasowanie io.
Towarzysz SparklePony,
O tak - o wiele lepiej. Czy w ogóle musisz uwzględnić stdio.hw takim przypadku?
Delioth,
@Delioth ja nie. Ups!
Towarzysz SparklePony,
16

Ohm and Jelly , 3 bajty

Zwraca kwadrat w Ohm, pierwiastek kwadratowy w Galaretce.

Ohm i Jelly używają różnych jednobajtowych stron kodowych, więc program będzie wyglądał inaczej w każdym kodowaniu.

xdx zrzut zrzutu programu:

00000000: fd7f 0a                                  ...

Galareta

Za pomocą strony kodowej Jelly wygląda to tak:

’
½

Galaretka zajmuje najniższy wiersz jako główny link i ignoruje inne linki, chyba że są specjalnie wywoływane. Więc tutaj po prostu robi pierwiastek kwadratowy ( ½) i niejawnie go wyprowadza.

Om

Przy użyciu strony kodowej Ohma (CP437) wygląda to tak:

²⌂◙

²jest funkcją kwadratową i oba są niezdefiniowane, więc program po prostu podnosi niejawnie odczytane dane wejściowe i niejawnie je wyprowadza.

Business Cat
źródło
Miły! Liczba bajtów jest w porządku.
programator5000
Z tego powodu zredagowałem swoją odpowiedź do 5 bajtów.
Magic Octopus Urn
Wow, pierwsza odpowiedź Ohma nie została napisana przeze mnie! Dobra robota!
Nick Clifford
Jeśli używasz strony kodowej Jelly, aby uzyskać ½bajt, do czego służy ²mapa? Czy to tylko śmieci są nadal ignorowane? I odwrotnie dla Ohma? Wtedy wydaje się, że to 2 bajty.
AdmBorkBork
1
Dam przykład, ponieważ nie chcę zawracać sobie głowy szukaniem rzeczywistych punktów kodu. Załóżmy, że ²w Ohm jest w punkcie kodowym 5. Kod w punkcie 5 w Galaretce jest %i nie robi nic, więc nie ma znaczenia, jaki jest pierwszy wiersz. Załóżmy, że ½w Galaretce jest 27, a kod 27 w Ohmie jest Ji nie robi nic, więc nie ma znaczenia, co jest drugim wierszem. Zatem jeśli masz plik 00000101<newline>00011011, ma on 3 bajty. Chyba jedynym problemem jest to, że nowa linia znajduje się w innym miejscu na stronach kodowych.
AdmBorkBork
15

C89 i C99, 47 + 3 = 50 bajtów

float f(float n){return n//*
/sqrt(n)//*/1*n
;}

Wymaga -lmflagi (+3)

C89 produkuje n^2, C99 produkuje sqrt(n). Aby przetestować w C89, wypróbuj online!


Nakłonienie C89 do wykonania sqrtwersji powinno zająć mniej kodu, ale nalega na niejawne zadeklarowanie sqrtfunkcji za pomocą ints, więc jest to najlepsze, co mogłem zrobić.

Dave
źródło
13

Octave / MATLAB, 31 29 bajtów

 @(x)x^(2-3*any(version>60)/2)

Daje to kwadrat w Octave i pierwiastek kwadratowy w MATLAB.

Wyjaśnienie:

Składnia jest oczywiście identyczna w MATLAB i Octave (przynajmniej dla tego małego fragmentu kodu).

To tworzy anonimową funkcję:

@(x)                                 % Take x as input
    x^(                     )        % Raise x to the power of ...   
               version                 % Returns the version number
                                       % 4.2.0 in Octave, 
                                       % '9.2.0.538062 (R2017a)' in MATLAB
               version>60              % 'R' is larger than 60. All others are smaller
         3*any(version>60)/2           % Checks if there is an 'R' and multiplies it by 1.5 if it is.
       2-3*any(version>60)           % 2-1.5*(is there an 'R')
Stewie Griffin
źródło
12

Basic / Delphi - 6 znaków

sqr(x)

Pierwiastek kwadratowy w Basic i kwadratowy w Delphi.

Za pomocą debugera możesz sprawdzić wyrażenie, spełniając w ten sposób wszelkie wymagania wyjściowe!


źródło
2
Czy wymaga to wkładu?
Rɪᴋᴇʀ 12.04.17
Nie, ale nie dokonuj też innych zgłoszeń, w tym C / C ++.
Nadal nieważne, to nic nie zmienia. Spróbuję też je skomentować.
Rɪᴋᴇʀ
1
Czy możesz połączyć coś, co nie? Nie mogę znaleźć. C / C ++ one jest funkcją, nie pobiera danych wejściowych, a jedynie parametr.
Rɪᴋᴇʀ
3
Tak, ale co to jest x? Nie możesz założyć, że jest zapisany do wartości. Ale możesz faktycznie usunąć (x)i oznaczyć ją jako zwracającą funkcję.
Rɪᴋᴇʀ
11

05AB1E / Fireball , 3 bajty

Program składa się z następujących bajtów:

FD B9 74

05AB1E oblicza pierwiastek kwadratowy, kwadraty Fireball.

Objaśnienie (05AB1E - ý¹t):

ý       Pushes an empty string to the stack (not entirely sure why)
 ¹      Push first input
  t     Square root

Objaśnienie (Kula ognia - ²╣t):

²       Square input
 ╣      Unassigned
  t     Unassigned

Czasami pomaga mieć niekompletny język;)

Okx
źródło
1
05AB1E i Fireball używają różnych kodowań. Czy to wpływa na programy?
Dennis
@Dennis Nie myślałem o tym. Czy zapisanie tego samego programu w różnych kodowaniach nie ma znaczenia dla poligrafów?
Okx
5
Afaik, domyślnie strumienie bajtów muszą być zgodne.
Dennis
10

PHP7 + JavaScript, 62 61 58 bajtów

To było naprawdę trudniejsze niż się spodziewałem! Jestem dość zaskoczony, jak długi jest mój kod.

eval(['alert((_=prompt())*_)','echo$argv[1]**.5'][+![]]);


Jak to działa?

Działa to poprzez wybranie z tablicy kodu do uruchomienia.
Wykrywanie PHP i JavaScript odbywa się za pomocą +![].

W PHP [](pusta tablica) jest wartością fałszywą, podczas gdy w JavaScript jest wartością prawdziwą (obiekty (oprócz null) są zawsze prawdziwe, a nawet new Boolean(false)prawdziwe!).
Ale muszę uzyskać wartość liczbową, więc po prostu używam not( !) i przekonwertowałem ją na liczbę całkowitą (z +).
Teraz PHP daje wartość 1, podczas gdy JavaScript daje 0.
Umieszczenie kodu w tablicy, przy tych indeksach, pozwoli nam wybrać odpowiedni kod dla pożądanego języka.
Można tego użyć jako [JS,PHP][+![]], aby uzyskać kod odpowiedniego języka.

W poprzednich poliglotach użyłem '\0'=="\0", który jest truew JavaScript (ponieważ \0jest analizowany jako bajt NULL) i falsew PHP ( '\0'nie będzie analizowany jako bajt NULL, porównując literał ciąg \0z bajtem NULL).
Cieszę się, że udało mi się zredukować tę kontrolę do +!'0'.
Jeszcze bardziej cieszę się z @rckd , który zredukował go do obecnej wersji!

Od tego momentu evaljest to po prostu wymagany kod.

PHP

PHP wykona echo$argv[1]**.5(ekwiwalent echo sqrt($argv[1]);, pierwiastek kwadratowy z liczby), otrzymując wartość z drugiego argumentu i wyświetli ją na standardowym wyjściu.

JavaScript

Wykonuje się JavaScript alert((_=prompt())*_), który wyświetla kwadrat w liczbie alert.



Dziękujemy @rckd za zapisanie 1 bajtu i @ user59178 za zapisanie 3 bajtów!

Ismael Miguel
źródło
1
! [] pozwoli Ci zaoszczędzić 1 bajt :-)
rckd 12.04.17
1
@rckd Święta krowa! Całkowicie zapomniałem o pustych tablicach. Dziękuję Ci! Zredagowałem to pytanie wraz z wyjaśnieniem, jak to działa.
Ismael Miguel,
1
możesz zapisać 3 bajty, używając echo$argv[1]**.5zamiastecho sqrt($argv[1])
user59178
Wow, fajne oszczędzanie! Dziękuję Ci! Dodałem to do odpowiedzi.
Ismael Miguel
8

05AB1E i galaretka , 4 bajty

nqƓ½

(05AB1E) - (galaretka)

nq   # Ignored by Jelly, push n**2 in 05AB1E then quit.
  Ɠ½ # Ignored by 05AB1E due to quit, push sqroot of input in Jelly.

Myślę, że ktoś inny miał rację, ponieważ znaki UTF-8 nie współużytkują tej samej operacji na stronach kodowych, które technicznie są 2-bajtowe do zakodowania. Jednak patrząc na to pod kątem zrzutu heksadecymalnego:

6e 71 93 0a

W kodowaniu CP1252 05AB1E powoduje to:

nq“\n

Oznacza to, że nadal będzie generować kwadrat i wyjść, ignorując resztę. Gdy te bajty są kodowane przy użyciu strony kodowej Jelly:

nqƓ½

Który jest pierwotnie zamierzonym kodem, po uruchomieniu powoduje pożądany wynik pobrania danych wejściowych i pobrania sqrt.

Urna Magicznej Ośmiornicy
źródło
2
Jest to w rzeczywistości 6 bajtów UTF-8, jak oba Ɠi ½wymaga dwóch bajtów do zakodowania. Jednak sekwencja bajtów 6e 71 93 0a( nqƓ½dla Galaretki, nq“\ndla CP-1252) powinna działać w obu językach.
Dennis
@Dennis ½przebywający na obu stronach kodowych nie pozwala na zaliczenie go jako pojedynczego, ponieważ zakładam, że są to różne operacje? Nadal jestem rozmyślany na temat całej strony kodowej.
Magic Octopus Urn
1
Punktacja w bajtach oznacza zliczanie strumieni bajtów. O ile interpreter nie obsługuje kodowania niektórych znaków na jednej stronie kodowej i innych znaków na innej, nie możemy tego zrobić w celu oceny.
Dennis
4
@ carusocomputing twoje zgłoszenie to 4 bajty, 6e 71 93 0awięc nie ma „teoretycznie” roszczenia 4 bajtów. Wystarczy odebrać 4 bajty. Tak się składa, że ​​w standardowym kodowaniu 05AB1E odczytuje jedną rzecz, która robi to, co chcesz, podczas gdy w standardowym kodowaniu Jelly, czyta inną, która robi to, co chcesz. Nawiasem mówiąc, tylko dlatego, że 2 kodowania mogą kodować ten sam znak, nie oznacza, że ​​znak będzie taki sam w obu z nich. Pomyśl tylko o kodowaniu, takim jak szyfr numeryczny z już udostępnioną tabelą odnośników, i mam nadzieję, że da ci to dobry początkowy model mentalny.
Dave
@Dave Musiałem wtedy źle zinterpretować Dennisa.
Magic Octopus Urn
6

CJam / MATL , 8 bajtów

ld_*GX^!

Oblicza kwadrat w CJam ( Wypróbuj online! ) I pierwiastek kwadratowy w MATL ( Wypróbuj online! ).

Objaśnienie kwadratu w CJam

ld    e# Read input line and interpret as a double
_     e# Duplicate
*     e# Multiply. Pops the input number twice, pushes its square
G     e# Push 16
X     e# Push 1
^     e# Bitwise XOR. Pops 16 and 1, and pushes 17
!     e# Negate. Pops 17, pushes 0
      e# Implicitly display. This prints the squared input with decimals,
      e# immediately followed by the 0 coming from the negate operation
      e# Even if the square of the input number is an integer, say 5,
      e# it is displayed as 5.0, so including an extra 0 always gives a
      e# correct result

Wyjaśnienie pierwiastka kwadratowego w MATL

l      % Push 1. This is a number or equivalently a 1×1 array
d      % Consecutive differences. Pops 1, pushes [] (empty array)
_      % Negate (element-wise). This leaves [] as is
*      % Implicitly input a number and push it. Multiply (element-wise): 
       % pops [] and the input number, pushes []
G      % Push input number again
X^     % Square root. Pops number, pushes its square root
!      % Transpose. For a number (1×1 array) this does nothing
       % Implicitly display. The stack contains [] and the result; but 
       % [] is not displayed at all
Luis Mendo
źródło
Hej! Niezłe zgłoszenie! Chcesz dodać wyjaśnienie, tak jak inne odpowiedzi?
programmer5000
@ programmer5000 Naprawiłem błąd i dodałem objaśnienia
Luis Mendo
5

Python 2 i Forth, 43 33 bajty

( """ )
fsqrt
\ """);lambda n:n*n

Wypróbuj online: Python 2 (kwadrat) | Naprzód (sqrt)

To ewaluuje do anonimowej funkcji w Pythonie i wbudowanej funkcji fsqrtw Forth. Python może mieć funkcję o nazwie fdla 2 bajtów więcej, umieszczając f=przed lambda.

Program Forth przyjmuje literał zmiennoprzecinkowy , który w Forth musi być zapisany w notacji naukowej. Pi obcięte do 3 miejsc po przecinku ( 3.141) można zapisać w następujący sposób:

3141e-3
mbomb007
źródło
5

JavaScript (ES6) / JavaScript (ES7), 52 bajty

f=a=>eval(`try{eval("a**2")}catch(e){Math.sqrt(a)}`)

Zwraca kwadrat danych wejściowych w ES7 i pierwiastek kwadratowy w ES6. Całkiem trudne do przetestowania, chyba że masz starszą przeglądarkę, która obsługuje ES6, ale nie ES7.

f=a=>eval(`try{eval("a**2")}catch(e){Math.sqrt(a)}`)

console.log(f(4));

Tomek
źródło
Sprytny! Dobra robota na tym!
programator5000
Czy istnieje powód backticksa? Wygląda na to, że pojedyncze cytaty by zadziałały.
JLRishe 12.04.17
@JLRishe Nope, bez powodu :)
Tom
5

PHP i CJam , 30 29 25 bajtów

ECHO"$argv[1]"**2;#];rdmq

Oblicza kwadrat w PHP i pierwiastek kwadratowy w CJam. Musi być uruchomiony przy użyciu -rPHP.

PHP

Podnosi argument pierwszego wiersza poleceń ( $argv[1]) do potęgi 2 i wysyła go. Tutaj $argv[1]jest faktycznie wstawiany jako zmienna wbudowana w łańcuch, który jest rzutowany na liczbę przed wykonaniem potęgowania. To dlatego, żev nie jest to poprawna instrukcja w CJam i spowoduje błąd podczas analizy, ale umieszczenie jej w łańcuchu nie spowoduje żadnych problemów.

# rozpoczyna komentarz, więc wszystko po nim jest ignorowane.

Wypróbuj online!

CJam

Pierwsza część kodu ECHO"$argv[1]"**2;#przekazuje wiele wartości i wykonuje szereg operacji, z których wszystkie są całkowicie bezużyteczne. Jedyną ważną rzeczą jest to, że nie powodują żadnych błędów, ponieważ zaraz po ];tym następuje owinięcie całego stosu w tablicę, a następnie odrzucenie go.

Następnie odczytuje podwójną wartość z input ( rd) i otrzymuje pierwiastek kwadratowy (mq ) i domyślnie wyprowadza go.

Wypróbuj online!

Business Cat
źródło
5

C, język skryptowy operacji Flashpoint , 52 bajty

;float f(float x){return sqrt(x);}char*
F="_this^2";

W skrypcie OFP średnik na początku wiersza powoduje, że wiersz ten jest komentarzem, podczas gdy C nie przejmuje się dodatkowym średnikiem.

DO:

Wypróbuj online!

Język skryptowy OFP:

Zapisz jak init.sqsw folderze misji, a następnie zadzwoń za pomocą hint format["%1", 2 call F].

Wynik: wprowadź opis zdjęcia tutaj

Steadybox
źródło
Okej, to całkiem fajne. Jak pomyślałeś o użyciu tego skrzeczącego języka?
R17
@Riker Operation Flashpoint zawsze była jedną z moich ulubionych gier; Robiłem w nim wiele rzeczy za pomocą języka skryptowego.
Steadybox
3

Siatkowy / befunge-98 , 15 bajtów

Języki 2D!

/&:*.@
>in:o#p;

Befunge-98

/&:*.@

/          divide top two (no-op)
 &         read decimal input
  :        duplicate
   *       square
    .      output
     @     terminate

Siatka

/           mirror up, then right
>in:o#p;

 i          read line of input
  n         cast to number
   :o#      square root
      p     print
       ;    terminate
Conor O'Brien
źródło
3

> <> / Galaretka , 9 bajtów (7 bajtów kod + 2 dla flagi „-v” w> <>)

Człowieku, naprawdę dobrze się bawię ze strukturą linków Jelly.

:*n;
½

Oblicza kwadrat w> <> i pierwiastek kwadratowy w Galaretce .

Steenbergh
źródło
Czy wolno ci również nie używać -v w galarecie?
Rɪᴋᴇʀ
-vMoim zdaniem użycie jest zgodne z [najczęściej głosowaną odpowiedzią [( codegolf.meta.stackexchange.com/a/11431/44874 ) w meta-pytaniu dotyczącym tej sprawy. ><>Interpreter tego potrzebuje -vi jest to dla nich najprostszy możliwy pw.
steenbergh 13.04.17
3

Python 3 + JavaScript, 101 bajtów

0//1or exec("function=lambda a:(lambda b:a);x=0")
y=2//2/2
f=(function(x)(x**y))//1 or(lambda x:x**y)

Pierwiastek kwadratowy w JS, kwadrat w Pythonie.

Działa w przeglądarce Firefox (testowanej na FF 52) i wymaga (function(x) x)(42) === 42poprawnej składni. Wymaga również ES7 dla **operatora.

kjaquier
źródło
Testowany na Firefox i działa. Czy można x=>x**yzamiast tego użyć ? A może Python się tym zadławi?
Ismael Miguel,
@IsmaelMiguel python nie obsługuje funkcji strzałek.
Rɪᴋᴇʀ
To nie działa dla Pythona. Funkcja nie jest słowem kluczowym.
Rɪᴋᴇʀ
To działa. Ponieważ functionnie jest słowem kluczowym, jest to prawidłowy identyfikator. Właśnie przypisałem mu funkcję noop (wewnątrz execinstrukcji).
kjaquier 18.04.17
3

bash i sh, 48 bajtów

Aktualizacja: Muszę przyznać się do porażki. Odpowiedź bash / sh Digital Trauma jest o wiele bardziej elegancka niż ta.


bc -l<<<"sqrt($1^(($(kill -l|wc -l)*3-3)/7+1))"

produkuje bash, produkuje n^2sh sqrt(n).


bcjest potrzebny tylko, aby sqrtmożna go było obliczyć. Różnica w zachowaniu polega na bashu i sh.

OK, technicznie rzecz biorąc, „sh”, którego używam, to wciąż bash, ale bash w trybie „POSIX” (co się dzieje, jeśli wywołujesz /bin/shzamiast /bin/bashw systemach, gdzie /bin/shjest alias bash). Jeśli tak jest w twoim systemie, możesz przetestować za pomocą:

/bin/bash prog.sh 4
/bin/sh prog.sh 4

Jest to oparte na jednej z różnic wyjaśnionych tutaj: https://www.gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html

Dave
źródło
1
Jak to działa?
Brian Minton
2
@BrianMinton Spróbuj uruchomić kill -l(wyświetla listę możliwych sygnałów; niczego nie zmienia) w bashi sh. Jest to jedna z wielu różnic, które można znaleźć tutaj: gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html
Dave
3

QBIC / QBasic, 26 18 bajtów

input a
?a^2'^.25

W QBasic wymaga liczby i wypisuje ją do kwadratu. Reszta kodu jest ignorowana, ponieważ QBasic postrzega go jako komentarz (' ).

QBIC używa tej samej instrukcji wejściowej. Następnie wydrukował tę samą liczbę do kwadratu, a następnie podniósł do potęgi jednej czwartej, skutecznie zrootując ją dwukrotnie. Wynika to 'z dosłowności kodu: czysty kod QBasic, który nie jest analizowany przez QBIC.

Steenbergh
źródło
2

Galaretka / Pip , 6 bajtów

EDYCJA: Jest to bajt krótszy do odwrócenia operacji.

RTa
²

Wypróbuj Jelly online!

Galaretka rozpoczyna wykonywanie na dole kodu („głównego linku”) i sprawdza, czy potrzebuje czegoś wyższego: rozpoznaje komendę do kwadratu i pośrednio dba o dane wejściowe i wyjściowe.

Wypróbuj Pip online!

Pip wykonuje górną linię, podnosząc do kwadratu (domyślnie odczytany z linii cmd) var a i domyślnie drukuje to. Dolna linia jest ignorowana.

Steenbergh
źródło
Alternatywą 6-byter: PRTaVS.
steenbergh 12.04.17
2

Wolfram Language / PHP , 25 bajtów

Uzyskaj kwadrat liczby w języku Wolfram i uzyskaj pierwiastek kwadratowy w PHP;

n^2
echo sqrt(_GET["n"]);

Pierwsza linia to język Wolfram. Po pierwsze, jesteś tym, który zmienia nw pasku wyszukiwania w Wolfram Alpha, więc kod jest również wejściem. Następnie wygeneruje odpowiedź po naciśnięciu Enter

n^2

Druga linia to PHP, Pobiera pierwiastek kwadratowy z n, który należy wprowadzić w pasku adresu (np. Ppcg.php.net?n=213, gdzie 213 jest wartością n)

echo sqrt($_GET["n"]);
Jimwel Anobong
źródło
1
Witamy w PPCG! Musisz jednak jakoś wziąć udział. Nie można zakładać, że liczba jest przechowywana w zmiennej. Przepraszam za to. Tutaj możesz wyświetlić listę dopuszczalnych metod we / wy. (dodatnie wyniki w odpowiedziach oznaczają, że jest to dozwolone, negatywne oznacza, że ​​nie jest dozwolone)
Rɪᴋᴇʀ 12.04.17
Rozumiem. Po prostu edytuję swoją odpowiedź. :) Inna sprawa, wyjaśnię tylko, dlaczego dodanie kolejnego kodu do wprowadzania danych w wolframie nie ma zastosowania.
Jimwel Anobong
Chętnie pomoże! Mam nadzieję, że zostaniesz w ppcg!
Rɪᴋᴇʀ 12.04.17
1
Język Wolfram oparty jest na matematyce, która wymaga formuły matematycznej, aby pisać w sposób nienaturalny. Inna sprawa, odpowiadający to wyjaśnia, to strona internetowa, która nie jest językiem, ale język wolfram jest językiem, który go obsługuje. Język Wolfrsm i WolframAlpha są powiązane z każdym z nich, ale nie są takie same. Są zupełnie inni.
Jimwel Anobong
2

PHP 5.6 i PHP 7, 55 bajtów

function f($n){list($a[],$a[])=[.5,2];echo $n**$a[0];}

PHP 5.6 produkuje n^2, PHP 7 produkuje sqrt(n).

Dave
źródło
2

macOS Bash i sh, 24 bajty

p=^4 :
bc<<<"sqrt($1)$p"

Na komputerze Mac shjest bashuruchomiony w trybie POSIX i w tym przypadku, jak na https://www.gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html :

Instrukcje przypisania poprzedzające specjalne wbudowane POSIX pozostają w środowisku powłoki po zakończeniu wbudowanego

Zatem dla shzmiennej zmienna pma wartość ^4po :uruchomieniu, ale dla bashzmiennej pma tę wartość tylko podczas: uruchomienia, a następnie jest pusta.

Będąc nadal naprawdę bashpod przykryciem, niektóre bashizmy, takie jak<<< tustringi, nadal działają zarówno w przypadku bash, jak i sh.


Bash and dash (i GNU utils), 27

Na Ubuntu 16.01 shjest dowiązaniem symbolicznym do dash, które nie robi <<<ciągów znaków. Mamy więc zamiast tego:

p=^4 :
echo "sqrt($1)$p"|bc

Wypróbuj online .

Cyfrowa trauma
źródło
Przyjemne użycie innego trybu / env!
programator5000
To jest znacznie lepsze niż moja wersja!
Dave
1

Oktawa / kardynał , 28 bajtów

Ten program wyrównuje dane wejściowe w Kardynale i pobiera pierwiastek kwadratowy w Oktawie

 %:=t.
disp(sqrt(input("")))

Wypróbuj online! (Oktawa)

Wypróbuj online! (Kardynał)

Tak więc% jest komentarzem jednowierszowym w Octave, więc po prostu pobiera dane i drukuje pierwiastek kwadratowy

disp(sqrt(input("")))

Aby program Kardynał nie napotkał błędu dzielenia przez zero i umarł, program

%:=t.

został przesunięty o spację, która jest ignorowana przez oba programy

Objaśnienie programu Kardynał:

Program rozpoczyna się od%
Otrzymuje dane wejściowe i przechowuje wartość jako aktywną:
Ustawia nieaktywną na równą aktywnej =
Mnoży aktywną przez nieaktywną t
Na koniec wyprowadza aktywną wartość.

Fəˈnɛtɪk
źródło
1

PHP / JavaScript, 43 bajty

<body onload=alert(<?=$x*$x.')>'.sqrt($x)?>

Dane wejściowe wyglądają następująco:

<?php $x = 10; ?>

Trochę samo wyjaśniające, ale czy to pasuje do zasad? Mój pierwszy kod do golfa :-)

rckd
źródło
1
Witamy w Code Golf! Dane wejściowe muszą być zmiennoprzecinkowe lub ciągiem, który jest tylko zmiennoprzecinkowy. Jeśli dobrze rozumiem, wymaga to osobnych danych wejściowych.
programator5000
Czy na pewno działa jako JavaScript? Wygląda na to obie wersje trzeba etap przetwarzania PHP (JavaScript nie będzie wiedział, co zrobić z alert(<?=$x*$x.')>'.sqrt($x)?)
Dave
0

CGL (CGL Golfing Language) / JS (ES6), 13 bajtów (niekonkurencyjny)

Nie konkuruje, ponieważ:

  1. CGL został wydany po tym pytaniu.
  2. CGL nie jest prawidłowym językiem . Z powodu i CGL jest technicznie poprawnym językiem.

Kod:

 x=>x**2
//-₂

JS:

Proste: anonimowa funkcja strzałki, która zwraca pierwszy argument podniesiony do kwadratu. Nienazwany kod języka jest komentowany.

CGL:

Non-breaking space przed pierwszą linią działa jak komentarz. Nie /ma operacji. W -drugim wierszu oznacza zmniejszenie aktualnego numeru stosu, który domyślnie wynosi 0. To ustawia go na -1, gdzie zapisywane są dane wejściowe. Zastępuje pierwszy element w bieżącym stosie z jej pierwiastek kwadratowy, co jest teraz, gdzie wejście jest umieszczony. Domyślnie bieżący stos jest wyprowadzany, generując pierwiastek kwadratowy z danych wejściowych.

programmer5000
źródło
To jest 13 bajtów. Nie wiem o CGL, ale jestem całkiem pewien, że JS używa ascii / utf-8. CGL prawdopodobnie użyłby również UTF-8, chyba że ma własną stronę kodową.
Rɪᴋᴇʀ
@Riker na razie używa ascii / utf-8. Dzięki.
programator5000