Berechnen Sie ein Quadrat und eine Quadratwurzel!


48

Sie müssen einen erstellen, der das Quadrat der Eingabe in einer Sprache und die Quadratwurzel der Eingabe in einer anderen Sprache ausgibt. Die kürzeste Antwort in Bytes gewinnt!

Sie müssen eine Genauigkeit von mindestens 3 Dezimalstellen haben, und die Eingabe ist immer ein positiver Gleitkommawert.

Antworten:



90

C und C ++, 68 65 Bytes

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

Ursprüngliche Antwort:

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

Für beide Versionen produziert n^2C und C ++ produziert sqrt(n).


23
+1 als "Ha!" Für alle, die C und C ++ gleich behandeln.
DocMax

20
@ CAD97: In C autobedeutet "auf dem Stapel zuordnen". Das Schlüsselwort ist ziemlich nutzlos, da dies ohnehin die Standardeinstellung ist. Daher hat C ++ es neu verwendet, um etwas anderes zu bedeuten. In C wird jedoch keine Meinung über den Typ von p(es ist eine Speicherklasse, kein Typ) intgeäußert , sodass dies standardmäßig gilt (von dieser Standardeinstellung intwird heutzutage abgeraten, und sie ist wahrscheinlich nur deshalb vorhanden) Einige der Vorgänger von C hatten überhaupt keine Datentypen, aber Compiler verstehen sie immer noch. Und natürlich (int)0.5ist 0.

2
Das ist brilliant.
Quentin

1
Es wurde eine Stapelüberlauf-Frage dazu gefunden.
YSC

9
Ich denke, die Erklärung für diese Antwort würde verbessert, wenn man den Kommentar von @ ais523 bearbeitet, in dem erklärt wird, warum C produziert n^2.
Brian J

50

Python 2 & Python 3, 23 21 Bytes

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

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

2 Bytes gespart dank @Dennis!


Das ist so cool!
njzk2

Warum? Ist es der Platzmangel vorher or?
CHX

@chx In ​​Py2 wird /die Ganzzahldivision ( 1/2==0) ausgeführt. In Py3 macht es Gleitkommadivision ( 1/2==0.5). 0Ist Falsey.
Nic Hartley

warum dann nicht das Leerzeichen nach oder entfernen?
CHX

@chx Probier es selbst aus. Wenn Sie dies tun, wird ein Syntaxfehler ausgegeben.
Numbermaniac

32

2sable / Jelly , 2 Bytes

*.

2sable berechnet das Quadrat. Probieren Sie es online!

Jelly berechnet die Quadratwurzel. Probieren Sie es online!

Wie es funktioniert

2sable

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

Gelee

 .  Numeric literal; yield 0.5.
*   Raise the input to the power 0.5.
    This yields the square root.

7
Es ist, als ob diese Sprachen nur für diese Herausforderung erstellt wurden
FloatingRock

20

C (Klirren) und Python , 109 107 69 53 Bytes

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

C: Probieren Sie es online!

Python: Probieren Sie es online!

Funktioniert mit Kommentaren zu Polyglot. Der Rest ist ziemlich erklärend.

Zum ersten Mal mit C!

  • Dank @Riker einige Bytes gespart.
  • 2 Bytes gespart, indem unnötige Leerzeichen entfernt wurden.
  • Es wurden sehr viele Bytes gespeichert, indem eine Funktion für C anstelle von STDIN / OUT verwendet wurde.
  • Dank @Delioth wurden 16 Byte gespart, indem die Importanweisung oben entfernt wurde.

@Riker Will tun, danke.
Genosse SparklePony

Ich glaube, Sie können eine neue Zeile nach dem C-Kommentar (Zeile 2, letztes Zeichen) entfernen, da C kein Leerzeichen benötigt und es bereits eine wörtliche Zeichenfolge für Python ist. Da Sie keinen speziellen Code zurückgeben, können Sie das am Ende weglassen. return 0;C99 enthält eine implizite Rückgabe von 0 für main()spezifisch. Quelle
Delioth

@Delioth Eigentlich war es sinnvoller, nur die Funktion zu verwenden und das io zu löschen.
Genosse SparklePony

