Stampa l'ultimo, medio e primo carattere del codice


60

La sfida è semplice: stampa l'ultimo, medio e primo carattere del codice sorgente del tuo programma, in questo ordine.

Il carattere medio è definito come segue, assumendo una lunghezza di ncaratteri di origine e 1-indicizzazione:

  • Se nè pari, stampa i caratteri n/2-th e n/2 + 1-th. ( abcdef == cd)
  • Se nè dispari, stampa (n-1)/2 + 1-th carattere. ( abcde == c)

Regole

  • Nessun input, stampa l'ultimo, il mezzo e il primo carattere nel codice sorgente, nel modulo [last][middle][first]. Questa sarà lunga 3-4 caratteri.
  • L'output non deve contenere spazi vuoti finali. Tuttavia, se lo spazio bianco è un primo, medio o ultimo carattere, deve essere stampato come tale.
  • Il codice sorgente deve contenere n >= 3caratteri.
  • Il codice deve essere composto da >= 3caratteri univoci.
  • Sono vietate le scappatoie standard.
  • Si tratta di , quindi vince la soluzione più breve nei personaggi .

Campioni

# Form: [code] --> [output]
xyz --> zyx
abcd --> dbca
1 --> # not allowed: too short
abcde --> eca
aaabb --> # not allowed: not enough unique characters
System.out.print("S;pr"); --> ;prS
this is a test --> ts t
123[newline]45 --> 53[newline]1

Proposta di sfida


6
Forse sono solo io, ma "Il codice deve essere composto da> = 3 caratteri univoci". suggerisce che tutti i caratteri del programma dovrebbero essere univoci, mentre devi solo avere almeno 3 caratteri distinti.
Grzegorz Oledzki,

4
@Belhenix Meno di tre personaggi unici consente soluzioni tanto semplici quanto 121per molte lingue.
Khuldraeseth na'Barya,

2
Se qualcuno riesce a trovare un linguaggio basato su stack che utilizza -per negazione e stampa implicitamente con un avanzamento riga, \n1-è un tre-tre. La mia ricerca è stata finora inutile.
Khuldraeseth na'Barya,

3
@Belhenix Whitespace è certamente possibile, ha abbastanza caratteri unici e validi (spazio, avanzamento riga, tab).
bigyihsuan,

2
Non è possibile cambiarlo ora con 58 risposte, ma richiedere "la prima lettera di codice deve essere diversa dall'ultima lettera di codice" avrebbe escluso molte risposte banali, inclusa l'attuale risposta principale. Questo potrebbe essere stato l'intento di "> = 3 caratteri univoci", ma tale requisito non è in realtà molto difficile.
manassehkatz,

Risposte:


171

JavaScript, 9 7 byte

N=>a=-N

Uscite: NaN

Provalo online!


4
Molto intelligente. Questo era il tatto che stavo cercando di prendere, ma non riuscivo a imbattermi in un linguaggio con un output di errori abbastanza brusco.
ouflak,

49
Questa è una delle migliori risposte Javascript che abbia mai visto qui
Daniel

21

Erba , 17 byte

wWWwwwVVwWWwWWWww

Provalo online!

-2 byte grazie a jimmy23013.

Uscite www. Grass ignora tutti i personaggi tranne w, We v. I due Vs vengono quindi ignorati; sono lì per garantire che il personaggio medio sia un w- Non ho idea di come produrre vo Win Grass ... Avrei potuto usare un altro personaggio invece di V, ma Vpreservare l'estetica del codice.


1
" Fortunatamente, il personaggio centrale ha finito per essere aw e non av o W - Non ho idea di come produrre v o W in Grass ... " Lol. xD Ho provato a fare qualcosa di simile in Whitespace con solo tre personaggi (spazio, tabulazione, nuova riga), ma sfortunatamente non sono stato così fortunato .. Per fortuna posso semplicemente aggiungere un mucchio di no-op finali per risolverlo, però.
Kevin Cruijssen,

