Räuber - Quadrat mal Quadratwurzel


18

Aufgabe: Knacken Sie den verschlüsselten Code, um die Quadratwurzel einer ganzen Zahl n mit dem Quadrat davon zu multiplizieren !

Sie müssen einen Kommentar im Cops-Thread mit einem Link zu Ihrer Arbeitsquelle veröffentlichen und deutlich machen, dass Sie diesen geknackt haben . Im Titel Ihrer Antwort müssen Sie den Link zur ursprünglichen Antwort einfügen.

Regeln:

  • Sie können nur die Reihenfolge der Zeichen in der Originalquelle ändern.
  • Sichere Antworten können nicht mehr geknackt werden.
  • Die anderen Regeln, die im Thread der Polizei erwähnt werden
  • Bitte bearbeiten Sie die Antwort, die Sie knacken

GEWINNER: Emigna - 10 Submissons (hatte einige Probleme beim Zählen)

Lobende Erwähnungen: Notjagan, Plannapus, TEHTMI

Antworten:



9

JavaScript (ES7), Neil

_26_=>_26_**6.25**.5

Das Schwierige war natürlich, herauszufinden, was mit all den zusätzlichen Charakteren geschehen sollte. (Und auch diese Lösung nicht im falschen Thread zu posten, wie ich es am Anfang versehentlich getan habe. Oopsie ...)


1
@SethWhite: Ich musste alle Zeichen verwenden, die Neil in seinem verschlüsselten Code verwendet hat, sonst wäre dies kein gültiger Riss gewesen.
Ilmari Karonen

Wie funktioniert das?
Arjun

@Arjun _26_=>definiert eine anonyme Funktion mit einem Parameter namens _26_(Variablen können mit einem Unterstrich beginnen, aber nicht mit einer Zahl). Dann verwendet der Rest nur **as Math.pow(), um den Eingang auf die Potenz von 2,5 (6,25 Potenz 0,5) zu erhöhen.
Joe

Ah! Ich dachte, das _26_sei etwas ES7-spezifisches. Wussten Sie nicht, dass Variablen auch in dieser Form vorliegen können? (Ich habe noch nie eine Variable ohne Alphabet gesehen). Das war ein sehr kluger Ansatz von @Neil. Und Sie waren auch sehr schlau darin, es zu knacken! Habe deine wohlverdiente +1! :)
Arjun



4

C ++ (gcc) , 100 Bytes, Mr. Xcoder

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

Probieren Sie es online!


Gut gemacht! Bitte bearbeite die Antwort, die du knackst, weil ich es jetzt nicht kann!
Mr. Xcoder

Ein anonymer Benutzer schlug eine Bearbeitung vor, um 8 Bytes zu sparen, indem er das entfernt usingund gerade tutint main(){float n;std::cin>>n;std::cout<<pow(n,2.5);}
Martin Ender

Speichern Sie ein weiteres Byte #including <cmath> anstelle von math.h. :)
zyndor

4

Haskell, Leo

x=exp.(2.5*).log

Eine pointfree Funktion mit dem Namen x. Verbrauch: x 4->32.0


4

Informiere 7 , corvus_192

Cool, ein Inform7-Eintrag. :) Ich musste es nur versuchen.

Ich bin mir ziemlich sicher, dass dies die beabsichtigte Lösung ist:

R is a room.

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

Beachten Sie, dass diese Lösung aufgrund der Verwendung der real square root ofFunktion nur funktioniert, wenn sie mit dem Glulx-Backend kompiliert wurde .


Übrigens sind die doppelten Anführungszeichen und eckigen Klammern eigentlich unnötig; nur say n * n * real square root of nwürde genauso gut funktionieren. Die Punkte am Ende der Befehle könnten auch weggelassen werden; oder wir könnten die erste Periode beibehalten und stattdessen die Zeilenumbrüche entfernen. Andere Teile des Codes, die wir wegschneiden könnten, sind der Artikel "a" vor "room" und die Leerzeichen vor den Klammern und nach dem Doppelpunkt. Glücklicherweise können wir diese zusätzlichen Zeichen jederzeit auskommentieren, da wir ein Ersatzpaar von Klammern haben. ;) Das ist also auch eine gültige Lösung:

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

