Sie müssen einen Polyglot 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.
auto
bedeutet "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 vonp
(es ist eine Speicherklasse, kein Typ)int
geäußert , sodass dies standardmäßig gilt (von dieser Standardeinstellungint
wird 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.5
ist 0.n^2
.Python 2 & Python 3,
2321 BytesPython 2.x produziert
n^2
, Python 3.x produziertsqrt(n)
.2 Bytes gespart dank @Dennis!
quelle
or
?/
die Ganzzahldivision (1/2==0
) ausgeführt. In Py3 macht es Gleitkommadivision (1/2==0.5)
.0
Ist Falsey.2sable / Jelly , 2 Bytes
2sable berechnet das Quadrat. Probieren Sie es online!
Jelly berechnet die Quadratwurzel. Probieren Sie es online!
Wie es funktioniert
2sable
Gelee
quelle
C (Klirren) und Python ,
1091076953 BytesC: 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!
quelle
return 0;
C99 enthält eine implizite Rückgabe von 0 fürmain()
spezifisch. Quellestdio.h
in diesem Fall überhaupt einbeziehen?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:
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.quelle
½
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.²
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 istJ
und tut nichts, also spielt es keine Rolle, was die zweite Zeile ist. Wenn Sie also eine Datei von haben00000101<newline>00011011
, sind es 3 Bytes. Ich denke, das einzige Problem ist, wenn sich die Newline an einer anderen Stelle in den Codepages befindet.C89 und C99, 47 + 3 = 50 Bytes
Benötigt
-lm
Flagge (+3)C89 produziert
n^2
, C99 produziertsqrt(n)
. Probieren Sie es online aus, um es in C89 zu testen !Um C89 zum Ausführen der
sqrt
Version zu bringen, sollte weniger Code benötigt werden, aber es besteht darauf, diesqrt
Funktion implizit mitint
s zu deklarieren .quelle
Oktave / MATLAB,
3129 BytesDies 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:
quelle
Basic / Delphi - 6 Zeichen
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!
quelle
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.05AB1E / Fireball , 3 Bytes
Die folgenden Bytes bilden das Programm:
05AB1E berechnet die Quadratwurzel, Fireball-Quadrate.
Erläuterung (05AB1E -
ý¹t
):Erklärung (Fireball -
²╣t
):Manchmal hilft es, eine unvollständige Sprache zu haben;)
quelle
PHP7 + JavaScript,
626158 BytesDas war tatsächlich schwieriger als ich erwartet hatte! Ich bin ziemlich überrascht, wie lang mein Code ist.
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ßernull
) sind immer wahr, sogarnew 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 liefert0
.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"
, wastrue
in JavaScript (da\0
als NULL-Byte analysiert wird) undfalse
in PHP (die'\0'
nicht als NULL-Byte analysiert werden, um die Zeichenkette zu vergleichen\0
mit 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
eval
der Code, der benötigt wird.PHP
PHP wird ausgeführt
echo$argv[1]**.5
(entspricht derecho 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 anzeigtalert
.Vielen Dank an @rckd für das Speichern von 1 Byte und @ user59178 für das Speichern von 3 Byte!
quelle
echo$argv[1]**.5
anstelle vonecho sqrt($argv[1])
05AB1E und Jelly , 4 Bytes
(05AB1E) - (Gelee)
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:
In der CP1252-Codierung von 05AB1E führt dies zu:
Das heißt, es wird immer noch das Quadrat ausgeben und den Rest ignorieren. Wenn diese Bytes mit Jellys Codepage codiert werden:
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.
quelle
Ɠ
und½
zwei Bytes codiert werden müssen. Die Bytesequenz6e 71 93 0a
(nqƓ½
für Jelly,nq“\n
für CP-1252) sollte jedoch in beiden Sprachen funktionieren.½
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.6e 71 93 0a
also 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.CJam / MATL , 8 Bytes
Berechnet das Quadrat in CJam ( Online testen ! ) Und die Quadratwurzel in MATL ( Online testen ! ).
Erklärung des Quadrats in CJam
Erklärung der Quadratwurzel in MATL
quelle
Python 2 und Forth,
4333 BytesProbieren Sie es online aus: Python 2 (Quadrat) | Viertens (sqrt)
Dies wird in Python als anonyme Funktion und
fsqrt
in Forth als integrierte Funktion ausgewertet . Python kann eine benannte Funktionf
für 2 Bytes mehr haben, indem esf=
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:quelle
JavaScript (ES6) / JavaScript (ES7), 52 Byte
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.
quelle
PHP und CJam ,
302925 BytesBerechnet das Quadrat in PHP und die Quadratwurzel in CJam. Muss mit
-r
PHP 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,v
dass 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!
quelle
C, Operation Flashpoint- Skriptsprache, 52 Byte
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.sqs
im Missionsordner und rufen Sie es dann mit aufhint format["%1", 2 call F]
.Ergebnis:
quelle
Reticular / Befunge-98 , 15 Bytes
2D Sprachen!
Befunge-98
Retikular
quelle
> <> / Jelly , 9 Bytes (7 Bytes Code + 2 für das '-v'-Flag in> <>)
Mann, ich habe wirklich Spaß mit der Jelly Link Struktur.
Berechnet das Quadrat in> <> und die Quadratwurzel in Jelly .
quelle
-v
steht 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-v
und dies ist daher der einfachstmögliche Aufruf.Python 3 + JavaScript, 101 Bytes
Quadratwurzel in JS, Quadrat in Python.
Funktioniert mit Firefox (getestet auf FF 52) und erfordert
(function(x) x)(42) === 42
eine gültige Syntax. Erfordert auch ES7 für den**
Bediener.quelle
x=>x**y
stattdessen zu verwenden ? Oder wird Python daran ersticken?function
es 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 derexec
Anweisung).Bash und Sh, 48 Bytes
Update: Ich muss Niederlage eingestehen. Die Bash / Sh-Antwort von Digital Trauma ist weitaus eleganter als diese.
bash produziert
n^2
, sh produziertsqrt(n)
.bc
wird nur benötigt damitsqrt
gerechnet 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/sh
statt/bin/bash
auf Systemen , bei denen/bin/sh
ein Alias für bash ist). Wenn dies auf Ihrem System der Fall ist, können Sie testen mit:Dies basiert auf einem der hier erläuterten Unterschiede: https://www.gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html
quelle
kill -l
(Listen möglich , Signale, ändert nichts) inbash
undsh
. Es ist einer der vielen Unterschiede, die Sie hier finden: gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.htmlQBIC / QBasic,
2618 BytesIn 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.quelle
Jelly / Pip , 6 Bytes
EDIT: Es ist ein Byte kürzer, um Operationen umzukehren.
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.
quelle
PRTaVS
.Wolfram Language / PHP , 25 Byte
Ermitteln Sie das Quadrat einer Zahl in Wolfram Language und die Quadratwurzel in PHP.
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
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).
quelle
PHP 5.6 und PHP 7, 55 Bytes
PHP 5.6 produziert
n^2
, PHP 7 produziertsqrt(n)
.quelle
macOS Bash and sh, 24 Bytes
Auf dem Mac
sh
wirdbash
in Posix - Modus ausgeführt wird , und in diesem Fall pro https://www.gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html :sh
Die Variablep
hat also für den Wert,^4
nachdem der:
ausgeführt wurde, aber für denbash
hat die Variablep
nur diesen Wert, während sie ausgeführt:
wird, und ist danach leer.Da
bash
einige 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
sh
es einen Symlink zudash
, der<<<
Herestrings nicht ausführt. Also haben wir stattdessen Folgendes:Probieren Sie es online aus .
quelle
Oktave / Kardinal , 28 Bytes
Dieses Programm quadriert die Eingabe in Kardinal und erhält die Quadratwurzel in Oktave
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
Damit das Kardinalprogramm nicht auf eine Division durch 0 stößt und das Programm stirbt
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.
quelle
PHP / JavaScript, 43 Bytes
Die Eingabe läuft wie folgt ab:
Ein bisschen selbsterklärend, aber passt es zu den Regeln? Mein erster Code Golf tho :-)
quelle
alert(<?=$x*$x.')>'.sqrt($x)?
)CGL (CGL Golfing Language) / JS (ES6), 13 Byte (nicht konkurrierend)
Nicht konkurrierend, weil:
CGL ist keine gültige Sprache .Aufgrund von+
undⓟ
ist CGL eine technisch gültige Sprache.Code:
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.quelle