Oh ja, viel besser. Müssen Sie stdio.hin diesem Fall überhaupt einbeziehen?
Delioth

@Delioth tue ich nicht. Hoppla!
Genosse SparklePony

16

Ohm und Gelee , 3 Bytes

Gibt das Quadrat in Ohm aus, die Quadratwurzel in Jelly.

Ohm und Jelly verwenden unterschiedliche Einzelbyte-Codepages, sodass das Programm bei jeder Codierung anders aussieht.

xxd hexdump des programms:

00000000: fd7f 0a                                  ...

Gelee

Mit Jellys Codepage sieht es so aus:

’
½

Jelly verwendet die unterste Zeile als Hauptlink und ignoriert die anderen Links, sofern sie nicht ausdrücklich aufgerufen werden. Also macht es hier nur die Quadratwurzel ( ½) und gibt sie implizit aus.

Ohm

Bei Verwendung der Ohmschen Codepage (CP437) sieht dies folgendermaßen aus:

²⌂◙

²Ist die Quadratfunktion und und sind beide undefiniert, so quadriert das Programm nur die implizit gelesenen Eingaben und gibt sie implizit aus.


Nett! Die Anzahl der Bytes ist in Ordnung.
programmer5000

Ich habe meine Antwort auch deshalb auf 5 Bytes geändert, guter Fang.
Magic Octopus Urn

Wow, die erste Ohm-Antwort, die nicht von mir geschrieben wurde! Gut gemacht!
Nick Clifford

Wenn Sie die Jelly-Codepage verwenden, um das ½Byte abzurufen, wohin führt die ²Zuordnung? Ist es nur Müll, der immer noch ignoriert wird? Und umgekehrt für Ohm? Dann scheinen es 2 Bytes zu sein.
AdmBorkBork

1
Ich mache ein Beispiel, da ich mich nicht die Mühe machen möchte, die tatsächlichen Codepunkte nachzuschlagen. Angenommen, ²in Ohm steht der Code-Punkt 5. Der Code-Punkt 5 in Jelly ist %und tut nichts, also spielt es keine Rolle, wie die erste Zeile lautet. Angenommen, ½in Jelly ist 27, und Code-Punkt 27 in Ohm ist Jund tut nichts, also spielt es keine Rolle, was die zweite Zeile ist. Wenn Sie also eine Datei von haben 00000101<newline>00011011, sind es 3 Bytes. Ich denke, das einzige Problem ist, wenn sich die Newline an einer anderen Stelle in den Codepages befindet.
AdmBorkBork

15

C89 und C99, 47 + 3 = 50 Bytes

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

Benötigt -lmFlagge (+3)

C89 produziert n^2, C99 produziert sqrt(n). Probieren Sie es online aus, um es in C89 zu testen !


Um C89 zum Ausführen der sqrtVersion zu bringen, sollte weniger Code benötigt werden, aber es besteht darauf, die sqrtFunktion implizit mit ints zu deklarieren .


13

Oktave / MATLAB, 31 29 Bytes

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

Dies gibt das Quadrat in Oktave und die Quadratwurzel in MATLAB aus.

Erläuterung:

Die Syntax ist natürlich in MATLAB und Octave identisch (zumindest für dieses kleine Stück Code).

Dadurch wird eine anonyme Funktion erstellt:

@(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')

12

Basic / Delphi - 6 Zeichen

sqr(x)

Quadratwurzel in Basic und Quadrat in Delphi.

Sie können einen Debugger verwenden, um den Ausdruck zu überprüfen und damit alle Ausgabeanforderungen zu erfüllen!


2
Nimmt dies selbst Eingang?
12.

Nein, aber auch einige andere Einreichungen, einschließlich der C / C ++.

Trotzdem ungültig, das ändert nichts. Ich werde versuchen, diese auch zu kommentieren.
Freitag,

1
Kannst du welche verlinken, die das nicht tun? Ich kann keine finden. Das C / C ++ ist eine Funktion, nimmt keine Eingabe, sondern einen Parameter.
13.

3
Ja, aber was ist x? Sie können nicht davon ausgehen, dass ein Wert gespeichert wurde. Möglicherweise können Sie die entfernen (x)und als Rückgabe einer Funktion kennzeichnen.
Freitag,

11

05AB1E / Fireball , 3 Bytes

Die folgenden Bytes bilden das Programm:

FD B9 74

05AB1E berechnet die Quadratwurzel, Fireball-Quadrate.

Erläuterung (05AB1E - ý¹t):

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

Erklärung (Fireball - ²╣t):

²       Square input
 ╣      Unassigned
  t     Unassigned

Manchmal hilft es, eine unvollständige Sprache zu haben;)