Um diese Lösung interaktiv zu testen, können Sie dem Code den folgenden Testsatz hinzufügen:

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

Nach dem Kompilieren und Ausführen des Programms können Sie z. B. f 4. f 6. f 9. f 25an der >Eingabeaufforderung Folgendes eingeben und erhalten:

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
>

Übrigens ist mir gerade aufgefallen, dass Inform (oder vermutlich Glulx) die letzte f 6falsche Dezimalstelle rundet : Der richtige Wert liegt viel näher an 88.18163 als an 88.18164. Glücklicherweise glaube ich nicht, dass dies die Richtigkeit der Lösung (en) beeinträchtigt, zumal die Herausforderung "einen beliebigen Rundungsmechanismus Ihrer Wahl" spezifizierte. :)


Ich bin sicher, dass ich vor einiger Zeit eine Inform 7-Geige gefunden habe, aber ich kann sie nicht finden, wenn ich suche. Wissen Sie, ob es irgendwo einen Online-Dolmetscher gibt?
Flunder

@Flounderer: Ich kenne eigentlich keine. Es gibt sicherlich Online-Player (auch auf JS-Basis) für den vom Inform 7-Compiler erstellten Glulx / Z-Maschinen-Bytecode, aber mir ist nichts bekannt, das direkten Inform 7-Quellcode benötigt, um ihn online zu kompilieren und auszuführen. Der Compiler / die IDE ist jedoch recht einfach zu installieren. Unter Ubuntu Linux ist es so einfach wie 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]]

Vielen Dank, dass Sie das Rundungsmaterial intakt gelassen haben!

Erläuterung: #(#)#^(1/(1+1))&@ymacht die Hauptarbeit des Multiplizierens yquadriert, aka y(y), und y‚s Quadratwurzel y^(1/(1+1)). Das #&@@@{1^(1),-1}Bit ist nur Junk, um die anderen Buchstaben zu #&@@verbrauchen , und wählt das nützliche Bit aus dem Junk aus.


4

MATL , 12 Bytes, Luis Mendo

10'U&+:'n/^P

Berechnen Sie 10/4 = 2,5, wobei 4 aus der Länge der Zeichenfolge resultiert. Verwenden Sie dies als Exponent. P ist hier ein No-Op.


4

Python 3, 44 Bytes, Kyle Gullion

Diese *waren ziemlich irreführend. Sehr schlau!

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

Aufgrund des recht eingeschränkten Zeichensatzes wäre ich sehr überrascht, wenn es neben der trivialen Umbenennung oder Neuordnung von Argumenten noch andere gültige Lösungen gäbe.


Du hast mich gut gemacht!
Kyle Gullion


3

Python 2, 60 Bytes, Anthony Pham

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

Basierend auf dem Verwerfen von Zeichen durch die Float-Division von Python 2 (die Standardeinstellung für /Ganzzahlen).


3

C, 50 Bytes, Dave

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

Probieren Sie es online!

Dies erfordert ein -lmCompiler-Flag, aber ich weiß nicht, wie es möglich wäre, dies ohne es zu lösen.


richtig und fast genau das, was ich hatte (Variable wurde \uad2fbei mir benannt). Gut gemacht; Ich dachte, ich hätte genug rote Heringe da drin gelassen, um die Leute noch viel länger zu beschäftigen! Auch die -lmFlagge wurde für mich mit Clang nicht benötigt (ich hätte es schon erwähnt!), Aber Sie haben Recht, genau genommen ist es erforderlich.
Dave

3

R, Flunder

Dies ist ein Riss der 33-Byte-Lösung von @Flounderer

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

Verwendung:

> 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

Ja, das ist nicht die beabsichtigte Lösung sin(pi), aber leider funktioniert es! +1
Flunder

Es war scan()^(-floor(-sin(pi)*2e17)/10)
Flunder

