Raster ASCII Art Code Golf

19

Herausforderung

Erstellen Sie das kürzeste Programm, das den Anforderungen entspricht

Bedarf

  1. Der Code muss ein 5x5-Raster von 0 erzeugen, wie folgt:

    00000
    00000
    00000
    00000
    00000
    
  2. Der Code muss eine Eingabe (Spalte, Zeile, Zeichen) akzeptieren. Das Raster muss sich entsprechend ändern:

    Start:

    00000
    00000
    00000
    00000
    00000
    

    Eingang:

    (2,5,*)
    

    Ausgabe:

    0*000
    00000
    00000
    00000
    00000
    

    (Hinweis: Die linke untere Ecke ist Position 1,1.)

  3. Das Programm muss eine andere Fehlermeldung als das Raster zurück , wenn die Zeile / Spalte Eingabe nicht 1,2,3,4 ist, oder 5. Dieses jede Mitteilung Ihrer Wahl sein kann (solange es nicht das Gitter ist), so 0ist eine akzeptable Fehlerausgabe.

  4. Das Programm muss mit allen druckbaren ASCII-Zeichen (einer US-Tastatur) arbeiten.

DER GEWINNER

Der Gewinner ist die Person, die den kürzesten Code hat und alle Anforderungen erfüllt. Wenn mehr als eine Antwort funktioniert und dieselbe (kürzeste) Länge hat, gewinnt die Person, die zuerst geantwortet hat.

Dave Jones
quelle
8
Das Programm muss eine Fehlermeldung zurückgeben . Welche Fehlermeldung? Kann das Programm 0für Fehler und das Raster für Erfolg zurückkehren?
Rod
1
Wo ist der Ursprung auf der Matrix? Muss es null oder eins sein, die indiziert werden?
George
3
Willkommen bei PPCG übrigens.
Erik der Outgolfer
4
Das Programm muss mit allen Zeichen der US-Tastatur funktionieren. Warum nicht nur ASCII? Ich kenne nicht einmal die Zeichen einer US-Tastatur, und das fügt der Herausforderung nichts hinzu
Luis Mendo
1
@ LuisMendo Ich denke, die US-Tastatur ist ASCII oder ist zumindest eine Teilmenge.
Conor O'Brien

Antworten:

11

Dyalog APL , 17 13 10 Bytes

Fordert zur Eingabe eines umschlossenen Arrays mit (Zeile, Spalte) und eines Zeichens auf. Gibt INDEX ERROR bei fehlerhafter Eingabe aus.

⊖⍞@⎕⊢5 50

Probieren Sie es online!

 Flip auf den Kopf das Ergebnis von

 Eingegebenes Zeichen

@ Ersetzen des Inhalts an Position

 ausgewertete Eingabe (eingeschlossene Zeile, Spalte)

 von

5 5⍴ 5 × 5 Array von

0 Nullen

Adam
quelle
Ist notwendig Ich denke in diesem Fall ist es überflüssig.
Conor O'Brien
1
@ ConorO'Brien @ ConorO'Brien Wenn es nicht da ist, sieht der Parser (⊂⎕)5 5ein einzelnes Array mit 3 Elementen - das Argument dafür .
Adám
Das sind 13 Unicode-Zeichen, nicht 13 Bytes, oder?
Wilx
1
@wilx Klicken Sie auf das Wort Bytes !
Adám
Diese Antwort ist der Gewinner.
Dave Jones
5

Rubin, 157 149 Bytes

g=(1..5).map{[0]*5}
loop{puts g.map(&:join).join ?\n
x=gets.match /\((.),(.),(.)\)/
a,b=x[1].hex,x[2].hex
1/0 if a<1||a>5||b<1||b>5
g[5-b][a-1]=x[3]}

Fehler bei fehlerhafter Eingabe oder nicht gebundener Position

Dank an ConorO'Brien (8 Bytes) und ängstlich (2 Bytes) für die Unterstützung beim Speichern von Bytes