1
05AB1E und Fireball verwenden unterschiedliche Kodierungen. Betrifft dies die Programme?
Dennis

@Dennis Darüber habe ich nicht nachgedacht. Das Speichern desselben Programms in verschiedenen Codierungen zählt also nicht für Polygoten?
Okx

5
Afaik, die Standardeinstellung ist, dass die Byteströme übereinstimmen müssen.
Dennis

10

PHP7 + JavaScript, 62 61 58 Bytes

Das war tatsächlich schwieriger als ich erwartet hatte! Ich bin ziemlich überrascht, wie lang mein Code ist.

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


Wie funktioniert es?

Dies funktioniert, indem Sie den auszuführenden Code aus dem Array auswählen.
Die Erkennung von PHP und JavaScript erfolgt mit +![].

In PHP ist [](leeres Array) ein falscher Wert, während es in JavaScript ein wahrer Wert ist (Objekte (außer null) sind immer wahr, sogar new Boolean(false)wahr!).
Aber ich muss es auf einen numerischen Wert bringen, also verwende ich einfach ein not( !) und konvertiere es in eine Ganzzahl (mit dem +).
Jetzt liefert PHP den Wert 1, während JavaScript liefert 0.
Durch Platzieren des Codes in einem Array an diesen Indizes können wir den richtigen Code für die gewünschte Sprache auswählen.
Dies kann verwendet werden [JS,PHP][+![]], um den Code der richtigen Sprache zu erhalten.

Bei früheren Polyglotten habe ich verwendet '\0'=="\0", was truein JavaScript (da \0als NULL-Byte analysiert wird) und falsein PHP (die '\0'nicht als NULL-Byte analysiert werden, um die Zeichenkette zu vergleichen \0mit dem NULL-Byte).
Ich bin froh, dass ich es geschafft habe, diesen Scheck auf zu reduzieren +!'0'.
Umso mehr freue ich mich über @rckd , das es auf die aktuelle Version reduziert hat!

Von da an ist es einfach evalder Code, der benötigt wird.

PHP

PHP wird ausgeführt echo$argv[1]**.5(entspricht der echo sqrt($argv[1]);Quadratwurzel der Zahl), erhält den Wert aus dem 2. Argument und zeigt ihn in der Standardausgabe an.

JavaScript

Es wird JavaScript ausgeführt alert((_=prompt())*_), das die quadrierte Zahl in einem anzeigt alert.



Vielen Dank an @rckd für das Speichern von 1 Byte und @ user59178 für das Speichern von 3 Byte!


1
! [] sparen Sie 1 Byte :-)
rckd

1
@ ckd Heilige Kuh! Völlig vergessen, leere Arrays. Danke! Ich habe die Frage bearbeitet und erklärt, wie es funktioniert.
Ismael Miguel

1
Sie können 3 Bytes sparen, indem Sie echo$argv[1]**.5anstelle vonecho sqrt($argv[1])
user59178 13.04.17

Wow, schön zu sparen! Danke! Ich habe es in die Antwort aufgenommen.
Ismael Miguel

8

05AB1E und Jelly , 4 Bytes

nqƓ½

(05AB1E) - (Gelee)

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

Jemand anderes hat einen guten Punkt gemacht, denke ich, da die UTF-8-Zeichen nicht denselben Vorgang für alle Codepages gemeinsam haben, für die sie technisch jeweils 2 Byte codieren. Betrachtet man dies jedoch als Hex-Dump:

6e 71 93 0a

In der CP1252-Codierung von 05AB1E führt dies zu:

nq“\n

