Pequeño concurso de programación

Avatar de Usuario
explorer
Mensajes: 728
Registrado: 10 Ene 2016 18:43
Ubicación: Valladolid, España
Has thanked: 24 times
Been thanked: 694 times
Contactar:

Pequeño concurso de programación

Mensaje por explorer »

Hola. Os propongo este diciembre participar en este pequeño concurso de programación.

Consiste en hacer un programa que sea capaz de recrear en pantalla un copo de nieve:
Imagen
Imagen

Se puede usar cualquier lenguaje, pero los ganadores serán aquellos que ocupen menos espacio (es un concurso de golfing).
Avatar de Usuario
minter
Mensajes: 5126
Registrado: 22 Jul 2014 18:51
Has thanked: 6925 times
Been thanked: 2667 times

Re: Pequeño concurso de programación

Mensaje por minter »

Y vendrá Dancresp y te lo hará en una línea! -507
Avatar de Usuario
gflorez
Mensajes: 1706
Registrado: 12 Sep 2014 19:58
Has thanked: 102 times
Been thanked: 595 times

Re: Pequeño concurso de programación

Mensaje por gflorez »

Con Logo sería "fácil" hacer esa estrella. Me imagino que el concurso será con caracteres, no con gráficos, ¿no?

Perdón, que no había entrado en el enlace.
Avatar de Usuario
kikems
Mensajes: 5703
Registrado: 30 May 2013 19:23
Has thanked: 2666 times
Been thanked: 3147 times

Re: Pequeño concurso de programación

Mensaje por kikems »

En el típico concurso para braineacks o como se diga.
garillete
Mensajes: 2503
Registrado: 30 Oct 2010 20:58
Has thanked: 499 times
Been thanked: 1005 times

Re: Pequeño concurso de programación

Mensaje por garillete »

And the winner is....

10 print "*"

Nadie dijo que el copo fuera grande y aunque el mio es de 5 puntas es cuestion de buscar un basic que tenga mas.... el listado mas minimo no puede ser... -rofl
Avatar de Usuario
minter
Mensajes: 5126
Registrado: 22 Jul 2014 18:51
Has thanked: 6925 times
Been thanked: 2667 times

Re: Pequeño concurso de programación

Mensaje por minter »

garillete escribió:And the winner is....

10 print "*"

Nadie dijo que el copo fuera grande y aunque el mio es de 5 puntas es cuestion de buscar un basic que tenga mas.... el listado mas minimo no puede ser... -rofl
0 ?”*”

He ganado! -11
garillete
Mensajes: 2503
Registrado: 30 Oct 2010 20:58
Has thanked: 499 times
Been thanked: 1005 times

Re: Pequeño concurso de programación

Mensaje por garillete »

Definitivamente en un concurso de segundones quedaría medalla de plata... -507
Avatar de Usuario
GuerreroNinja
Mensajes: 796
Registrado: 18 Feb 2021 20:37
Has thanked: 466 times
Been thanked: 473 times

Re: Pequeño concurso de programación

Mensaje por GuerreroNinja »

La primera opción es 17 prints y tira millas. Pero esos prints pueden ser algo lentorrillos, así que lo lio un poco: la estrella tiene 17 caracteres por línea, con un total de 17 líneas (total caracteres = 289). Programa largo en BASIC genérico así a lo basto, pero se puede hacer en cualquier ASM (6502, Z80, 68000...) muy fácilmente:

CLS
DIM A(288) ; Matriz de 289 elementos
READ A ; Cargamos la matriz con los valores de DATA
FOR T=0 TO 288
VPOKE $H0000+(T), A(T) ; O similar, la idea es escribir la posición de la memoria de vídeo de texto con el código del carácter
NEXT T
END
DATA $20,$20,$20,$20,$2A,$20,$20,$20,$20,$20,$20,$20,$20,$2A,$20,$20,$20
DATA $20,$20,$20,$20,$2A,$2A,$20,$20,$20,$20,$20,$20,$2A,$2A,$20,$20,$20
DATA $20,$20,$20,$20,$2A,$2A,$2A,$20,$20,$20,$20,$2A,$2A,$2A,$20,$20,$20
DATA $20,$20,$20,$20,$2A,$2A,$2A,$2A,$20,$20,$2A,$2A,$2A,$2A,$20,$20,$20
etc.

