ASCII Meme Arrow Generator


13

Spezifikationen

Geben Sie unter Angabe einer Zahl neinen ASCII-Meme-Pfeil (Größer-als-Symbol >) mit der Größe aus n.

n wird immer eine positive ganze Zahl größer als 0 sein.

Beispiele

n = 2

\
 \
 /
/

n = 5

\
 \
  \
   \
    \
    /
   /
  /
 /
/

Beispielcode

Hier ist ein in Crystal geschriebenes Beispielprogramm, das die richtigen Ergebnisse zurückgibt. Führen Sie es als ./arrow 10.

arrow.cr:

def f(i)
        i.times { |j|
                j.times { print ' ' }
                puts "\\"
        }
        i.times { |j|
                (i-j-1).times { print ' ' }
                puts '/'
        }
end

f(ARGV[0].to_i)

Regeln

  • Das ist . Die kürzeste Antwort gewinnt. Ich werde jedoch keine Antwort auswählen, da sich die kürzeste Antwort mit der Zeit ändern kann.
  • Standardlücken sind nicht erlaubt.

1
Sind Sie sicher, dass dies kein Duplikat ist? Ich denke, das ist wahrscheinlich so, aber es ist fast unmöglich, danach zu suchen.
Mein Pronomen ist monicareinstate

1
Kann nnull sein?
Xnor

6
Ich finde es ziemlich albern, dieses gebräuchliche Symbol als "Meme-Pfeil" zu bezeichnen. Es sind offensichtlich komische Sparren.
Scatter

4
@ Christian Sie sind eigentlich amüsante Winkel
dkudriavtsev

1
@ArtemisFowl Ich dachte, dass sie interessante Erhöhungen waren
dkudriavtsev

Antworten:



8

C (gcc) , 56 Bytes

f(n,i){for(i=-n;n;printf("%*c\n",i?++i+n:n--,i?92:47));}

Probieren Sie es online!

f(n,i){for(i=-n;i;printf("%*c\n",  ++i+n    ,  92   ));     //first print descending '\'s
       for(    ;n;printf("%*c\n",        n--,     47));}    // then print returning  '/'s




4

C64Mini / C64 BASIC (und andere CBM BASIC-Varianten), 52 tokenisierte BASIC-Bytes werden verwendet

 0INPUTN:N=N-1:FORI=0TON:PRINTTAB(I)"\":NEXT:FORI=NTO0STEP-1:PRINTTAB(I)"/":NEXT

Hier ist die nicht verschleierte Version zur Exaplantion:

 0 INPUT N
 1 LET N=N-1
 2 FOR I=0 TO N
 3  PRINT TAB(I);"\"
 4 NEXT I
 5 FOR I=N TO 0 STEP -1
 6  PRINT TAB(I);"/"
 7 NEXT I

Jede Zahl, die Nin Zeile Null eingegeben wird, wird um eins reduziert, wenn der TABBefehl mit Nullindex versehen wird. Die FOR/NEXTSchleifen in den Zeilen zwei bis vier und fünf bis sieben geben dann den oberen und unteren Teil des memePfeils aus (dargestellt durch eine im Grafikmodus verschobene Mund eine Nim Grafikmodus verschobene Quelle ).

Commodore C64 meme Pfeil


1
Wussten Sie, dass in Commodore Basic alle Schlüsselwörter abgekürzt werden können? Hier ist ein Link: c64-wiki.com/wiki/BASIC_keyword_abbreviation Kann zum Beispiel forsein fO( f- shoft o), printist ?usw.
gaborsch

1
52 Bytes sind in Code Golf irreführend, die Binaries zählen nicht, nur der Quellcode. Es sollte etwas Ähnliches sein: 0inputn:n=n-1:fOi=0ton:?tA(i)"\":nE:fOi=0ton:?tA(i)"/":nE- Es dauert 57 Bytes.
Gaborsch