TuxCrafting
quelle
loop do...end-> loop{...}; Ich denke, Array.new(5,[0]*5)funktioniert auch oder sogar [*[0]*5]*5.
Conor O'Brien
@ ConorO'Brien Nope, Array.new(5,[0]*5)machen Sie eine Reihe von Referenz und [*[0]*5]*5machen Sie eine flache Reihe
TuxCrafting
Oh, richtig. Lass das erste aus *. Dann entsteht immer noch ein Array von Referenzen.
Conor O'Brien
Array.new(5){[0]*5}kann durch ersetzt werden (1..5).map{[0]*5}, um 2 Bytes zu sparen.
ängstlich
4

Batch, 199 Bytes

@echo off
if %1 gtr 0 if %1 lss 6 if %2 gtr 0 if %2 lss 6 goto g
if
:g
for /l %%j in (5,1,-1)do call:l %* %%j
exit/b
:l
set s=000000
if %2==%2 call set s=%%s:~0,%1%%%3%%s:~%1%%
echo %s:~1,5%

Fehler aus, wenn die Position außerhalb des Bereichs liegt.

Neil
quelle
Ich denke, Sie können Symbole für verwenden <, wie ^<. Ich bin mir nicht sicher.
Conor O'Brien
3

PHP, 111 100 97 Bytes

$s=str_repeat("00000\n",5);$s[($x=($a=$argv)[1])+29-6*$y=$a[2]]=$a[3];echo$x&&$y&&$x<6&$y<6?$s:E;

Druckt, Ewenn Zeile / Spalte außerhalb des Bereichs liegen.
Laufen Sie mitphp -r <code> <row> <column> <character>

Titus
quelle
3

Python, 66 Bytes

lambda a,b,n,l='00000\n':6>b>0<a<6and(5-b)*l+l[:a-1]+n+l[a:]+~-b*l
Stange
quelle
Scheitert das nicht für a = 4, b = 3?
Titus
@ Titus nicht mehr; D
Rod
1
Lösung funktioniert auch für Python3
george
3

Dyalog APL, 24 20 18 Bytes

4 Bytes gespart dank Zgarb! 2 Bytes gespart dank Adam!

a←5 5⍴0⋄a[⊂⎕]←⍞⋄⊖a

Fordert zur Eingabe auf. Unten finden Sie eine Erklärung.


20 Bytes

{a←5 5⍴0⋄a[⊂⍺]←⍵⋄⊖a}

Ordnen Sie eine Funktion zu und rufen Sie sie auf y x f 'c'. Z.B:

      f←{a←5 5⍴0⋄a[⊂⍺]←⍵⋄⊖a}

      5 2 f '*'
0 * 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0

      6 6 f '*'
INDEX ERROR                   
     ←{a←5 5⍴0 ⋄ a[⊂⍺]←⍵ ⋄ ⊖a}
               ∧              

      0 0 f '*'
INDEX ERROR                   
     ←{a←5 5⍴0 ⋄ a[⊂⍺]←⍵ ⋄ ⊖a}
               ∧   

Erläuterung

{a←5 5⍴0⋄a[⊂⍺]←⍵⋄⊖a}

{...}ist eine Funktion mit linkem und rechtem Argument . Separate Anweisungen, daher gibt es drei Anweisungen:

a←5 5⍴0⋄a[⊂⍺]←⍵⋄⊖a

Die erste Anweisung a←5 5⍴0setzt aauf ein 5By- 5Raster von 0s.

Die zweite Anweisung wird das Element an den Koordinaten diktiert von zu (das heißt, das Zeichen).

Schließlich führen wir das aus aund geben es zurück, wobei wir die ersten aumgekehrten Ergebnisse erhalten .