3

RProgN 2, ATaco

]2^\š*

Anscheinend braucht StackExchange zusätzliche Zeichen, also kann es losgehen.


Meine Lösung war ]š\2^*, aber beide arbeiten auf die gleiche Weise.
ATaco

3

HODOR, 198, dieser Typ

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

Erläuterung:

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

Hinweis: Ich musste einige Änderungen am get-Interpreter vornehmen, um ihn auf meinem Computer ausführen zu können (der von Ihnen veröffentlichte Interpreter akzeptiert unter anderem keine Kleinbuchstaben h).

Außerdem scheine ich nicht genug Repräsentanten zu haben, um Kommentare abzugeben. Wenn jemand @This Guy wissen lassen könnte, wäre ich dankbar

Ich denke, dies hat den Fehler behoben. Der Code beginnt jetzt mit Walder anstelle von Wylis, wodurch das zusätzliche Byte hinzugefügt wird


Fast dort. Ich musste einen Fehler in meinem Code ändern, damit Ihr Fehler nicht ganz richtig ist.
Caird Coinheringaahing


Obwohl Sie es hatten, haben Sie sich für eine andere Methode entschieden als ich, die die gleiche Anzahl von Bytes verwendet. Ihre Antwort würde tun, was Sie wollten, aber es ist nicht dasselbe wie meins. Auch hatte ich wegen den Namen zu ändern dies , damit ich bearbeitet , um Ihre Beiträge gemacht.
Caird Coinheringaahing

Zählt dies zur Verdeutlichung noch als Riss oder muss ich genau übereinstimmen?
wwj

Ich bin mir nicht ganz sicher. Ich werde in den Kommentaren fragen. +1 Ihre Lösung bringt mich zum Nachdenken!
Caird Coinheringaahing

3

C #, 172 Bytes, raznagul

Am schwierigsten war es, herauszufinden, was man mit all den Resten anfangen sollte.

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

Nett! Ich blieb auch bei den Resten hängen. Ich habe nicht daran gedacht, sie dem Klassennamen hinzuzufügen, doh !. Gut gemacht!
Emigna

+1 Nicht das, was ich beabsichtigt hatte, aber sehr schöne Lösung. ;)
Raznagul

3

EXCEL, 26 Bytes pajonk

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

A1 als Eingang IP2 enthält einen zweiten Eingang mit einem # N / A-Fehler. In diesem Fall gehört ISNA (IP2) zu 1

Gegen eine zusätzliche können () wir dies tun

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

Ist eine zweite Eingabe bei einer solchen Herausforderung zulässig?
Pajonk

@pajonk Die Regeln besagen "Sie können auf jede übliche Art und Weise Eingaben machen", daher gehe ich davon aus, dass Sie diesen Trick mit einer zweiten Eingabe machen
Jörg Hülsermann,

@pajonk Ich habe meinen Beitrag verbessert Es könnte sein, dass Sie einen kleinen Fehler gemacht haben
Jörg Hülsermann

Die Standardmethode für die Eingabe einer Nummer ist (glaube ich) die Eingabe einer Eingabe. Meiner Meinung nach wäre die zweite Eingabe unfair und gegen die Regeln. PS Es gibt keinen Fehler in der Anzahl der Klammern.
Pajonk

@pajonk Ich kann keine Kombinationen mit SIN und PI verwenden, da nicht genügend Klammern vorhanden sind. =SQRT(A1)*A1^2/SIN(PI()/2)Wenn Sie den #NA-Fehler durch Formatieren oder etwas anderes setzen, würde ich ihn als zusätzlichen zweiten Eingang sehen. SQRT und ISNA sind die einzigen zwei Funktionen, die ein wenig Sinn ergeben. Aber bitte fragen Sie den Mann, der die Frage entwickelt hat
Jörg Hülsermann

3

Python 3.6, 64 Bytes, Mr. Xcoder

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

Vielleicht nicht was beabsichtigt war, aber funktioniert;)

$ 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

