Imprimez votre code à l'envers - inverse

83

Ecrivez un programme qui affiche son propre code source à l'envers, en d'autres termes, une éniuq .

Notation:

  • +50 si vous utilisez des données extraites d’Internet.
  • +25 si vous lisez votre propre code source.
  • +1 point par caractère
  • Le score le plus bas gagne.

Règles:

  • Non en utilisant d'autres fichiers (par exemple reverse.txt)
  • La longueur minimale du code est de deux caractères.
  • Votre programme ne peut pas être un palindrome.
Ike
la source
1
On dirait que cela a déjà été fait , sans la règle "pas de palindromes".
Iszi
3
Est-ce que ces scores sont des bonus ou des pénalités ? Vous devez spécifier avec des mots si quelque chose est une pénalité ou un bonus, car dire +10peut signifier soit "marquer comme s'il comportait 10 caractères de plus qu'il ne le fait réellement" ou "le code peut comporter 10 caractères supplémentaires qui ne le seront pas. être marqué ", ou d'autres interprétations.
AJMansfield
7
@AJMansfield Le score le plus bas signifie que + x serait une pénalité, -x serait un bonus.
Iszi
9
La seule question que j'ai, alors, est pourquoi l'extraction de données sur Internet est-elle plus pénalisée que la lecture du fichier source?
AJMansfield
4
Woohoo, 1ère place dans la liste des questions d'
Bouton de porte

Réponses:

69

GolfScript - 2


1

(ie \n1\nest le caractère de nouvelle ligne)

Sortie:

1

(ie 1\n)


Pour citer Ilmari :

GolfScript ajoute automatiquement une nouvelle ligne à la fin de la sortie

Ainsi, une nouvelle ligne suivie d'un numéro imprimera le numéro suivi d'une nouvelle ligne.

Justin
la source
14
+1 Je pensais que rien ne pourrait battre la solution Mathematica.
Kaya
26
Une solution assez ennuyeuse ...
theonlygusti
@theonlygusti C'est golfscript, whaddya expect ...
Programmes Redwolf
96

hein? , 5 personnages

!hcuO

En fait, je ne sais PAS du tout comment cela fonctionne, mais si vous téléchargez l’interprète, et si vous écrivez !hcuO, vous obtenezOuch!

Pour exécuter ceci, vous devez exécuter le programme comme ceci:

huh.exe !hcuO

Il cherchera en fait un fichier appelé !hcuO, mais il n’existe pas, donc il afficheOuch!

ProgramFOX
la source
93
+1 pour écrire quelque chose que vous ne comprenez pas
Cruncher
30
N’est-ce pas un peu ironique que vous ne compreniez pas comment fonctionne votre propre code, dans un esolang qui, par conception, n’est pas censé comprendre votre code non plus?
Iszi
@ Iszi C'est la blague.
AJMansfield
9
Je ne suis pas sûr que vous l'utilisiez huh?correctement, même si j'ai du mal à trouver la documentation appropriée. Il semble que l'utilisation est censée être huh.exe <path to source code>et Ouch!est renvoyée pour un chemin non valide. Essayez de placer votre code dans un fichier réel et de nourrir ce fichier comme argument pour huh?voir ce qui se passe. Il est également intéressant de voir que cela génère un Notes.txtfichier avec des commentaires.
Iszi
8
Ok, cette chose vient de me dire qu'elle pense comprendre mais je n'ai rien vu arriver. Peut-être que je devrais arrêter de jouer avec cela sur mon système principal.
Iszi
85

Mathematica, 3 caractères

a 2

a 2signifie afois 2. Donc, la réponse est 2 a.

Alephalpha
la source
2
Cela gagnera probablement à moins que quelqu'un puisse obtenir une solution à deux caractères.
Ike
22
En fait, je connais une solution à deux caractères. De plus en Mathematica: 1#. La sortie est #1.
Alephalpha
7
@alephalpha: Ensuite, vous devriez poster cela comme une réponse!
ProgramFOX
65

H9 + , 13 caractères

!dlrow ,olleH

Comme la page Web dit, tous les caractères qui ne sont pas H, 9ou +sont ignorés, donc mon programme imprimerontHello, world!