Das heißt, es wird immer noch das Quadrat ausgeben und den Rest ignorieren. Wenn diese Bytes mit Jellys Codepage codiert werden:

nqƓ½

Welcher der ursprünglich beabsichtigte Code ist, führt bei der Ausführung zu dem gewünschten Ergebnis, wenn die Eingabe und der Befehl sqrt übernommen werden.


2
Dies sind in UTF-8 tatsächlich 6 Bytes, da beide Ɠund ½zwei Bytes codiert werden müssen. Die Bytesequenz 6e 71 93 0a( nqƓ½für Jelly, nq“\nfür CP-1252) sollte jedoch in beiden Sprachen funktionieren.
Dennis

@Dennis ½auf beiden Codepages zu sein, lässt nicht zu, dass es als eine einzige zählt, weil es sich um verschiedene Operationen handelt, von denen ich annehme? Ich bin immer noch verwirrt über die ganze Codepage-Sache.
Magic Octopus Urn

1
Das Scoring in Bytes bedeutet, dass Byteströme gezählt wurden. Sofern der Interpreter die Codierung einiger Zeichen in einer Codepage und anderer Zeichen in einer anderen Codepage nicht unterstützt, können wir dies nicht für Bewertungszwecke tun.
Dennis

4
@carusocomputing Ihre Übermittlung ist die 4 Bytes, 6e 71 93 0aalso gibt es kein "theoretisches" über das Beanspruchen von 4 Bytes. Fordern Sie einfach 4 Bytes an. Es kommt einfach so vor, dass in der 05AB1E-Standardcodierung eine Sache gelesen wird, die genau das tut, was Sie wollen, während in der Jelly-Standardcodierung eine andere Sache gelesen wird, die genau das tut, was Sie wollen. Nur weil zwei Kodierungen dasselbe Zeichen kodieren können, bedeutet dies nicht, dass das Zeichen in beiden gleich ist. Denken Sie nur an Kodierungen wie eine numerische Chiffre mit einer bereits geteilten Nachschlagetabelle, und hoffentlich erhalten Sie ein gutes Startmodell.
Dave

@ Dave Ich muss Dennis dann falsch interpretiert haben.
Magic Octopus Urn

6

CJam / MATL , 8 Bytes

ld_*GX^!

Berechnet das Quadrat in CJam ( Online testen ! ) Und die Quadratwurzel in MATL ( Online testen ! ).

Erklärung des Quadrats in 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

Erklärung der Quadratwurzel in 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

Hallo! Schöne Vorlage! Möchtest du wie bei anderen Antworten eine Erklärung hinzufügen?
programmer5000

@ programmer5000 Ich habe einen Fehler behoben und die Erklärungen hinzugefügt
Luis Mendo

5

Python 2 und Forth, 43 33 Bytes

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

Probieren Sie es online aus: Python 2 (Quadrat) | Viertens (sqrt)

Dies wird in Python als anonyme Funktion und fsqrtin Forth als integrierte Funktion ausgewertet . Python kann eine benannte Funktion ffür 2 Bytes mehr haben, indem es f=vor dem Lambda steht.

Das Forth-Programm verwendet ein Fließkomma-Literal , das in Forth in wissenschaftlicher Notation geschrieben werden muss. Pi abgeschnitten auf 3 Dezimalstellen ( 3.141) würde so geschrieben werden:

3141e-3

5

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

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

Gibt das Quadrat der Eingabe in ES7 und die Quadratwurzel in ES6 zurück. Sehr schwierig zu testen, es sei denn, Sie haben einen älteren Browser, der ES6, aber nicht ES7 unterstützt.

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

console.log(f(4));


Klug! Gute Arbeit in diesem Fall!
programmer5000

Gibt es einen Grund für die Backticks? Scheint, als würden einfache Anführungszeichen die Arbeit erledigen.
JLRishe

@ JLRishe Nope, kein Grund :)
Tom

5

PHP und CJam , 30 29 25 Bytes

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

Berechnet das Quadrat in PHP und die Quadratwurzel in CJam. Muss mit -rPHP ausgeführt werden.

PHP