@KevinCruijssen Se il personaggio centrale fosse stato qualcos'altro, probabilmente avrei aggiunto nel mezzo un gruppo di xs (o qualsiasi altro personaggio non Grass, che Grass ignora) per spostare a wnel posto corretto.
Robin Ryder,

Ah, sono un idiota .. Posso inserire anche un carattere non bianco che lo spazio bianco ignorerà. ;) -2 byte grazie a te.
Kevin Cruijssen,

1
17 byte :wWWwww  wWWwWWWww
jimmy23013 il

@ jimmy23013 Grazie! E grazie per aver pubblicato il tuo suggerimento ; Ne avevo bisogno per capire cosa hai fatto! Ho cambiato gli spazi in Vs perché lo trovo più carino. ;-)
Robin Ryder il

17

Brainfuck , 17 byte

U-[>+<-UU--]>...U

Provalo online!

Con gli stampabili questo può essere ridotto a 7 byte: ␀..␀_.␀


1
All'interno delle regole, ma BF non usa Ucome istruzione. Funzionalmente, il codice è -[>+<---]>., quindi sarebbe l'output previsto .--, che non genera.
bigyihsuan,

16
@bigyihsuan ma il codice sorgente contiene ancora le Us e questo interprete le ignora felicemente. Ogni risposta che ha commenti o spazi multipli (o qualsiasi altra cosa che non contenga necessariamente la lingua) non dovrebbe essere conteggiata?
dzaima,

1
Non dovrebbe essere U-[>+<-UU--]>...U? Nella sua forma attuale il codice mostra solo una U
Helena il

1
@Flater Sì, qui vengono utilizzati per semplificare la sfida, ma non è questo lo scopo del tag code-golf ? Molte risposte qui da sole semplificano il loro lavoro aggiungendo spazi iniziali / finali, e in generale nel code-golf qui è permesso qualsiasi cosa che segue le regole (e se dovessi indovinare, se ci fosse una regola che proibisce i caratteri inutilizzati (definire quale oggettivamente sarebbe essere praticamente impossibile) significherebbe che la sfida potrebbe essere ancora sospesa a 0, e probabilmente anche chiusa).
dzaima,

2
Perché non usi semplicemente ÿ-.ÿ..ÿ? È stampabile e breve.
Dorian,

17

Shakespeare Programming Language , 119 byte

 ,.Ajax,.Page,.Act I:.Scene I:.[Enter Ajax and Page]
Ajax:  You big big big big big cat.Speak thy.Speak thy.Speak thy. 

Provalo online!

Stampa tre spazi. Senza spazi di stampa:

Shakespeare Programming Language , 227 byte

,.Ajax,.Page,.Act I:.Scene I:.[Enter Ajax and Page]Ajax:You is the sum of a big big big big big big cat a big pig.
You is the sum of you a large huge large big pig.
Speak thy.Speak thy.You is the sum of you a big pig.Speak thy.

Provalo online!

Come la mia risposta INTERCAL senza newline, questo è costruito per rendere l'ultimo carattere del programma uguale al carattere centrale (anche se in questo caso non è anche il primo), annullando il golf della seconda metà del codice fino a quando incontro. (Non sono sicuro se avrei potuto costruire 46 in meno byte o meno, o se avrei potuto giocare a golf in altre parti del primo tempo in più.)


2
Non mi aspettavo che Shakespeare si presentasse per questo. Questo è fantastico
bigyihsuan il

1
Vorrei poter fare +1 solo per l'apprendimento di questa lingua esistita!
Stilez,

1
anche nei messaggi di output di debug dell'interprete online, il senso dell'umorismo degli autori mostra: Avviso alla riga 2: 'mente' prevista
dlatikay

1
163 byte per la seconda versione terminando con un!
Robin Ryder il

1
@UnrelatedString OK, grazie! Fatto .
Robin Ryder,

14

Python 2 , 13 11 byte


print' t' 

Per chiarire lo spazio bianco:

$ xxd solution.py
0000000: 0a70 7269 6e74 2720 7427 20           .print' t'
$ python2 solution.py | xxd
0000000: 2074 0a                                t.