ProgramFOX
la source
30
Le seul et unique avantage pratique des langages ésotériques insensés est de répondre à ces questions insensées.
Totymedli
Ce serait plus pratique si ces questions l'étaient.
Kojiro
1
C'est vachement intelligent!
theonlygusti
40

Javascript: 34 caractères

reifitnedi detcepxenU :rorrExatnyS

sorties SyntaxError: Unexpected identifier, au moins dans la console Chrome

scrblnrd3
la source
8
Usage intelligent d'abuser du système par abus d'erreur
WallyWest
2
Vous avez fait ma journée, monsieur, D
major-mann,
4
Pas une idée originale, il y avait déjà une réponse à ce sujet en python 2.
o0 '.
1
@ Lohoris Désolé, je n'ai pas vu celui-là
scrblnrd3
1
Console Firebug dans Mozilla Firefox: tnemetats erofeb ; gnissim :rorrExatnyS=> SyntaxError: missing ; before statement.
Kenorb
27

Python, 43 41

_=']0~::[_%%_ tnirp;%r=_';print _%_[::~0]
shane
la source
24

Mathematica, 2 octets

1#

Les sorties:

#1

Jay Bosamiya
la source
20

TI-BASIC, 2

i2

iest le nombre imaginaire.

Les sorties 2i

Timtech
la source
1
Cela ne fonctionne que dans l'écran d'accueil, pas dans un PRGM.
kernigh
8
@kernigh L'avez-vous essayé? Ça fonctionne bien. (Si la dernière instruction d'un programme TI-BASIC est évaluée en tant qu'expression, son résultat est imprimé à la place de 'Terminé' à la fin du programme.)
AJMansfield
18

BASIC, 22 12 7 caractères

:-)

1 enil ni rorre xatnyS

EDIT: Si vous êtes autorisé à entrer dans le programme en mode immédiat, cela pourrait être réduit à rorre xatnyS(12 caractères).

Dans BBC BASIC, vous n'avez besoin que de 7 caractères:

ekatsiM
ossifrage délirant
la source
13

C ++ 472 caractères

Beaucoup de caractères, mais je ne peux pas penser à un moyen plus simple dans un langage basé sur c.

#include<iostream>
#include<string.h>
#define p(t) std::cout<<'}'<<';'<<')'<<strrev(&std::string(#t)[0])<<t;
char* strrev(char*p){char*t=p;char*q=p;while(q&&*q)++q;for(--q;p<q;++p,--q)*p=*p^*q,*q=*p^*q,*p=*p^*q;return t;}
int main(){p("(p{)(niam tni};t nruter;q*^p*=p*,q*^p*=q*,q*^p*=p*)q--,p++;q<p;q--(rof;q++)q*&&q(elihw;p=q*rahc;p=t*rahc{)p*rahc(verrts *rahc;t<<)]0[)t#(gnirts::dts&(verrts<<')'<<';'<<'}'<<tuoc::dts )t(p enifed#>h.gnirts<edulcni#>maertsoi<edulcni#");}
utilisateur11232
la source
13

frapper

$ dnuof ton dnammoc :found :hsab-
-bash: dnuof: command not found

Longueur: 31 caractères.


sh

$ dnuof ton dnammoc :found :hs-
sh: dnuof: command not found

Longueur: 29 caractères.

Celui-ci ne pourrait pas fonctionner sur certaines distributions Linux, mais fonctionnait sous OSX.


tcsh

$ .dnuof ton dnammoC :found.
.dnuof: Command not found.

Longueur: 26 caractères.


csh

% .dnuof ton dnammoC :found.
.dnuof: Command not found.

Longueur: 26 caractères.


Le gagnant est:

ksh

$ dnuof ton :found :hsk
ksh: dnuof: not found

Longueur: 21 caractères.


Ci-dessus devrait fonctionner sur tous les systèmes d'exploitation basés sur * Unix.