Löst das erste Kommandozeilenargument ( $argv[1]) hoch 2 und gibt es aus. Hier $argv[1]wird die Variable tatsächlich als Inline-Variable in eine Zeichenfolge eingefügt, die vor der Exponentiation in eine Zahl umgewandelt wird. Dies liegt daran, vdass es sich bei CJam nicht um eine gültige Anweisung handelt, die beim Parsen zu Fehlern führt, das Einfügen in eine Zeichenfolge jedoch keine Probleme verursacht.

# Beginnt ein Kommentar, so wird alles danach ignoriert.

Probieren Sie es online!

CJam

Der erste Teil des Codes enthält ECHO"$argv[1]"**2;#eine Reihe von Werten und führt eine Reihe von Operationen aus, die alle völlig unbrauchbar sind. Wichtig ist nur, dass sie keine Fehler verursachen, denn gleich danach wird ];der gesamte Stack in ein Array eingebunden und anschließend verworfen.

Danach liest es ein Double von input ( rd), erhält seine Quadratwurzel ( mq) und gibt es implizit aus.

Probieren Sie es online!


5

C, Operation Flashpoint- Skriptsprache, 52 Byte

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

In einem OFP-Skript macht ein Semikolon am Anfang einer Zeile diese Zeile zu einem Kommentar, während C das zusätzliche Semikolon nicht berücksichtigt.

C:

Probieren Sie es online!

OFP-Skriptsprache:

Speichern Sie als init.sqsim Missionsordner und rufen Sie es dann mit auf hint format["%1", 2 call F].

Ergebnis: Bildbeschreibung hier eingeben


Okay, das ist ziemlich cool. Wie findest du diese Scritping-Sprache?
Freitag,

@Riker Operation Flashpoint war schon immer eines meiner Lieblingsspiele. Ich habe viele Dinge mit seiner Skriptsprache gemacht.
Steadybox

3

Reticular / Befunge-98 , 15 Bytes

2D Sprachen!

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

Befunge-98

/&:*.@

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

Retikular

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

 i          read line of input
  n         cast to number
   :o#      square root
      p     print
       ;    terminate

3

> <> / Jelly , 9 Bytes (7 Bytes Code + 2 für das '-v'-Flag in> <>)

Mann, ich habe wirklich Spaß mit der Jelly Link Struktur.

:*n;
½

Berechnet das Quadrat in> <> und die Quadratwurzel in Jelly .


Dürfen Sie das -v nicht auch in Gelee verwenden?
12.