Provalo online!

-2 byte, grazie a wastl!


6
Entrambi gli spazi finali finali di output (newline), che non sono consentiti. Alternativa a Python 2: provala online!
Wastl

Inoltre, non penso che questo sia valido: Python richiede di avere una riga vuota alla fine del codice.
Geza Kerecsenyi,

5
@GezaKerecsenyi A quanto ho capito, una nuova riga alla fine del codice sorgente è solo una raccomandazione. Vedi PEP8.
mypetlion

1
@GezaKerecsenyi Solo una guida
mbomb007

@wastl Grazie! Fisso.
TFeld,

11

RProgN 2 , 3 byte

1
0

Provalo online!

Penso che questo sia valido?


Sto indovinando 1e 0vengono inseriti in una pila, quindi una stampa pop implicita alla fine del programma? Sì, è valido
bigyihsuan

2
@bigyihsuan è quello che indovino anch'io; Non conosco la lingua, ricordo solo che fa cose del genere: p
dzaima,

@dzaima Haha, quando pubblichi una risposta e non sai nemmeno come funziona. xD Ho già visto RProgN alcune volte prima con vecchie [quine]sfide, prima che le regole di Quine venissero cambiate.
Kevin Cruijssen,

Credo che questo sia poliglotta tacsu Linux.
TSH

11

05AB1E , 7 5 byte


„ RR

Uscite R \n.

-2 byte prendendo ispirazione dalla risposta Batch di @Neil , quindi assicurati di votare anche lui!

Provalo online.

5 byte alternativi di @Grimy :


12,1

Uscite 12\n.

Provalo online.

Risposta iniziale di 7 byte :

'?„«'«?

Uscite ?«'.

Provalo online.

Spiegazione:

          # No-op newline
 R       # Push 2-char string " R"
   R      # Reverse this string to "R "
          # (output the result implicitly with trailing newline)

          # No-op newline
12,       # Print 12 with trailing newline
   1      # Push a 1 (no implicit printing, since we already did an explicit print)

'?       '# Push 1-char string "?"
  „«'    '# Push 2-char string "«'"
     «    # Concatenate them both together
      ?   # Output without trailing newline


8

PHP , 9 byte

<?=";;<";

Provalo online!


3
In realtà, dato che PHP emette il codice come testo fino al primo <?tag, potresti usare una delle banali soluzioni a 4 byte come 1231: qualsiasi cosa senza un carattere speciale come il primo e l'ultimo, altri 2 caratteri nel mezzo. La tua risposta potrebbe essere la risposta PHP in codice reale più breve .
manassehkatz,


7

Excel, 9 byte

=("))=" )

Così tante parentesi.

Nota: il carattere intermedio restituito può effettivamente essere qualsiasi carattere poiché è al centro del codice.


Parentesi! (Lampadina) Mi sono bloccato con l'ultimo personaggio che doveva essere ". Molto bene!
Wernisch,

Grazie! Era qualcosa che stavo cercando di capire, e poi mi sono ricordato che le parentesi avrebbero funzionato.
William Porter,

6

Rubino , 6 byte


p " "

Provalo online!

Questo produce " "più una nuova riga. Il codice termina con a ", i due caratteri centrali sono e "e inizia con una nuova riga.


3
Mi piace il tuo badge, credo sia una scala di grigi xor su N². Ho generato quasi la stessa immagine per aiutarmi a risolvere un problema con Project Euler Nim. Il tuo badge ha una storia?
Damien,

1
Bella presa! Mi piace semplicemente "scarabocchiare" durante le riunioni generando immagini usando una linea; xor era uno dei primi preferiti.
istocratico

6

Lingua batch DOS / Windows, 9 byte

@echo @o@

Benvenuto in Code Golf & Coding Challenges Stack Exchange, +1 per un bel primo post!
A _


5

Lotto, 9 caratteri


@echo hh

Il carattere centrale e l'ultimo sono entrambi h, quindi echostampa una nuova riga per impostazione predefinita, che è il primo carattere della sceneggiatura.