PERO esto es muy poco óptimo, lo mejor es guardar los datos como valores binarios, donde 0 es espacio y 1 es asterisco, por lo que solo ocuparían 34 bytes dejando de lado la última posición, que añadimos siempre un espacio excepto en las líneas 6 y 14, que añadimos un asterisco. En el bucle principal, enmascaramos el byte y extraemos la posición actual, si es 0 imprimimos el código ASCII $20 (espacio), y si es un 1 imprimimos el ASCII $2A (asterisco). Arañamos así más bytes de forma elegante, reduciendo los DATA de 289 bytes a 34 bytes, aunque aumentaría un poco el bucle principal. Si tengo un rato lo escribo, aunque creo que eso de "tener un rato" es un lujo para mí.

Otra opción que se me ocurre sería tratar de buscar una fórmula que genere la estrella.

Pero bueno, hasta aquí llegó mi participación -507 -507 -507
Mis niñas favoritas: -m3s3x MSX2+ Sony F1XDJ / Wavy 70FD / SVI728 / HB-75P / HB101 -sp3ct4av1d30 SVI 328 MKII / SVI 640 -cocbm1 C64C -coam1 A1200 -4mstr4d CPC6128+ / Amstrad 2386 -ph34r MiSTer -sp3zy Gomados+ / N-GO / ZXUno -j4tar1 Atari 800XL
garillete
Mensajes: 2503
Registrado: 30 Oct 2010 20:58
Has thanked: 499 times
Been thanked: 1005 times

Re: Pequeño concurso de programación

Mensaje por garillete »

Pues las radiofórmulas tipo los 40 principiantes, cadena ciento, etc, llevan generando estrellas a base de repeticiones (de la misma canción) toda la vida... Yo con autotune 4 versos asonantes o malsonantes y una buena pinta de mamarracho triunfaria fijo....

Seguro que alguno de los participantes nos sorprende....jay curiosidad a ver en que tamaño lo dejan...
Avatar de Usuario
swapd0
Mensajes: 231
Registrado: 21 May 2022 16:11
Has thanked: 66 times
Been thanked: 71 times

Re: Pequeño concurso de programación

Mensaje por swapd0 »

yo he estado probando con el emulador del commander x16 pero no he encontrado como hacer un "print at(x,y)", asi que lo he dejado :P
tolkien
Mensajes: 143
Registrado: 20 Oct 2016 06:49
Has thanked: 110 times
Been thanked: 63 times

Re: Pequeño concurso de programación

Mensaje por tolkien »

Pues que me picó la curiosidad y como quería saber cual era el tamaño mínimo que ocupa nuestra rutina de inicio en Amiga me he liado esta tarde a ello.
Al final he acabado destripando todo el código de inicio y ya no hay por donde cogerlo. jejejeje

La cuestión es que no es una máquina que se adapte bien al sizecoding pero he hecho lo que he podido y lo he dejado en xxx kb de ejecutable.
Lo he hecho en ensamblador sin usar llamadas al sistema pues me gusta vivir embrutecido.

Edito el tamaño por sugerencias de las normas aunque no tenia pensado participar a priori.
Pero desde luego es un buen ejercicio mental :)
-coam1
Avatar de Usuario
Peluko
Mensajes: 105
Registrado: 27 Jun 2022 15:47
Has thanked: 32 times
Been thanked: 93 times

Re: Pequeño concurso de programación

Mensaje por Peluko »

Desempolvando viejos recuerdos... aquí una aproximación en versión ROM de MSX:

Código: Seleccionar todo


		DEVICE	NOSLOT64K
		SLDOPT	COMMENT WPMEM,LOGPOINT,ASSERTION

LF		equ	0Ah
CR		equ	0Dh

CHPUT		equ	00A2h	; BIOS output char
INIT32		equ	006Fh

PAGE_SIZE	equ	4000h	; 16kB

LINL32		equ	0F3AFh

		org	4000h

; ### ROM header ###

		db	"AB"		; ID para ROM
		dw	INIT
		dw	0
		dw	0
		dw	0
		dw	0,0,0	; Reserved