1
Wie hier besprochen -> codegolf.meta.stackexchange.com/questions/11553/… Ich zähle die verwendeten Token, da dies repräsentativer dafür ist, wie viel Speicher verwendet wird.
Shaun Bebbers

1
Oh, das wusste ich nicht. Gibt es eine Entscheidung darüber? Auch die Antwort wurde dort nicht akzeptiert.
Gaborsch

1
Mein erster Computer war ein C16, ich habe auch viel zusammengebaut, also nichts für ungut, ich liebe Commodore. C16 hatte Basic 3,5, 80 Zeichen pro Zeile, ich hatte auch ein Buch mit den ROM-Listen erklärt, so dass ich genau wusste, wie die Tokenisierung und Auflistung funktioniert,
Gaborsch

4

Ruby , 111 99 77 73 68 64 57 56 Bytes

-12 Bytes dank Benjamin Urquhart , -43 dank Manatwork und -2 Bytes dank Value Ink .

->i{s=[];puts (0...i).map{|j|s=(p=' '*j)+?/,*s;p+?\\},s}

Probieren Sie es online!

Erläuterung:

f=->i{                      # instead of a function, use a lambda
  s=[]                      # needs a helper variable *now*, for scope
  puts(                     # puts takes arbitrary num of args; \n after each
    (0...i).map{|j|         # not from 0 to i but from 0 to i-1 (*three* dots)
      s=(
        p=' '*j             # p will remain in scope inside of .map,
      )
      +?/                   # character literal instead of string
      ,*s                   # essentially appending to the array

      p+?\\                 # p is what's returned by .map, not s!

    },                      # up until here, 1st arg to display
    s                       # NOW, as the *2nd* arg, s is displayed
  )
}

Alternative (aber längere) Lösungen

Ein Freund las diese Antwort und versuchte dann, ein paar weitere Ansätze zu finden. Stellen Sie sie auch hierher, damit sie nicht für die riesigen Interwebs verloren gehen.

Injizieren und Entladen, 72 Bytes

->n{puts (0...n).inject([]){|s,i|i=' '*(n-1-i);s.unshift i+?\\;s<<i+?/}}

Probieren Sie es online!

Downto, Inject und Unshift, 80 Bytes

->n{puts n.downto(1).map{|i|' '*(i-1)}.inject([]){|s,i|s<<i+?/;s.unshift i+?\\}}

Probieren Sie es online!

faszinierend, zwei nicht verschachtelte Schleifen, 127 Bytes

->n{
r=->s,c{s[0..-(c+1)],s[-c..-1]=s[c..-1],s[0..c-1];s};
n.times{|i|puts r[' '*n+?\\,n-i]}
n.times{|i|puts r[' '*n+?/,i+1]}
}

Probieren Sie es online!


Können nicht viele dieser Leerzeichen entfernt werden?
Benjamin Urquhart

1
Ja, insgesamt 12 Bytes, danke! Dies war das erste Mal, dass ich etwas zu einem Code-Golfspiel eingereicht habe ...
fünfundsechzig

Dann finden Sie vielleicht interessante Tipps zum Golfen in Ruby , oder sogar die Tipps zum Golfen in <allen Sprachen> .
Manatwork

Sie können die inneren Schlaufen zum Auffüllen durch ersetzen String#rjust( Online ausprobieren! ).
Manatwork

Hier habe ich einige der Tipps aus den oben genannten 2 Sammlungen angewendet, um sie auf 57 Zeichen zu reduzieren: Probieren Sie es online aus!
Manatwork


3

T-SQL-Code, 80 Byte

DECLARE @ INT=3

,@z INT=0
x:PRINT
space(@-abs(@-@z-.5))+char(92-@z/@*45)SET
@z+=1IF @z<@*2GOTO x

Probieren Sie es online aus

T-SQL-Abfrage, 96 Byte

Um diese Arbeit online zu machen, musste ich einige kleinere Änderungen vornehmen. Leerzeichen am Anfang einer Zeile werden im Online-Snippet nicht angezeigt. Also benutze ich stattdessen ASCII 160. Wenn Sie in Management Studio ausgeführt werden, können Sie die Einstellungen so ändern, dass das Ergebnis als Text angezeigt wird. Dies würde zu den richtigen Leerzeichen in diesem bereitgestellten Skript führen.

