Nos parece que no conseguir cansados de desafíos relacionados con el alfabeto ...
La receta
Dado
- una cadena de letras
S
y - dos números enteros positivos
M
,N
,
produzca una sopa de letras con las letras de S
ocupar posiciones aleatorias en un recipiente rectangular de tamaño M
× N
, enmarcado por un carácter no alfabético y sin espacio para representar el borde del recipiente.
Las posiciones no utilizadas por las letras deben mostrarse como espacios. Vea los ejemplos a continuación .
Reglas adicionales
- El tamaño
M
× seN
refiere al interior del cuenco. El tamaño que incluye el borde esM+2
×N+2
. - Cada personaje
S
debe aparecer una vez en el tazón, en una posición diferente ; es decir, un personaje no puede sobrescribir a otro. S
puede contener duplicados . Por ejemplo, siS
es la cadena'abcc'
, la sopa debe contener unoa
, unob
y dosc
(todos en diferentes posiciones).- Las entradas estarán satisfacer las restricciones
M >= 1
,N >= 1
,1 <= length(S) <= M*N
. - El borde del cuenco puede ser cualquier carácter no alfabético, no espacial , coherente en las ejecuciones del programa y los valores de entrada.
- Las posiciones de las letras en el bol son aleatorias, por lo que el resultado puede diferir cada vez que el programa se ejecuta con las mismas entradas.
- Dada la entrada, cada posible conjunto de posiciones de letras debe tener una probabilidad distinta de cero . Como esto no puede verificarse desde algunas realizaciones del programa, explique cómo su código cumple con esto.
- Se permiten espacios en blanco iniciales o finales alrededor del borde.
S
contendrá son solo letras mayúsculas . Si lo desea, puede elegir tomar solo letras minúsculas .- La entrada y la salida son flexibles como de costumbre. Por ejemplo, la salida puede ser una cadena con nuevas líneas, una matriz de caracteres 2D o una lista de líneas.
- Se permiten programas o funciones , en cualquier lenguaje de programación . Las lagunas estándar están prohibidas.
- El código más corto en bytes gana.
Ejemplos
Las entradas se muestran como S, [M N]
, donde M
es el número de filas y el N
número de columnas. El personaje #
se usa para el borde.
'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 #
###########################################
|+-
?