Noch nicht genug Repräsentanten, um die Antwort des Cops-Threads zu kommentieren, sorry ... Würde mich freuen, wenn jemand das für mich tun könnte, danke!


@Herr. Xcoder kann, wie oben erwähnt, Ihren Beitrag im Cops-Thread nicht kommentieren. Tut mir leid :)
user4867444

Kam, um eine ähnliche Lösung zu posten, from math import pi as pp0012223467899;f=lambda x:x**2.5*1*(1)/1nur um zu sehen, dass ich geschlagen wurde. Ich habe einen Link zu diesem Beitrag im Cops-Thread für Sie hinzugefügt.
Kyle Gullion



3

R, Flunder

Dies ist ein Bruchteil der 31-Byte-Lösung von @ Flounderer:

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

Ok, das war eine schwierige Frage. Es wird eine Funktion erstellt, die aufgerufen wird `[.`. Das Argument für die Funktion wird aufgerufen und `]`durch Verwendung des 9. Elements der eingebauten Zeitreihe lh("eine reguläre Zeitreihe, die das luteinisierende Hormon in Blutproben in Abständen von 10 Minuten von einer menschlichen Frau, 48 Proben, angibt, auf 2,5 erhöht . ", das als Beispiel in einem der Basispakete von R verwendet wird). lh[9]wird hier oben durch sein Äquivalent ersetzt `[`(lh, 9). Durch Ersetzen fdes Funktionsnamens und ndes Argumentnamens enttarnt, wird die Funktion dannf=function(n)n^lh[9] .

Verwendung:

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

2

Python 2, 44 Bytes, Anthony Pham

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

Übernimmt die Eingabe von raw_input, konvertiert in int und erhöht auf power 2.5


2

JavaScript, fəˈnəˈtɛk

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

Erhält 5/2 bis 5 mal 2 zur negativen ersten Potenz, wobei 5 und 1 von der Länge der Saiten empfangen wurden. Erledigte den Ausweg in gewisser Weise, indem er die überflüssigen Zeichen auskommentierte.


2

C #, 112 Bytes, 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 Bytes, Okx

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

Probieren Sie es online!


Ah, ich wusste, dass es eine Problemumgehung für die Methode geben würde, mit der ich den Code "gesichert" habe. Gut gemacht!
Okx

@Okx: Ja, es ist sehr schwierig, 05AB1E mit zusätzlichem Code zu füllen, ohne dass dieser umgangen werden kann.
Emigna

Ich werde sehen, ob ich dich
kniffliger

@Okx: Freue mich schon darauf :) Ich habe auch eine Idee, die ich vielleicht nach der Arbeit umsetzen
möchte

2

Feuerball , 8 Bytes, Okx

♥²♥1Z/^*

Erläuterung:

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

Ich bin mir nicht sicher, ob es funktioniert. Ich habe momentan kein Java auf meinem Laptop. :(


Ich denke nicht, dass das funktionieren wird. Einfache Lösung, daher gebe ich Ihnen die Antwort. Sie müssen nur die tauschen Z1in 1Z.
Okx

Ich war mir sicher, dass ich dort einen Fehler gemacht habe. Aktualisiert.
Roman Gräf

2

Haskell , 64 Bytes, @nimi

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

Probieren Sie es online! Das hat Spaß gemacht. Ich habe zuerst herausgefunden, product.(<$>(($succ(cos$0))<$>[id,recip])).(**)was sich richtig verhält und was dann flip flip <$> () $ id .irgendwo hineinpassen musste .


2

R, Steadybox

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

Verwendung:

> 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

Original:a=function(s)s**2*s**(0.125*2*2)
Steadybox

2

05AB1E , 22 Bytes, P. Knops

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

Probieren Sie es online!

Erläuterung

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

Der Rest der Operationen wird niemals ausgeführt.
Wir hätten es auch ohne tun können, qindem wir ?nach der Berechnung das Gleichheitszeichen beispielsweise mit entzogen hätten '=.


1
Machte es nur zum Spaß: D
P. Knops

@ P.Knops: Das ist der beste Grund :)
Emigna
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.