5

PowerShell, 3 byte

00000000: 0a0d 31                                  ..1

Funziona solo con Microsoft Windows.

L'output sfortunatamente è di 8 byte in UTF-16. Ma la domanda dice che genera i caratteri e non i byte. Probabilmente UTF-16 è solo uno dei modi supportati per rappresentare i personaggi in PowerShell. Non sono interpretati diversamente da un file ASCII.


è una risposta intelligente
mazzy il

1
permesso perché 0x0a != 0x0d != 0x31:)
bigyihsuan il

5

Bash ( 15 11 caratteri)

echo -n e-e

che stampa

e-e
  • -4 caratteri non utilizzando |rev

1
@racraman La tua modifica suggerita di echo<space>e<space><space>everrà generata e<space>e<newline>invece di e<space>e, quindi l'ho rifiutata. La nuova riga fa parte dell'output, motivo per cui GrzegorzOledzki sta utilizzando l' -nopzione. Prova echo -n e-eonline vs Prova echo e eonline . E ancora, per favore non modificare la risposta di altre persone. Se hai un golf da suggerire, lascia un commento.
Kevin Cruijssen,

anche 11 byte con printf pfp, ma solo perché abbiamo bisogno di due spazi a causa di quella definizione di carattere medio, altrimenti sarebbe 10 ...
pLumo

5

ArnoldC , 61 byte

IT'S SHOWTIME
TALK TO THE HAND "D I"
YOU HAVE BEEN TERMINATED

Provalo online!

Risposta fondamentale in ArnoldC. Il 31 ° byte è lo spazio appena prima della stringa letterale.


5

Sottocarico , 9 byte 7 byte

Grazie a Khuldraeseth na'Barya per la soluzione migliorata!

W(SSW)S

Per quanto posso dire, questo ora non è migliorabile dal momento che:

  • Il primo carattere deve essere un carattere non operativo, poiché ogni altra istruzione genera un errore a causa del fatto che lo stack è vuoto, con l'eccezione che è una parentesi aperta. Tuttavia, non può essere che dal momento che non c'è modo di produrre una parentesi aperta da sola in Underload.
  • È necessario utilizzare almeno 5 caratteri per aggiungere i 3 caratteri di output allo stack.
  • È necessario utilizzare S per emetterlo.

Provalo online!


Benvenuti in Code Golf SE! Puoi salvare un paio di byte saltando la copia, in questo modo .
Khuldraeseth na'Barya,

5

Shakespeare Programming Language , 163 153 byte

-10 byte grazie a Jo King.

B,.Ajax,.Page,.Act I:.Scene I:.[Enter Ajax and Page]Ajax:You is
the sum ofa Big Big Big BIG BIG cat a
CAT.Speak thy.You is twice you.Speak thy!SPEAK THY!

Provalo online!

La mia prima risposta SPL! Uscite !BB.

C'è un'altra risposta SPL di Unrelated String; in quella risposta, generano solo spazi in 119 byte, oppure generano caratteri non spaziali in 227 byte. Questo si trova in mezzo e genera anche caratteri non spaziali.

Qui vengono utilizzati due trucchi:

  1. !.!25+1.
  2. Doubling 33 indica 66, il punto di codice di B, quindi il titolo del gioco è Be ho bisogno che il secondo "big" sia "Big", che funziona poiché SPL non fa distinzione tra maiuscole e minuscole.

Dato che Balla fine avevo bisogno di quel capitale e di un punto esclamativo, ho deciso di far gridare sempre più forte l'Ajax attraverso la scena.


4

CJam , 7 byte

'@'' _@

Provalo online!


4
Abbastanza sicuro 0 1 0è più corto e ha anche tre personaggi distinti (non voglio ripubblicare il mio approccio Jelly: P).
Erik the Outgolfer,

1
@EriktheOutgolfer Bene però !. Ma è proprio come la tua risposta, quindi lascio questo com'è
Luis Mendo il

