Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - nonokario

#1
Programación C/C++ / Re: Creacion de matriz
8 Marzo 2018, 23:42 PM
Muchas gracias! Aprendí mucho  :D
#2
Programación C/C++ / Re: duda
8 Marzo 2018, 18:19 PM
Muy chiquita la imagen. No llego a leer nada!
#3
Programación C/C++ / Re: Creacion de matriz
8 Marzo 2018, 15:14 PM
Código (python) [Seleccionar]

func setter_matrix(x, y):  #a esta funcion la llamo desde un for de afuera para setear numeros de 1 a 6 y la entrada(5) y salida(6)
if x == 0 and entrada_creada == false:
randomize()
var n = randi()%5+1
if n == 5:
entrada_creada = true
if y == WIDTH-1:
entrada_creada = true
return 5
return n
elif x == 3 and salida_creada == false:
randomize()
var n2 = randi()%6+1
if n2 == 6:
salida_creada = true
if y == WIDTH-1:
entrada_creada = true
return 6
if n2 == 5:
return 1
return n2
else:
return randi()%4+1





#Funcion para asegurar que haya: Entrada, Salida y 2/3
func corregir_matrix(matrix):
var encontrado2
var entrada
var bajada
for x in range(WIDTH):
encontrado2 = false
for y in range(HEIGHT):
if x == 0:
if matrix[x][y] == 5:
entrada = y
if x != HEIGHT -1 :
if (matrix[x][y] == 2) and (encontrado2 == false):
matrix[x+1][y] = 3
encontrado2 = true
bajada = y
elif matrix[x][y] == 2 and encontrado2 == true:
matrix[x][y] = 1
elif y == WIDTH-1 and encontrado2 == false:
if x == 0:
if entrada + 2 < WIDTH:
matrix[x][entrada+2] = 2
matrix[x+1][entrada+2] = 3
bajada = entrada + 2
else:
matrix[x][entrada-2] = 2
matrix[x+1][entrada-2] = 3
bajada = entrada - 2
else:
if bajada + 2 < WIDTH:
matrix[x][bajada+2] = 2
matrix[x+1][bajada+2] = 3
bajada = bajada + 2
else:
matrix[x][bajada-2] = 2
matrix[x+1][bajada-2] = 3
bajada = bajada - 2
else:
if matrix[x][y] == 6:
return matrix
for y in range(HEIGHT):
if matrix[3][y] == 3:
if y + 2 < WIDTH:
matrix[3][y+2] = 6
return matrix
else:
matrix[3][y-2] = 6
return matrix
return matrix




#Funcion para asegurar que haya unos entre 2/3/5/6
func corregir_matriz_2(matrix):
var entrada
var salida
var bajada1
var bajada2
var aux
for x in range(WIDTH):
for y in range(HEIGHT):
if x == 0:
if matrix[x][y] == 2: ###
bajada1 = y
if matrix[x][y] == 5:
entrada = y
elif x != 0 and x != HEIGHT -1 :
if matrix[x][y] == 2: ###
bajada1 = y
elif matrix[x][y] == 3 and matrix[x-1][y] == 2:
bajada2 = y
else:
if matrix[x][y] == 3 and matrix[x-1][y] == 2:
bajada2 = y
elif matrix[x][y] == 6:
salida = y


if x == 0:
if bajada1 < entrada:
aux = entrada - (bajada1)
for y in range(aux):
if matrix[x][bajada1+y] == 4:  #Antes: bajada+1 Ahora: bajada+y
matrix[x][bajada1+y] = 1   #Si era + 1 siempre reemplazaba en el mismo lugar
else:
aux = bajada1 - (entrada)
for y in range(aux):
if matrix[x][entrada+y] == 4:
matrix[x][entrada+y] = 1

elif x != 0 and x != HEIGHT -1 :
if bajada1 < bajada2:
aux = bajada2 - (bajada1)
for y in range(aux):
if matrix[x][bajada1+y] == 4:
matrix[x][bajada1+y] = 1
else:
aux = bajada1 - (bajada2)
for y in range(aux):
if matrix[x][bajada2+y] == 4:
matrix[x][bajada2+y] = 1

else:
if bajada2 < salida:
aux = salida - (bajada2)
for y in range(aux):
if matrix[x][bajada2+y] == 4:
matrix[x][bajada2+y] = 1
else:
aux = bajada2 - (salida)
for y in range(aux):
if matrix[x][salida+y] == 4:
matrix[x][salida+y] = 1
return matrix




Perdón, es muy feo el código pero funciona. Por eso queria saber si hay una manera mas elegante o mejor de hacerlo. Con pseudocodigo me arreglo!
#4
Programación C/C++ / Creacion de matriz
7 Marzo 2018, 23:56 PM
Hola! Soy nueva en la programación y me llego un problema. No se cuál seria la mejor manera de solucionarlo. Hice un código muy largo y no me parece que este bien aunque funcione.
El problema es el siguiente:

Tengo que crear una matriz de numeros ( 1 a 6) con un ancho X y un largo Y.
El array Z0 debe tener un 5  y el Z-1 un 6. Entonces quedaría algo asi:
XXX5XX
XXXXXX
XXXXXX
6XXXXX

La siguiente condición es que en Zx debe existir un 2 y en Zx+1 un 3.

X2X5XX
X3XX2X
XXXX32
6XXXX3

Y la ultima condición es que :
Entre 2/3/6/5 solo puede haber 1.

X215XX
X3112X
XXXX32
611113

Todo lo demas que no fue seteado pueden ser 1 o 4!



El código no es en C pero me serviría igual ver un pseudocodigo! Si hace falta muestro lo que hice pero es muy feo  :-X  
Si es muy largo el pseudocodigo con que me den algún tip se los agradezco!