Die Verwendung von -vsteht meiner Meinung nach im Einklang mit der [am besten bewerteten Antwort [( codegolf.meta.stackexchange.com/a/11431/44874 ) auf einer Meta-Frage, die diesen Fall behandelt. Der ><>Dolmetscher benötigt das -vund dies ist daher der einfachstmögliche Aufruf.
Steenbergh

3

Python 3 + JavaScript, 101 Bytes

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)

Quadratwurzel in JS, Quadrat in Python.

Funktioniert mit Firefox (getestet auf FF 52) und erfordert (function(x) x)(42) === 42eine gültige Syntax. Erfordert auch ES7 für den **Bediener.


Getestet auf Firefox und es funktioniert. Ist es möglich, x=>x**ystattdessen zu verwenden ? Oder wird Python daran ersticken?
Ismael Miguel

@IsmaelMiguel Python unterstützt keine Pfeilfunktionen.
13.

Dies funktioniert nicht für Python. Funktion ist kein Schlüsselwort.
13.

Es funktioniert. Da functiones sich nicht um ein Schlüsselwort handelt, handelt es sich um eine gültige Kennung. Also habe ich ihm gerade eine Noop-Funktion zugewiesen (innerhalb der execAnweisung).
Kjaquier

3

Bash und Sh, 48 Bytes

Update: Ich muss Niederlage eingestehen. Die Bash / Sh-Antwort von Digital Trauma ist weitaus eleganter als diese.


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

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


bcwird nur benötigt damit sqrtgerechnet werden kann. Der Unterschied im Verhalten liegt zwischen bash und sh.

OK, technisch die „sh“ Ich verwende noch bash, aber bash in „POSIX“ -Modus (die , wenn Sie aufrufen geschieht /bin/shstatt /bin/bashauf Systemen , bei denen /bin/shein Alias für bash ist). Wenn dies auf Ihrem System der Fall ist, können Sie testen mit:

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

Dies basiert auf einem der hier erläuterten Unterschiede: https://www.gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html


1
Wie funktioniert das?
Brian Minton

2
@BrianMinton Versuchen ausgeführt kill -l(Listen möglich , Signale, ändert nichts) in bashund sh. Es ist einer der vielen Unterschiede, die Sie hier finden: gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html
Dave

3

QBIC / QBasic, 26 18 Bytes

input a
?a^2'^.25

In QBasic nimmt es eine Zahl und gibt diese Zahl im Quadrat aus. Der Rest des Codes wird ignoriert, da QBasic ihn als Kommentar ansieht ( ').

QBIC verwendet dieselbe Eingabeanweisung. Anschließend wurde die gleiche Zahl im Quadrat gedruckt, dann auf die Potenz eines Viertels erhöht und effektiv zweimal verwurzelt. Dies liegt daran, 'dass es sich um ein Codeliteral handelt: Reiner QBasic-Code, der nicht von QBIC analysiert wird.


2

Jelly / Pip , 6 Bytes

EDIT: Es ist ein Byte kürzer, um Operationen umzukehren.

RTa
²

Probieren Sie Jelly online aus!

Jelly startet die Ausführung am Ende des Codes (seinem 'Hauptlink') und prüft, ob etwas höheres erforderlich ist: Es erkennt den Befehl zum Quadrieren und kümmert sich implizit um die Eingabe und Ausgabe.

Probieren Sie Pip online aus!

Pip führt die oberste Zeile aus, quadriert die (implizit aus der cmd-Zeile gelesene) Variable a und gibt diese implizit aus. Die unterste Zeile wird ignoriert.


Alternative 6-byter: PRTaVS.
Steenbergh

2

Wolfram Language / PHP , 25 Byte

Ermitteln Sie das Quadrat einer Zahl in Wolfram Language und die Quadratwurzel in PHP.

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

Erste Zeile ist Wolfram Language. Zunächst müssen Sie n in der Suchleiste von Wolfram Alpha ändern, damit der Code auch die Eingabe ist. Dann wird die Antwort generiert, wenn Sie die Eingabetaste drücken

n^2

Die zweite Zeile ist PHP. Sie gibt die Quadratwurzel von n an, die in die Adresszeile eingegeben werden soll (z. B. ppcg.php.net?n=213, wobei 213 der Wert von n ist).

echo sqrt($_GET["n"]);

1
Willkommen bei PPCG! Sie müssen jedoch irgendwie Eingaben vornehmen. Sie können nicht davon ausgehen, dass die Nummer in einer Variablen gespeichert ist. Das tut mir leid. Hier können Sie die Liste der zulässigen E / A-Methoden anzeigen. (Positive Bewertungen für die Antworten bedeuten, dass es erlaubt ist, negative Mittel nicht erlaubt)
Rɪᴋᴇʀ

Verstanden. Ich bearbeite nur meine Antwort. :) Eine andere Sache, ich erkläre nur, warum das Hinzufügen eines weiteren Codes für die Eingabe in Wolfram nicht anwendbar ist.
Jimwel Anobong

Freue mich zu helfen! Hoffe du bleibst in ppcg!
12.


1
Wolfram Language basiert auf Mathematica, das mathematische Formeln benötigt, um nicht natürlich geschrieben zu werden. Eine andere Sache, die der Antwortende ausräumt, ist die Website, die nicht die Sprache ist, sondern die Wolfram-Sprache, die sie unterstützt. Wolfrsm Language und WolframAlpha sind miteinander verwandt, aber nicht dasselbe. Das ist ganz anders.
Jimwel Anobong

2

PHP 5.6 und PHP 7, 55 Bytes

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

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


2

macOS Bash and sh, 24 Bytes

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

Auf dem Mac shwird bashin Posix - Modus ausgeführt wird , und in diesem Fall pro https://www.gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html :

Zuweisungsanweisungen vor POSIX-Spezial-Buildins bleiben nach Abschluss des Buildins in der Shell-Umgebung erhalten

shDie Variable phat also für den Wert, ^4nachdem der :ausgeführt wurde, aber für den bashhat die Variable pnur diesen Wert, während sie ausgeführt :wird, und ist danach leer.

Da basheinige Bashismen, wie <<<Herestrings, immer noch im Verborgenen sind, funktionieren sie sowohl für Bash- als auch für Sh-Fälle.


Bash and Dash (und GNU-Utils), 27

Unter Ubuntu 16.01 gibt shes einen Symlink zu dash, der <<<Herestrings nicht ausführt. Also haben wir stattdessen Folgendes:

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

Probieren Sie es online aus .


Gute Verwendung eines anderen Modus / env!
programmer5000

Das ist viel besser als meine Version!
Dave

1

Oktave / Kardinal , 28 Bytes

Dieses Programm quadriert die Eingabe in Kardinal und erhält die Quadratwurzel in Oktave

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

Probieren Sie es online! (Oktave)

Probieren Sie es online! (Kardinal)

% Ist also ein einzeiliger Kommentar in Octave, also wird er nur eingegeben und gibt die Quadratwurzel aus

disp(sqrt(input("")))

Damit das Kardinalprogramm nicht auf eine Division durch 0 stößt und das Programm stirbt

%:=t.

wurde mit einem Leerzeichen verschoben, das von beiden Programmen ignoriert wird

Erklärung des Kardinalprogramms:

Das Programm startet bei%.
Es empfängt Eingaben und speichert den Wert als aktiv:
Es setzt den inaktiven Wert auf den aktiven Wert =
Es multipliziert den aktiven mit dem inaktiven t.
Schließlich gibt es den aktiven Wert aus.


1

PHP / JavaScript, 43 Bytes

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

Die Eingabe läuft wie folgt ab:

<?php $x = 10; ?>

Ein bisschen selbsterklärend, aber passt es zu den Regeln? Mein erster Code Golf tho :-)