DECLARE @ INT=3
SELECT space(@-abs(@-number-.5))+char(92-number/@*45)FROM
spt_values WHERE number<@*2and'p'=type

Probieren Sie es online aus



3

MarioLANG , 719 677 Bytes

+
+
+
+
+
+         ((((+)+++++)))<
+>======================"
+)++++++)+++++++++++((-[!)
========================#=-
) ![-    <+;)+++)---)++++)<
)=#======"=================
) >)+)+((!
+ "======#
         <))))).(((((((<
 ========">============"
>)+)+((-[!+))        -[!((((((((.)).))))+(-[!)
"========#=============#====================#<
!)                                          <
#==========================================="
                  >(((((.)))>
                  "========<"========
 ![-)).))).(((((((![-    ))+![-((+)+)<((![<
 #================#=========#========"==#="===
 >                                   !  >-!
 "===================================#  "=#

Probieren Sie es online!

Das war schwieriger als erwartet ...


3

Brainfuck , 125 Bytes

++++++++++[->+>+++++++++>+++<<<]>>++>++>,[->[->+<<<.>>]<<<.<.>>>>>[-<+>]<+<]<<[--<<+>>]<<+>>>>>[-[-<+<.>>]<<<<<.>.>>>[->+<]>]

Probieren Sie es online!

++++++++++[->+>+++++++++>+++<<<]>>++>++>    ; Initialize with " \"
,                                           ; Get input
[->                                         ; loop and decrement n 
    [->+<<<.>>]                             ; output number of spaces, copy n
    <<<.                                    ; output \
    <.                                      ; output newline
    >>>>                                    
    >[-<+>]<+                               ; copy copy of n back to original place 
<]
<<[--<<+>>]<<+>>                            ; change "\" to "/"
>>>                             
[                                           ; second loop for bottom half
 -                                          ; decrement n
 [-<+<.>>]                                  ; output n spaces
 <<<<<.>.                                   ; output \ and newline
 >>>[->+<]>                                 ; copy n back
]

1

Kohle , 5 Bytes

↘N‖M↓

Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:

↘N

Geben Sie eine Zahl ein und drucken Sie eine diagonale Linie von \s dieser Länge.

‖M↓

Spiegeln Sie die Linie vertikal.


1

APL (NARS), 40 Zeichen, 80 Byte

{f←{⍺,⍨⍵⍴' '}⋄⊃('\'f¨k),('/'f¨⌽k←¯1+⍳⍵)}

Prüfung:

  h←{f←{⍺,⍨⍵⍴' '}⋄⊃('\'f¨k),('/'f¨⌽k←¯1+⍳⍵)}
  h 2
\ 
 \
 /
/ 
  h 5
\    
 \   
  \  
   \ 
    \
    /
   / 
  /  
 /   
/    

1

Retina 0.8.2 , 32 Bytes

.+
$* ¶$&$* 
\G.
¶$`\
r`.\G
$'/¶

Probieren Sie es online! Erläuterung:

.+
$* ¶$&$* 

Erzeugen Sie zwei Zeilen mit nLeerzeichen.

\G.
¶$`\

Verwandle die obere Linie in eine \Diagonale.

r`.\G
$'/¶

Verwandle die untere Linie in eine /Diagonale.




1

PowerShell , 50 Byte

param($n)0..--$n|%{' '*$_+'\'}
$n..0|%{' '*$_+'/'}

Probieren Sie es online!

Ich werde versuchen, es so zu machen, dass es den Bereich nur einmal durchläuft. Nicht schlecht für die No-Brain-Methode.


1

Zweig, 115 Bytes

Erstellt den String rückwärts und gibt ihn am Ende "zurück".

Verwendet ein Makro, um alle Ergebnisse zu generieren.

{%macro a(N,s="")%}{%for i in N..1%}{%set s=('%'~i~'s
'~s~'%'~i~'s
')|format('\\','/')%}{%endfor%}{{s}}{%endmacro%}

Dieses Makro muss sich in einer Datei befinden und folgendermaßen importiert werden:

{% import 'macro.twig' as a %}

{{ a.a(<value>) }}

Sie können es auf https://twigfiddle.com/5hzlpz versuchen (klicken Sie auf "Rohergebnis anzeigen").



1

MATL, 14 13 12 Bytes

Xy92*t45-Pvc

1 Byte gespart dank @LuisMendo

Erläuterung

        % Implicitly grab the input as an integer
Xy      % Create an identity matrix this size
92*     % Multiply by 92 (ASCII for '\')
t       % Duplicate the matrix
45-     % Subtract 45 from every element yielding 47 (ASCII for '/') on the diagonal
        % and -45 everywhere else
P       % Vertically flip this matrix
v       % Vertically concatenate the two matrices
c       % Convert to characters (negative numbers are replaced with a space)
        % Implicitly display the result

Probieren Sie es bei MATL Online aus


@LuisMendo Aktualisiert! Vielen Dank!
Suever

1

Python 3 , 90 83 Bytes

lambda n:'\n'.join([' '*i+'\\'for i in range(n)]+[' '*(n+~i)+'/'for i in range(n)])

Probieren Sie es online!

-7 Bytes dank @squid


83 Bytes , aber ich habe das Gefühl, dass es immer noch sinken kann
Setzen Sie Monica am

1
Ich wünschte, das wäre möglich.
Artemis vertraut SE am


Oh ja, das habe ich vergessen. Vielleicht solltest du es einreichen!
Artemis vertraut SE am

1

Rockstar, 133 Bytes

Probieren Sie es hier online aus !

F takes N,S
If N is 0
Give back N

Say S+"\"
Let T be S+" "
Let M be N-1
F taking M,T
Say S+"/"

Listen to X
F taking X,""

Da Rockstar nicht für String-Operationen bekannt ist, ist relativ viel Code erforderlich (rekursiv sogar länger).

Die Größe des Pfeils wird als Eingabe verwendet.



1

\ / \ /> 74 Bytes

jp100o
-84*}!o:?!x1
@+:q:p=?x:o~$:0(pa"\/"q?$~}}:
x2-:p$1-y$:0(?
.{suh?!;2

Erläuterung: (Linien gedreht basierend auf dem Startpunkt)

jp100o                        //setup
:?!x1-84*}!                   //add leading spaces, loop and decrement until 0
~$:0(pa"\/"q?$~}}:@+:q:p=?x:o //add correct slash, go back to loop or switch sides
$:0(?x2-:p$1-y                //flip direction state or continue to print
{suh?!;2.                     //remove extra data and print stack

1
\/\/> (pronounced wɜrm)Danke, ich hasse es. (jk, ich freue mich darauf, es zu versuchen)
Jo King

@JoKing hahaha, ich muss meine Inspiration auf meinem Ärmel tragen. (Danke!)
Torcado




0

SimpleTemplate , 100 Byte

Dies war eine ziemlich lustige Herausforderung, aber einige Fehler in der Sprache erschwerten die Optimierung.

{@set_ argv.0}{@while_}{@callstr_repeat intoS" ",_}{@setO S,"\\\n",O,S,"/\n"}{@incby-1_}{@/}{@echoO}

Grundsätzlich werden die Werte rückwärts durchlaufen, wobei die Zeichenfolge von der Mitte nach außen abgearbeitet wird.


Wie die Antwort sein sollte

Aufgrund der Fehler wurde der Code nicht richtig interpretiert.

So wäre der Code, wenn der Compiler keinen Fehler hätte (86 Bytes):

{@forfrom argv.0to0step-1}{@callrepeat intoS" ",_}{@setO S,"\\
",O,S,"/
"}{@/}{@echoO}

Na ja, zumindest funktioniert die Lösung: x


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.