100 puertas

15 views
Skip to first unread message

galil...@gmail.com

unread,
Apr 1, 2016, 12:16:40 PM4/1/16
to reda4
Estos primeros programas que presento son transposiciones de código que poseo en un dialecto de BASIC llamado Yabasic 2.763. Y uno de los primeros que pasé a reda4 fué el clásico problema de las 100 puertas. Su enunciado es el siguiente:

Existen 100 puertas puestas en fila que, inicialmente, están cerradas. Se recorren todas secuencialmente 100 veces, abriendo las que estén cerradas y cerrando las que estén abiertas. La primera vez empezamos a partir de la puerta 1. La segunda vez, a partir de la 2, y así sucesivamente. La cuestión es averiguar qué puertas quedarán abiertas y cuales cerradas al finalizar.

Estas son las dos soluciones que presento:

^r4/lib/gui.txt

|: cls 1 1 1 ( 100 <=? )( dup "La puerta %d esta " print over <? 
| ( "cerrada, " print )( "ABIERTA, " print rot 1+ rot drop dup dup * rot ) 1+
| dup 3 mod 0? ( cr ) drop ) 3drop waitkey waitkey ;

| === Version optimizada ===

:doors 1 ( 2dup dup * >=? )( drop dup dup * "%d" print cr 1+ ) 2drop ;
: cls 100 doors waitkey waitkey ; 

Si existen formas más sencillas de hacerlo me gustaría saberlo.

Reply all
Reply to author
Forward
0 new messages