Conor O'Brien
quelle
{a←5 5⍴0⋄a[⊂⌽⍺]←⍵⋄⊖a}spart ein paar Bytes.
Zgarb
@Zgarb Oh, fantastisch! Ich wusste nicht, dass die Indizierung so funktioniert.
Conor O'Brien
Sie können zwei Bytes sparen, indem Sie in einen tradfn body konvertieren:a←5 5⍴0⋄a[⊂⎕]←⍞⋄⊖a
Adám
@Adam wie geht das Es scheint nicht auf TryAPL zu funktionieren.
Conor O'Brien
@ ConorO'Brien Richtig. TryAPL verbietet Eingabeaufforderungen, Sie können jedoch die Vollversion kostenlos herunterladen .
Adám
3

JavaScript (ES6), 73 76 Bytes

Löst ein aus, TypeErrorwenn die Spalte oder die Zeile außerhalb des Bereichs liegt.

(c,r,C,a=[...`00000
`.repeat(5)])=>(a[29+c-r*6]=C,c<1|r<1|c>5|r>5||a).join``

Demo

Arnauld
quelle
Süß, aber wirft es einen Fehler, wenn einer coder rweniger als 1 ist?
ETHproductions
@ETHproductions Es ist nur ein Test c == 0 || r == 0. Aber ich denke, Sie haben Recht: Ich werde es aktualisieren, um negative Werte zu vermeiden.
Arnauld
3

199 Bytes

Basierend auf der Antwort von Pete Arden

string g(int c, int r, char a){if(c<1|c>5|r<1|r>5)return "Index Error";var b="00000";var d=new[]{b,b,b,b,b};c--;d[r-1]=new string('0',c)+a+new string('0',4-c);return string.Join("\r\n",d.Reverse());}

Ungolfed:

public static string G(int c, int r, char a)
    {
        if (c < 1 || c > 5 || r < 1 || r > 5) return "Index Error"; // Check it's not out of range
        var b = "00000";
        var d = new [] { b, b, b, b, b };                           // Generate display box, and fill with the default character
        c--;                                                        // Convert the X to a 0 based index
        d[r - 1] = new string('0',c) + a + new string('0',4-c);     // Replace the array's entry in y coordinate with a new string containing the new character
        return string.Join("\r\n", d.Reverse());                    // Reverse the array (so it's the right way up), then convert to a single string
    }
marksfrancis
quelle
Willkommen auf der Seite! Ich bin kein C # -Experte, aber es sieht so aus, als ob Sie Leerzeichen entfernen könnten.
DJMcMayhem
1
(Tut mir leid, ich kenne die Einreichungsetikette nicht.) Kürzere G (): öffentliche statische Zeichenfolge G (int c, int r, char a) {return (0 <c && c <6 && 0 <r && r <6)? String.Concat (Enumerable.Range (1,29) .Wählen Sie (i => i% 6> 0? I / 6 == 5-r && i% 6 == c? A: '0': '\ n')): "Indexfehler";}
Eric
2

05AB1E , 27 22 Bytes

Gibt kein Raster zurück, wenn Zeile / Spalte> 5 ist.

‚6‹Pi25L²<5*¹+Q5äR»1³‡

Probieren Sie es online!

Vorherige Version

‚6‹Pi26G¾5²<*¹+NQi\³}})5äR»
Emigna
quelle
2

Gelee , 28 Bytes

Das fühlt sich viel zu lang an ...

Ṫ0ẋ24¤;ṙÑs5UY
’ḅ5
Ṗḟ5R¤
-ÑÇ?

TryItOnline!

Wie?