2
Sì, ecco perché ho commentato, non volevo davvero pubblicare la stessa cosa due volte. (Hm ... questa potrebbe essere la soluzione ottimale per molte lingue.) Comunque, la tua potrebbe essere applicabile anche altrove!
Erik the Outgolfer,

4

Befunge-93 , 7 byte

.",  @0

Provalo online!

Spiegazione

L'output è 0 .

.       pop value (0) from stack, output as number with a trailing space
 "      toggle string mode, wraps around and pushes every char to the stack
  ,     pop value (".") from stack, output as character 
        spaces are no-ops
     @  end the program
      0 trailing 0 to match the output

4

APL (Dyalog Unicode) , 5 4 byte

Programmi completi.

Soluzione noiosa di J.Sallé:

1231

Stampa quel numero. Una soluzione molto più interessante:

010E1

Provalo online!

APL ignora gli zeri iniziali, quindi questo è semplicemente un formato ridimensionato per 10 × 10¹ = 100.


4

Chef , 447 byte

Last Middle First Milkshake.

This recipe prints its last, middle and first character.
You could also use it to make a milkshake. 

Ingredients.
76 ml milk
32 ml chocolate syrup
46 teaspoons vanilla ice cream

Method.
Liquefy vanilla ice cream.
Put the milk into 1st mixing bowl.
Put the chocolate syrup into 1st mixing bowl.
Put the vanilla ice cream into 1st mixing bowl.
Pour contents of the 1st mixing bowl into the 1st baking dish.

Serves 1.

Provalo online!

Una seria presentazione, 196 177 byte

grazie ad A__

R.

Ingredients.
82 l a
103 l b
46 l c

Method.
Put a into mixing bowl.
Put b into mixing bowl.
Put c into mixing bowl.
Pour contents of mixing bowl into baking dish.

Serves 1.

Provalo online!


Vedere i programmi Chef mi fa chiedere quale sia il minimo indispensabile.
bigyihsuan,

@bigyihsuan vedi la mia modifica
user24343

Puoi rimuovere tutti i "the" e far funzionare ancora il programma .
A _

Ho creato un programma di lavoro. (177 byte)
A _

4

Python 3, 19 byte 13 byte


print( ')(')

La funzione di stampa aggiunge una nuova riga per impostazione predefinita, quindi il codice inizia con una nuova riga. L'ultimo carattere del codice è un ")", quindi viene stampato per primo. Per rendere irregolare il numero di caratteri, viene inserito uno spazio prima dell'argomento della funzione di stampa. Si prega di scusare la salacia del codice.