INIT
		; SCREEN 1
		ld	a,32
		ld	(LINL32),a
		call	INIT32

PRINTSTAR	ld	hl,STARDATA
		ld	e,ENDDATA-STARDATA
1		ld	d,(hl)
		ld	a,e
		cp	5
		jr	c,2f
		cp	14
		jr	3f
2		ccf
3		call	PRINTLINE
		inc	hl
		dec	e
		jr	nz,1b

PAUSE		jr	PAUSE

PRINTLINE	call	OUTBITSL
		call	OUTBITSR
		ld	a,CR
		call	CHPUT
		ld	a,LF
		jp	CHPUT

OUTBITSR	ld	b,8
1		rr	d
		call	c,PUTSTAR
		call	nc,PUTBLANK
		djnz	1b
		ret

OUTBITSL	ld	b,9
1		rl	d
		call	c,PUTSTAR
		call	nc,PUTBLANK
		djnz	1b
		ret

PUTSTAR		ld	a,'*'
		jp	CHPUT
PUTBLANK	ld	a,' '
		jp	CHPUT

STARDATA	db	08h,0Ch,0Eh,0Fh,0FFh,7Fh,3Fh,1Fh
		db	0Fh
		db	1Fh,3Fh,7Fh,0FFh,0Fh,0Eh,0Ch,08h
ENDDATA

		SAVEBIN	"star.rom",4000h,80h

Es una ROM de 117 bytes. Quitando la cabecera del cartucho se queda en 101. Seguro que se puede mejorar bastante.
star.zip
(219 Bytes) Descargado 51 veces
(ocupa más en zip que sin comprimir, pero no me deja adjuntar archivos .rom)

Saludos.
Avatar de Usuario
explorer
Mensajes: 728
Registrado: 10 Ene 2016 18:43
Ubicación: Valladolid, España
Has thanked: 24 times
Been thanked: 694 times
Contactar:

Re: Pequeño concurso de programación

Mensaje por explorer »

Genial las soluciones, pero mejor que las comentáramos pasado el día 26(*). Mientras tanto, tenéis tiempo de sobra para encontrar la versión más corta, en el lenguaje y sistema que queráis. Cuando lo creáis conveniente, lo empaquetáis en un zip junto con la captura de imagen tal como pone en las instrucciones, y lo enviáis.

Yo lo estoy haciendo en Atari BASIC para los Atari 8 bits, pero no descarto intentarlo también en 6502 y 68000.

¡Vamos!

(*) en las normas pone que no se publique código ni se comenten tamaños de código hasta que llegue ese día, para animar a todos a participar.
Avatar de Usuario
frankrodiii
Mensajes: 680
Registrado: 26 May 2019 14:46
Ubicación: ??!!!#=?¿****!!! ©
Has thanked: 519 times
Been thanked: 286 times
Contactar:

Re: Pequeño concurso de programación

Mensaje por frankrodiii »

Me he animado a hacerlo en el BASIC del Apple IIc, usando métodos que no sean obvios como el ejemplo. Es divertido! -507
frankrodriguez.net
Apple IIc - Macintosh SE/30 - Amiga 500 Plus - SiDi
Avatar de Usuario
frankrodiii
Mensajes: 680
Registrado: 26 May 2019 14:46
Ubicación: ??!!!#=?¿****!!! ©
Has thanked: 519 times
Been thanked: 286 times
Contactar:

Re: Pequeño concurso de programación

Mensaje por frankrodiii »

Bueno pues ya les he pasado el programa, que me hacía ilusión participar en un concurso solo para que me den un sugus por participar jsjsjs.
Advierto que no es la repera el programa, unas cuantas líneas he necesitado aunque he estado dándole vueltas al coco. -507.
frankrodriguez.net
Apple IIc - Macintosh SE/30 - Amiga 500 Plus - SiDi
Avatar de Usuario
gflorez
Mensajes: 1706
Registrado: 12 Sep 2014 19:58
Has thanked: 102 times
Been thanked: 595 times

Re: Pequeño concurso de programación

Mensaje por gflorez »

copo.gif
copo.gif (16.79 KiB) Visto 6969 veces
Responder

Volver a “Lenguajes de Programación y herramientas Dev”