Wir scheinen nie zu bekommen müde Alphabet bezogenen Herausforderungen ...
Das Rezept
Gegeben
- eine Folge von Buchstaben
S
und - zwei positive ganze Zahlen
M
,N
,
Produziere eine Buchstabensuppe mit den Buchstaben S
, die zufällige Positionen in einer rechteckigen Schüssel der Größe M
× einnehmen N
, umrahmt von einem nicht-alphabetischen Zeichen, das kein Leerzeichen ist, um den Rand der Schüssel darzustellen.
Positionen, die nicht von Buchstaben verwendet werden, sollten als Leerzeichen angezeigt werden. Siehe die folgenden Beispiele .
Zusätzliche Regeln
- Die Größe
M
×N
bezieht sich auf das Innere der Schüssel. Die Größe inklusive Rand beträgtM+2
×N+2
. - Jedes Zeichen von
S
sollte einmal in der Schüssel in einer anderen Position erscheinen . Das heißt, ein Zeichen kann kein anderes überschreiben. S
kann Duplikate enthalten . Wenn es sich beispielsweiseS
um die Zeichenfolge handelt'abcc'
, muss die Suppe einea
, eineb
und zwei enthaltenc
(alle an verschiedenen Positionen).- Die Eingänge werden die erfüllen Einschränkungen
M >= 1
,N >= 1
,1 <= length(S) <= M*N
. - Der Rand der Schüssel kann ein beliebiges nicht alphabetisches Zeichen ohne Leerzeichen sein , das für alle Programmläufe und Eingabewerte gleich ist.
- Die Buchstabenpositionen in der Schüssel sind zufällig, daher kann das Ergebnis bei jedem Ausführen des Programms mit denselben Eingaben abweichen.
- In Anbetracht der Eingabe sollte jeder mögliche Satz von Buchstabenpositionen eine Wahrscheinlichkeit ungleich Null haben . Da dies anhand einiger Programmrealisierungen nicht überprüft werden kann, erläutern Sie bitte, wie Ihr Code dies erfüllt.
- Führende oder nachfolgende Leerzeichen am Rand sind zulässig.
S
wird nur Großbuchstaben enthalten . Wenn Sie möchten, können Sie nur Kleinbuchstaben verwenden .- Ein- und Ausgabe sind wie gewohnt flexibel . Beispielsweise kann die Ausgabe eine Zeichenfolge mit Zeilenumbrüchen, ein 2D-Zeichenarray oder eine Liste von Zeilen sein.
- Programme oder Funktionen sind in jeder Programmiersprache zulässig . Standardlücken sind verboten.
- Der kürzeste Code in Bytes gewinnt.
Beispiele
Eingaben werden angezeigt als S, [M N]
, wobei M
die Anzahl der Zeilen und N
die Anzahl der Spalten ist. Das Zeichen #
wird für den Rand verwendet.
'O', [1 1]:
###
#O#
###
'HEY', [1 3]:
#####
#YHE#
#####
'HELLO', [4 11]:
#############
# O #
# H #
# LE #
# L #
#############
'ADVNJSGHETILMVXERTYIOJKCVNCSF', [8 12]:
##############
#K V L S #
# A V X H #
#T M C #
# I O N#
# YC #
# G I R SE#
# J F #
#JT D V EN #
##############
'OOOOOOOOOOXXXXX', [13 31]:
#################################
# X #
# O #
# #
# X #
# O #
# X O #
# O #
# X #
# O #
# X #
# O #
# O O O #
# O #
#################################
'ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ', [11 41]
###########################################
# JU#
# Q C M G R T U Y H #
# KI E H M YO #
# V BW I JC #
# SV D P B U #
# A F RF J KP E #
# E N TH Z #
# N BM O Q I AS N WX #
# S O K G L P Q #
#Z L T R L A F DD#
# V Y WX C G XZ #
###########################################
|+-
?