Ṫ0ẋ24¤;ṙÑs5UY - Link 1, make grid: [row, column, character] e.g. [5,2,'*']
Ṫ             - tail: character                                  '*'
     ¤        - nilad followed by link(s) as a nilad  
 0            -     zero
  ẋ           -     repeated
   24         -     24 times                                     [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
      ;       - concatenate:                                     "000000000000000000000000*"
        Ñ     - call next link (2) as a monad                    21
       ṙ      - rotate left by                                   "000*000000000000000000000"
         s5   - split into chunks of length 5                    ["000*0","00000","00000","00000","00000"]
           U  - upend (reveres each)                             ["0*000","00000","00000","00000","00000"]
            Y - join with line feeds                              0*000
              - implicit print                                    00000
                                                                  00000
’ḅ5 - Link 2, position: [row, column]                             00000
’   - decrement                                                   00000
 ḅ5 - convert from base 5

Ṗḟ5R¤ - Link 3, input error checking: [row, column, character]
Ṗ     - pop: [row, column]
 ḟ    - filter out values in
  5R¤ - range(5): [1,2,3,4,5] - any values not in this remain giving a truthy result

-ÑÇ? - Main link: [row, column, character]
   ? - ternary if:
  Ç  -    last link (3) as a monad
-    -    -1 (if truthy - the error identification)
 Ñ   - next link (1) as a monad (if falsey - the grid)
Jonathan Allan
quelle
2

JavaScript (ES6), 89 Byte

f=(X,Y,Z,x=5,y=5)=>x+y>1?(x?X+x-6|Y-y?0:Z:`
`)+f(X,Y,Z,x?x-1:5,y-!x):X<1|X>5|Y<1|Y>5?e:""

Weil ich Rekursion liebe. Wirft ein ReferenceErrorauf ungültige Koordinaten.

ETHproductions
quelle
2

Mathematica, 38 Bytes

(x=Table[0,5,5];x[[-#2,#]]=#3;Grid@x)&
Genisis
quelle
2

Brain-Flak 415 Bytes

Beinhaltet +3 für -c

([][()()()]){{}}{}({}<(({}<(({})<>)<>>)<>)<>([((((()()()){}){}){}){}]{}<([((((()()()){}){}){}){}]{})>)(()()()()()){({}[()]<(({})){{}(<({}[()])>)}{}({}<(({})){{}(<({}[()])>)}{}>)>)}{}({}{}){<>{{}}<>{}}<>>)<>(()()()()()){({}[()]<(((((((((()()()){}){}){}){})))))((()()()()()){})>)}{}{}<>({}<()((((((()()()){}){}()){}){}()[{}])({})({})({})({}){}{}[((((()()()){}){}){}){}()]){({}[()]<<>({}<>)>)}{}<>{}>)<>{({}<>)<>}<>

Probieren Sie es online!

Fügt zuerst das Zeichen ein, dann die Zeile und dann die Spalte ohne Leerzeichen.

Das meiste davon ist nur Fehlerbehandlung. Brain-Flak kann nicht gut überprüfen, ob Werte in einem Bereich liegen. Bei Fehlern wird entweder nichts ausgegeben oder nur das Zeichen, das eingefügt werden sollte. Das Lösen des eigentlichen Problems dauert nur 211 Bytes:

<>(()()()()()){({}[()]<(((((((((()()()){}){}){}){})))))((()()()()()){})>)}{}{}<>({}<()((((((()()()){}){}()){}){}()[{}])({})({})({})({}){}{}[((((()()()){}){}){}){}()]){({}[()]<<>({}<>)>)}{}<>{}>)<>{({}<>)<>}<>
Riley
quelle
2

Excel VBA, 67 Bytes

Ausgaben im Bereich A1: E5 auf dem aktiven Blatt des vba-Projekts werden mit beendet

Laufzeitfehler '1004':

Anwendungsdefinierter oder objektdefinierter Fehler

wenn eine ungültige Eingabe bereitgestellt wird.

Code:

Sub a(c,r,x)
c=IIf(r<1Or c>5,-1,c)
[A1:E5]=0
Cells(6-r,c)=x
End Sub

Verwendung:

a 4,5,"#"

Ausgabe (aus obigem Beispiel) :

    A   B   C   D   E
1   0   0   0   #   0
2   0   0   0   0   0
3   0   0   0   0   0
4   0   0   0   0   0
5   0   0   0   0   0
Taylor Scott
quelle
1

208 Bytes

Golf gespielt:

string G(int c,int r,char a){if(c<1||c>5||r<1||r>5)return"Index Error";var b="00000";var d=new string[]{b,b,b,b,b};d[r-1]=d[r-1].Substring(0,c-1)+a+d[r-1].Substring(c);return string.Join("\r\n",d.Reverse());}

Ungolfed:

public string G(int c, int r, char a)
{
  if (c < 1 || c > 5 || r < 1 || r > 5) return "Index Error";
  var b = "00000";
  var d = new string[] { b, b, b, b, b };
  d[r - 1] = d[r - 1].Substring(0, c - 1) + a + d[r - 1].Substring(c);
  return string.Join("\r\n", d.Reverse());
}

Testen:

Console.Write(G(6, 6, '*')); //Index Error

Console.Write(G(1, 4, '#'));

00000
#0000
00000
00000
00000

Console.Write(G(5, 5, '@'));

0000@
00000
00000
00000
00000

Console.Write(G(1, 1, '}'));

00000
00000
00000
00000
}0000
Pete Arden
quelle
Wenn cund / oder raußerhalb des zulässigen Bereichs liegen, wird eine ausgelöst, IndexOutOfRangeExceptionsodass Sie möglicherweise die erste if-Anweisung entfernen können, obwohl ich die Spezifikationen nicht ordnungsgemäß darauf überprüft habe. Sie können zu einem kompilieren, Func<int, int, char, string>um Bytes zu sparen, ich glaube, Sie müssen using System.Linq;wegen des ReverseAufrufs hinzufügen , obwohl ich mich nicht aus dem Kopf erinnern kann
TheLethalCoder
Ändern Sie d[r - 1] = d[r - 1].Substring(0, c - 1) + a + d[r - 1].Substring(c);, d[--r] = d[r].Substring(0, c - 1) + a + d[r].Substring(c);um 4 Bytes zu speichern
TheLethalCoder
1

WinDbg, 95 Bytes

j(0<(@$t0|@$t1))&(6>@$t0)&(6>@$t1)'f8<<16 L19 30;eb2000018+@$t0-@$t1*5 @$t2;da/c5 8<<16 L19';?0

Fast die Hälfte davon überprüft nur, ob die Indizes im Bereich liegen ... Die Eingabe erfolgt durch Setzen der Pseudo-Register $t0 , $t1und $t2(wo $t2hält der ASCII - Wert der Kohle zu ersetzen). Zum Beispiel (2,5,*)wie das Beispiel wäre:

0:000> r$t0=2
0:000> r$t1=5
0:000> r$t2=2a

Druckt 0bei einem Fehler.

Wie es funktioniert:

j (0<(@$t0|@$t1)) & (6>@$t0) & (6>@$t1)  * If $t0 and $t1 are both positive and less than 6
'
    f 8<<16 L19 30;                      * Put 19 (0n25) '0's (ascii 30) at 2000000 (8<<16)
    eb 2000018+@$t0-@$t1*5 @$t2;         * Replace the specified cell with the new char
    da /c5 8<<16 L19                     * Print 19 (0n25) chars in rows of length 5
';
    ?0                                   * ...Else print 0

Beispielausgabe:

0:000> r$t0=2
0:000> r$t1=5
0:000> r$t2=2a
0:000> j(0<(@$t0|@$t1))&(6>@$t0)&(6>@$t1)'f8<<16 L19 30;eb2000018+@$t0-@$t1*5 @$t2;da/c5 8<<16 L19';?0
Filled 0x19 bytes
02000000  "0*000"
02000005  "00000"
0200000a  "00000"
0200000f  "00000"
02000014  "00000"


0:000> r$t0=-2
0:000> j(0<(@$t0|@$t1))&(6>@$t0)&(6>@$t1)'f8<<16 L19 30;eb2000018+@$t0-@$t1*5 @$t2;da/c5 8<<16 L19';?0
Evaluate expression: 0 = 00000000


0:000> r$t0=4
0:000> r$t1=2
0:000> r$t2=23
0:000> j(0<(@$t0|@$t1))&(6>@$t0)&(6>@$t1)'f8<<16 L19 30;eb2000018+@$t0-@$t1*5 @$t2;da/c5 8<<16 L19';?0
Filled 0x19 bytes
02000000  "00000"
02000005  "00000"
0200000a  "00000"
0200000f  "000#0"
02000014  "00000"


0:000> r$t1=f
0:000> j(0<(@$t0|@$t1))&(6>@$t0)&(6>@$t1)'f8<<16 L19 30;eb2000018+@$t0-@$t1*5 @$t2;da/c5 8<<16 L19';?0
Evaluate expression: 0 = 00000000
Milch
quelle
1

Haskell, 77 Bytes

r=[1..5]
(x#y)c|x>0,x<6,y>0,y<6=unlines[[last$'0':[c|i==x,j==6-y]|i<-r]|j<-r]

Anwendungsbeispiel:

*Main> putStr $ (2#5) '*'
0*000
00000
00000
00000
00000

Wenn xund yin Reichweite sind, durchlaufen äußere und innere Schleife [1..5]und nehmen das Zeichen, cwenn es das gegebene xund yund ein 0anderes trifft . Wenn xoder ynicht in Reichweite ist, wird eine Non-exhaustive patternsAusnahme ausgelöst.

nimi
quelle
1

Oktave 49 Bytes

@(c,r,s)char(accumarray([6-r c],s+0,[5 5],[],48))
rahnema1
quelle
1

QBIC , 53 50 Bytes

BEARBEITEN: Jetzt, da ich weiß, dass ich das Startraster nicht mehr anzeigen muss, habe ich die Benutzereingaben _!_!_?gegen Befehlszeilenparameter ausgetauscht ::;und 3 Byte gespart.

[5|?@00000|]::;~(b>5)+(c>5)>1|_Xd\$LOCATE 6-c,b|?B

Originalversion: Dies hält zwischen dem Drucken des 0-Gitters und der Eingabe der Koordinaten für die Ersetzung an, wobei das 0-Gitter angezeigt wird.

[5|?@00000|]_!_!_?~(b>5)+(c>5)>1|_Xd\$LOCATE 6-c,b|?B

Druckt 5 Zeichenfolgen mit 5 Zeichen 0, fordert den Benutzer auf, 2 numerische Eingaben und 1 Zeichenfolge einzugeben, prüft, ob die Zahlen <5 sind, und verwendet die QBasic- LOCATEFunktion, um das richtige Zeichen zu ersetzen.

steenbergh
quelle
0

Java, 99 Bytes

(i,j,k)->{int[]b=new int[]{60,60,60,60,60};int[][]a=new int[][]{b,b,b,b,b};a[i-1][5-j]=k;return a;}
Roman Gräf
quelle
0

> <> (Fisch), 36 Bytes (nicht konkurrierend)

1-$p;
00000
00000
00000
00000
00000

Probieren Sie es hier aus!

Dies geschieht , indem die Parameter auf dem Stapel wie [run chr, y, x]. Eine der unteren Nullen wird chrdurch den Befehl tatsächlich geändert p. Es gibt wahrscheinlich bessere Möglichkeiten, dies zu tun, aber ich dachte, dies sei eine einzigartige und unterhaltsame Situation, in der diese> <> -Funktion nützlich ist.

Erläuterung

Dieses Programm subtrahiert einfach 1 von x(wie in> <>, 0wäre eigentlich die erste Spalte), tauscht xmit yund ändert dann den Codebox-Punkt x, yin chrvia p. ymuss nicht um 1 subtrahiert werden, da der Code bereits um 1 versetzt ist!

Nicht konkurrierende Erklärung

Dies ist nicht konkurrierend, da es keine Ausgabe erzeugt. Ich fand das einfach extrem amüsant. Wenn dies als gültige Ausgabe angesehen wird, lassen Sie es mich bitte wissen!

Es ist auch nicht konkurrierend, weil yes 0 sein kann, aber ich glaube, das ist das einzige Problem mit der Antwort. Ich werde das Problem beheben, wenn dies als gültige Ausgabe betrachtet wird, aber ansonsten macht es die Antwort nur weniger unterhaltsam ...

redstarcoder
quelle
2
Wenn Antworten wie diese nicht erwünscht sind, lassen Sie es mich bitte wissen und ich werde es löschen!
Redstarcoder
0

Bash, 59 Bytes

Golf gespielt

printf '00000%0.s\n' {1..5}|sed "$1 s/./$3/$2"|grep -z "$3"

$ 1 , $ 2 - Zeile, Spalte, $ 3 - Ersatzzeichen, Fehler wird über den Exit-Code gemeldet

Prüfung

>./box 2 2 "*"
00000
0*000
00000
00000
00000
>echo $?
0

>./box 6 2 '*'     
>echo $?
1
Zeppelin
quelle
0

Vim, 60, 47, 42 76 Tastenanschläge

Die Eingabe erfolgt im Format (in der ersten Zeile):

25*

Mit dem Cursor am Anfang beginnen

"ax"bxx:if<C-r>a<1||<C-r>a>5||<C-r>b<1||<C-r>b>5
^
endif
6i0<ESC>Y5pG:norm <C-r>al<C-r>bkr<C-r>-
Hqqxjq5@qdd

Wenn die Eingabe ungültig ist, wird ausgelöst: E492: Not an editor command: ^

Die Cide, die die Ausgabe erzeugt, ist nur 42Bytes, aber um einen Fehler zu erzeugen, wird mein Bytecount drastisch erhöht.

Kritixi Lithos
quelle
BTW Ich weiß nicht, wie man den Fehler in Vim
Kritixi Lithos
0

Java 8, 194 192 Bytes

interface M{static void main(String[]a){String r="";int i=0,j,z=new Byte(a[0]),y=new Byte(a[1]);for(;++i<6;r+="\n")for(j=0;++j<6;r+=6-i==y&j==z?a[2]:0);System.out.print(z>0&z<7&y>0&y<7?r:0);}}

Probieren Sie es hier mit der richtigen Eingabe.
Versuche es hier mit falscher Eingabe.

Dies wären 116 bis 114 Bytes als Funktion anstelle des vollständigen Programms:

(a,b,c)->{String r="";for(int i=0,j;++i<6;r+="\n")for(j=0;++j<6;r+=b==6-i&a==j?c:0);return a>0&a<7&b>0&b<7?r:"0";}

Probieren Sie es hier aus.

Erläuterung:

interface M{                  // Class
  static void main(String[]a){//  Mandatory main-method
    String r="";              //   Result-String, starting empty
    int i=0,j,                //   Index-integers
        z=new Byte(a[0]),     //   First input converted to integer
        y=new Byte(a[1]);     //   Second input converted to integer
    for(;++i<6;               //   Loop (1) from 1 to 6 (inclusive)
        r+="\n")              //     After every iteration: Append a new-line to the result
      for(j=0;++j<6;          //    Inner loop (2) from 1 to 6 (inclusive)
        r+=6-i==y             //     If the second input equals `6-1`,
           &j==z?             //     and the first input equals `j`:
            a[2]              //      Append the third input to the result-String
           :                  //     Else:
            0                 //      Append a zero to the result-String
      );                      //    End of inner loop (2)
                              //   End of inner loop (1) (implicit / single-line body)
    System.out.print(         //   Print:
     z>0&z<7&y>0&y<7?         //    If the coordinates are valid (1-6):
      r                       //     Print the result `r`
     :                        //    Else:
      0);                     //     Print 0 as error instead
  }                           //  End of main-method
}                             // End of class
Kevin Cruijssen
quelle