Kenorb
la source
32
Ça ne marche pas pour moi, j'ai une commande nomméednuof
Kroltan
8
J'ai oublié d'ajouter, cela ne fonctionne pas sur les distributions qui ont dnuofinstallé (peu importe ce que c'est). Damn hackers.
Kenorb
5
Hahaha, il y a une commande nommée dnuof? : D que fait-il?
Poignée de porte
11

GolfScript, 12 caractères

"-1%.`"-1%.`

Ce code prend la chaîne entre guillemets "-1%.`", l'inverse ( -1%), le duplique ( .) et un-evals ( `) la deuxième copie, en restaurant les guillemets autour.

Entrée précédente (13 caractères):

{`'.~'+-1%}.~

Basé sur la quine à 8 caractères {'.~'}.~de cette réponse ; les 5 caractères supplémentaires sont nécessaires pour stringifier et inverser la sortie.

Ps. Notez que GolfScript ajoute automatiquement une nouvelle ligne à la fin de la sortie. Si cela fait partie de la sortie, une nouvelle ligne correspondante peut être ajoutée à l'une des versions du code sans affecter la sortie, moyennant un coût d'un caractère supplémentaire.

Ilmari Karonen
la source
10

Befunge 98 - 10 caractères

"8k,'!1+,@

Cela fonctionne si votre interprète n'interprète pas les lignes après avoir "ajouté un espace supplémentaire. Si votre interprète interprète les lignes encapsulées de cette manière, cette solution à 11 caractères fonctionne ( car les espaces en double dans un littéral de chaîne sont interprétés comme une seule chose ):

"9k,'!1+,@ 

Si je peux utiliser gsans pénalité, ceux-ci fonctionnent également (7 et 8 caractères respectivement):

"5k,g,@

et

"6k,g,@ 
Justin
la source
9

Ruby, 60 ans

puts(2,s=<<2.chop.reverse,s)
puts(2,s=<<2.chop.reverse,s)
2

Basé sur un classique Ruby Quine.

histocrate
la source
Belle utilisation d'heredocs.
Jon Purdy
9

Perl, 41

$_=q{print~~reverse"\$_=q{$_};eval"};eval

Ancienne réponse de 52 caractères (27 + 25 pénalités)

open+0;print ~~ reverse <0>

Lit sa propre source, stocke l’inverse dans un scalaire et l’imprime.

smcg
la source
1
L' scalaropérateur peut être remplacé par ~~. Cependant, vous devez ajouter +25 à votre score pour lire votre propre code source.
breadbox
@breadbox a noté
smcg
+1 J'étais sur le point de poster quelque chose comme ma solution shell : $_='say"lave;\047",~~reverse,"\047=_\$"';eval, mais votre solution est plus courte :-) Notez que vous pouvez jouer au golf vers le bas à 39 caractères à l' aide say. J'espère que vous vaincrez toutes les bizarreries ésotériques :-)
Tomas
@Tomas suggérez-vous de remplacer printpar say? Cela finit par ne rien imprimer.
smcg
Avez-vous utilisé perl avec -Mfeature=sayoption?
Tomas
9

Fission , 6 octets

Un cas rare de quine généralisé qui a la même longueur que le quine normal :

"LO+!'

L'idée est la même que celle de la quine normale, mais nous utilisons un atome de gauche (commençant par le L) pour que le mode d'impression traverse le code dans l'ordre inverse.

Martin Ender
la source
8

J: 26

Quining standard (26 caractères) : en définissant une fonction et en lui passant sa propre définition, entre guillemets:

|.(,],2#{:)'|.(,],2#{:)'''

Pourrait probablement être raccourci.

Spécifique à J (33 caractères) : en définissant une variable et en demandant dans quel fichier la variable a été définie, c'est-à-dire celui-ci, puis en imprimant le contenu de ce fichier:

1!:2&2|.1!:1(4!:4 a=:<'a'){4!:3''

Doit être sauvegardé et exécuté à partir d'un script (c'est-à-dire pas dans le REPL, car la réponse à la question est "votre argument n'a pas été défini dans un fichier", il n'y a donc aucun fichier à lire).

Dan Bron
la source
2
Le second devrait avoir le bonus de + 25 pour lire son propre fichier.
Johannes Kuhn
2
@JohannesKuhn: pénalité, mais oui.
jazzpi
1
"Bonus" sonne mieux.
Johannes Kuhn
7

> <> , 25 octets

J'ai été surpris de constater que cela n'avait pas encore été fait. :)

...yhsif sllems gnihtemoS

Collez le code ici et lancez-le.

.est la commande Jump sautant xet ysortant de la pile et déplaçant l'adresse IP (x, y)dans la zone de code. Dans ce cas, la pile est vide, le seul message d'erreur de la langue est alors imprimé:

Something smells fishy...
mbomb007
la source
1
La meilleure réponse
Insane
7

Microscript , 11 octets

Je devais faire ça.

0"Caxq"Caxq

Étonnamment, c'est en fait plus court que le vrai quine le plus court connu de la langue. qet asont par ailleurs équivalents, à l'exception de l' qajout de guillemets, alors que ce an'est pas le cas.

SuperJedi224
la source
5

JavaScript jQuery 119 92 74 70 caractères

alert($("#answer-16051 pre code").text().split("").reverse().join(""))

Maintenant, en utilisant jQuery, comme minitech a suggéré dans les commentaires, et envelopper manuellement avec <pre><code>afin que je puisse utiliser text()sans crainte d'autres blocs de code dans ce post interférer. <h4>Lorsque je l'ai testé, le wrapping manuel avec était incompatible avec le chrome, il devrait donc maintenant fonctionner dans la plupart des navigateurs.

Ce programme, s’il est exécuté à partir de cette page, trouve le bloc de code directement au-dessus, inverse son contenu et le place dans une boîte d’alerte.

C'est assez facile à vérifier, il suffit de le coller dans la console de développement.

AJMansfield
la source
C’est bien plus long que la simple utilisation d’une fonction. Et vous devriez utiliser jQuery (sur cette page) ou du moins de querySelectortoute façon…
Ry-
@ minitech merci pour le tuyau, je l'ai échangé pour un querySelectormoment. Je voudrais examiner la possibilité jQuery, mais il semble que cela prendra un peu plus de temps pour moi de comprendre.
AJMansfield
@minitech ok, merci pour le jQuerytuyau. (J'ai seulement commencé à apprendre le javascript hier.)
AJMansfield
J'aime cette solution; Sortir des sentiers battus.
theonlygusti
4

PHP, 41 caractères (+25)

Je ne sais pas si j'ai bien compris la tâche. Mais voici un essai PHP:

while(!isset($s) || $s) echo isset($s) ? array_pop($s) : ($s = str_split(file_get_contents(__FILE__)) and null);

edit: cela peut être beaucoup plus court:

echo strrev(file_get_contents(__FILE__));

Mais comme cela peut être aussi simple, ce n’est probablement pas ce qui est demandé ...

nl-x
la source
Lorsque je clique sur Exécuter, je reçois toute une série de bêtises inutiles (en voici un extrait:; il >? ;)llun dna ))__ELIF__(f$(tilps_rts = s$( : )s$(pop_yarra ? )s$(tessi ohce )s$ || )s$(tessi!(elihw ;"stnetnoc_"=.f$ ;'teg_elif'=f$ php?<>?}};ESLAF nruter;"ec6x\i66x\02x\e47x\96x\rw y a beaucoup plus encore). Indiquez également le nombre de vos personnages. c'est un code golf. En outre, il semble que vous lisiez votre fichier source. Il faut donc ajouter 25 au nombre de vos personnages et c’est votre score. Le score le plus bas gagne.
Justin
@Quincunx Tout d'abord, c'est en arrière ... mais deuxièmement, c'est le code source généré par phpfiddle! (mais à l'envers ...) Ils semblent échapper à beaucoup de choses, essayant de garder les choses en sécurité. Remplacez array_poppar array_shiftpour que le code source ne soit pas inversé ...
nl-x
Oui, je peux voir le code source inversé, mais qu'en est-il de tout le texte étranger? Il y a beaucoup de séquences d'échappement, mais il en existe d'autres qui ne le sont pas (par exemple: ESLAF nruterie return FALSE).
Justin
@ Quincunx Désolé, je ne comprends pas si vous montrez de l'intérêt pour le fonctionnement de phpFiddle, ou si vous critiquez mon code. Si c'est le dernier cas, alors dans ma défense, mettez mon code dans un fichier .php et exécutez-le dans un navigateur, et tout fonctionnera correctement. Je pensais juste que phpfiddle était une bonne chose à vous laisser voir, donc vous pouvez voir un peu de son fonctionnement interne.
nl-x
4

MATLAB, 78 caractères:

 
|
.snoisserpxe ro stnemetats BALTAM ni dilav ton si retcarahc tupni ehT :rorrE

Notez que la solution nécessite de commencer par un caractère spécial (alt + 0160) et d’imprimer exactement le message inversé. (Contrairement à la solution python)

Dennis Jaheruddin
la source
4

Shell UNIX, 31

Véritable solution à 52 caractères:

A='printf "A$ lave;\047`echo $A|rev`\047=A"';eval $A

Mais méfiez-vous! L'honnêteté ne paie pas dans le monde d'aujourd'hui! La pénalité est trop basse !!

6 caractères + 25 = 31:

rev $0
Tomas
la source
Sur Mac OS X rev $0génère l'erreur: rev: illegal option -- b.
Kenorb
4

MS-DOS, 24 octets

eman elif ro dnammoc daB

Sortie:

Bad command or file name
Neil
la source
3

JavaScript, 62

function f(){alert((f+'f()').split('').reverse().join(''))}f()

Fonctionne pour moi sur la dernière version de Chrome (v 31.0.1650.63). Certains autres navigateurs peuvent donner une sortie différente. (Si vous inversez cette sortie, alors cela fonctionnerait: P)

Poignée de porte
la source
3

SmileBASIC, 118 102 octets

FOR I=-101TO.?MID$(("+CHR$(34))*3,30,102)[-I];:NEXTFOR I=-100TO.?MID$(("+CHR$(34))*3,30,102)[-I];:NEXT
12Me21
la source
2

JavaScript, 56

($=_=>_!=$._?_?$(_.slice(1))+_[0]:')':$('($='+$+')('))()
Ry-
la source
Veuillez indiquer votre environnement car cela ne fonctionne pas dans Chrome. Est-ce que Rhino ou quoi?
George Reith
@ GeorgeReith: Tout ce qui est supporté par la fonction de flèche ES6. Tous les SpiderMonkeys devraient fonctionner correctement, par exemple (Rhino inclus).
Ry-
2

CSS, 88 octets

<style>:before,*{display:block;unicode-bidi:bidi-override;direction:rtl;content:'<style>

Mettez une page HTML vide pour éviter tout conflit avec d’autres balises.

Maman Fun Roll
la source
2

JavaScript, 53 50 46 43 octets

q=_=>("q="+q+";q()").split("").reverse().join("");q()

(q=_=>`(q=${q})()`.split("").reverse().join(""))()

(q=_=>`(q=${q})()`.split``.reverse().join``)()

(q=_=>[...`(q=${q})()`].reverse().join``)()

S'il vous plaît aidez-moi à raccourcir cela.

ericw31415
la source
Vous n'avez pas besoin de l'emballage. q=_=>[...`q=${q}`].reverse().join`` fonctionne tout aussi bien.
Rɪᴋᴇʀ
Si je retire le wrapper, il ne s'exécutera pas automatiquement.
ericw31415
ce n'est pas nécessaire. Les fonctions sont bien.
Rɪᴋᴇʀ
Mais alors, le code retourne la référence de la fonction, pas la sortie de la fonction.
ericw31415
@ ericw31415 a raison. l'appel de fonction est nécessaire.
Mama Fun Roll
2

Fuzzy Octo Guacamole, 4 octets

KNU_

Kimprime _UNK, Npousse Noneet Upousse 0. Et _affiche la valeur la plus élevée sur la pile (mais n’imprime pas). Alors seulement _UNKest imprimé.

Bantha Chauve
la source
Pourquoi la Ksortie _UNK?
Caird coinheringaahing
@RandomUser demande plus de détails à Riker, il est le créateur de la langue. Je viens de lire la documentation.
Bantha chauve