Uscite: )(\n

Provalo online.


1
A seconda di come funzionano le regole potrei avere 13 byte giocando con la tua risposta: `print (") (")` Nota c'è una nuova riga sopra printe uno spazio bianco printdopo ")(". Uscite: )( con una nuova riga alla fine.
Hoog

Grazie, fino a 13 byte! Poiché la domanda si riferisce specificamente agli spazi bianchi ma non alle nuove righe, suppongo che le nuove righe finali, come endparametro predefinito della funzione di stampa, non contino.
Jaaq

Questo stampa una nuova riga finale ma non lo tiene conto.
A _

Non sono sicuro che le newline contino come spazi bianchi, ma ho aggiunto la seconda versione anche a 13 byte.
Jaaq

1
Sì, le nuove righe contano come spazi bianchi, proprio come le schede e gli spazi tra gli altri
Jo King

4

Spazio bianco , 31 29 byte

[S aS S T   S S S S S N
_Push_32][S N
S _Duplicate_32][S N
S _Duplicate_32][T  N
S S _Print_as_character][T  N
S S _Print_as_character][T  N
S S _Print_as_character]

-2 byte grazie a @RobinRyder .

Lettere S(spazio), T(scheda) e N(nuova riga) aggiunti solo come evidenziazione.
[..._some_action]aggiunto solo come spiegazione.

Provalo online (solo con spazi non elaborati, schede e nuove righe).

Contiene un no-op a(può essere qualsiasi carattere non di spazi) per rendere la lunghezza dispari. Viene aggiunto prima della prima metà del programma, quindi anche il personaggio centrale è uno spazio, poiché il personaggio centrale sarebbe diventato una nuova riga se fosse alla seconda metà del programma. Tutti i caratteri non di spazi bianchi vengono ignorati nei programmi di spazi bianchi.




3

Brain-Flak , 11 byte

(((())))

Provalo online!

Spiegazione

Dobbiamo mettere 3 cose in pila. Il modo più veloce per farlo è mettere 3 1 (o zeri) nello stack. Ora poiché (codice punto 1) non fa nulla in Brain-Flak, possiamo aggiungerli al programma al primo e ultimo posto. Ora questo sembra un po 'economico, quindi ecco altre due risposte che sono meno economiche secondo me.

Stampa parentesi graffe, 31 byte

( (((((()()()()()){}){}){}))())

Provalo online!

Questa risposta stampa le parentesi graffe in modo che i caratteri stampati siano effettivamente rilevanti per il codice, ha un carattere di riempimento per rendere la lunghezza dispari, quindi dobbiamo solo stampare 1 carattere centrale.

Contiene solo parentesi graffe, 32 byte

(((()((((()(()()){}){}){}){}))))

Provalo online!

Questo è un programma solo per parentesi graffe, sia l'origine che (di conseguenza) l'output sono costituiti interamente da parentesi graffe (il personaggio Brain-Flak si interessa in realtà).


3

AsciiDots - 9 byte

.---$'.$.

Produzione: .$.

Il codice inizia con a ., termina con a .e il carattere centrale è a $. La virgoletta singola al centro imposta la modalità di stampa punto per leggere semplicemente i caratteri direttamente nel flusso di output.

È possibile che questo possa essere ridotto, ma sto iniziando a dubitare che possa. Per stampare tre caratteri, è necessario utilizzare la virgoletta singola, in quanto la virgoletta doppia richiederebbe la fine della stringa per l'output. Tuttavia, ciò significa che la singola virgoletta deve essere seguita da a) seguita da tre caratteri eb) non può essere il carattere centrale. Per ridurre questo valore a sette byte, stavo considerando di provare a riutilizzare l'inizio del punto come uno dei personaggi stampati (un po 'come il programma Quine di AsciiDot). Tuttavia, ho scoperto che la sequenza più breve disponibile per la stampa era($'che avrebbe dovuto stampare quattro caratteri nello spazio di tre o tre caratteri nello spazio di quattro. Ho anche provato alcuni metodi alternativi hacky come provare a stampare il valore del punto (che è 0) come uno dei personaggi. Mentre potrebbe esserci qualche sistema che funziona, ho trovato che sono piuttosto complessi e di grandi dimensioni. Pertanto, penso che quanto sopra sia la soluzione più piccola. (Aggiornerò se trovo qualcosa di più piccolo)


Benvenuti in Code Golf SE! Ho rovinato tutto questo per alcuni minuti e sono giunto alla stessa conclusione che hai fatto. Bel primo post!
Khuldraeseth na'Barya,

1
Alternative 9 byte - /'$'-.[newline]\.Provalo online!
Alion,

3

MATLAB, 13 15 byte

disp(  ') d')

Uscite ) d

Versione precedente (15 byte, output meno rigoroso):

'''';1;''''''''

Uscite '''


Vedo ora, ora preoccupazioni.
Wheat Wizard

Questo output trailing spazio bianco?
Sanchises,

@Sanchise no, size (ans) == 3
Oct18 è il giorno del silenzio il

Sì, ma l'output effettivo è ans =\n '''\n. Di solito non è un problema, ma questa sfida sembra stabilire uno standard più rigoroso. Ma allora potrei interpretare la sfida in modo sbagliato.
Sanchises,

@Sanchising hm, capisco. potrei fraintendere ciò che codegolf considera "output", quindi il tuo output sembra essere letteralmente l'output, formattato da MATLAB
18 ottobre è il giorno del silenzio il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.