Intro Karel 12

Ver en PDF

Enviar solución

Puntos: 100 (parcial)
Límite de tiempo: 4.0s
Límite de memoria: 256M

Autor:
Tipo de problema
Lenguajes permitidos
ReKarel

Descripción

Para este problema tienes que colorear dentro de un cuadrado 4 sub-cuadrados con montones de 1, 2, 3 y 4 zumbadores como se muestra en el ejemplo.

Implementa la función pintar_subcuadrado(n) que se encuentra en la plantilla para pintar un sub-cuadrado de lado n

Entrada

Karel inicia en la casilla (1, 1) orientado al Norte con infinitos zumbadores en la mochila sobre un mundro cuadrado de 16 filas y 16 columnas.

Salida

Karel debe colorear 4 sub-cuadrados como se muestra en el ejemplo.

Ejemplo

Abrir en ReKarel

Entrada

Salida

Límites

  • Solo existe un mundo y Karel siempre se encuentra en la misma posición mirando hacia el Norte.
  • Karel tiene infinitos zumbadores en la mochila.
  • No importa la orientación ni posición final de Karel, solo el número de zumbadores del mundo.

Recursos

  • Consulta aquí la plantilla de la solución.
  • Descarga aquí el mundo de ejemplo.
  • </ul></div>

    Fuente: OMIZAC 2021 Por: Charly (Charly52830)


Comentarios


  • 0
    sadboy16  comentado el 13 mayo 2026, 4:35 p.m.

    class program { void turnRight() { turnleft(); turnleft(); turnleft(); }

    void turnAround() {
        turnleft();
        turnleft();
    }
    
    void put2() {
        putbeeper();
        putbeeper();
    }
    
    void put3() {
        putbeeper();
        putbeeper();
        putbeeper();
    }
    
    void put4() {
        putbeeper();
        putbeeper();
        putbeeper();
        putbeeper();
    }
    
    void columna_1_3() {
        iterate(7) {
            putbeeper();
            move();
        }
        putbeeper();
        move();
        iterate(7) {
            put3();
            move();
        }
        put3();
    }
    
    void columna_2_4() {
        iterate(7) {
            put2();
            move();
        }
        put2();
        move();
        iterate(7) {
            put4();
            move();
        }
        put4();
    }
    
    void siguiente() {
        turnAround();
        while (frontIsClear()) {
            move();
        }
        turnleft();
        if (frontIsClear()) {
            move();
            turnleft();
        }
    }
    
    program() {
        iterate(8) {
            columna_1_3();
            siguiente();
        }
        iterate(8) {
            columna_2_4();
            siguiente();
        }
        turnoff();
    }

    }