1
Willkommen beim Code Golf! Die Eingabe muss ein Gleitkomma oder eine Zeichenfolge sein, die nur ein Gleitkomma ist. Wenn ich das richtig verstehe, ist eine separate Eingabe erforderlich.
programmer5000

Sind Sie sicher, dass dies als JavaScript ausgeführt wird? Es sieht so aus, als ob beide Versionen eine PHP-Verarbeitungsstufe benötigen (JavaScript würde nicht wissen, was zu tun ist alert(<?=$x*$x.')>'.sqrt($x)?)
Dave

0

CGL (CGL Golfing Language) / JS (ES6), 13 Byte (nicht konkurrierend)

Nicht konkurrierend, weil:

  1. Nach dieser Frage wurde CGL freigelassen.
  2. CGL ist keine gültige Sprache . Aufgrund von und ist CGL eine technisch gültige Sprache.

Code:

 x=>x**2
//-₂

JS:

Einfach: Eine anonyme Pfeilfunktion, die das erste Argument im Quadrat zurückgibt. Der unbenannte Sprachcode ist auskommentiert.

CGL:

Das geschützte Leerzeichen vor der ersten Zeile verhält sich wie ein Kommentar. Die /s sind No-Ops. Das -in der zweiten Zeile bedeutet, die aktuelle Stack-Nummer zu dekrementieren, die standardmäßig 0 ist. Dadurch wird sie auf -1 gesetzt, wo die Eingabe gespeichert wird. Das ersetzt das erste Element im aktuellen Stapel durch seine Quadratwurzel, in der jetzt die Eingabe platziert wird. Standardmäßig wird der aktuelle Stapel ausgegeben, wobei die Quadratwurzel der Eingabe ausgegeben wird.


Das sind 13 Bytes. Ich weiß nicht über CGL, aber ich bin ziemlich sicher, dass JS ASCII / UTF-8 verwendet. CGL würde wahrscheinlich auch UTF-8 verwenden, es sei denn, es hat eine eigene Codepage.
Freitag,

@ Riker für jetzt verwendet es ASCII / UTF-8. Vielen Dank.
programmer5000
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.