POO-ITBA / 2024_01

Consultas 1C 2024
0 stars 0 forks source link

Parcial 1 2023 1C Ej 1 #33

Closed whatisthisgit closed 4 months ago

whatisthisgit commented 4 months ago

Buenas tardes, queria saber si mi resolucion a este ej esta bien, en particular el uso de copyOfRange (por que la respuesta en el campus no la usa y presiento que trivializa mucho el ejercicio, entonces puede ser que no este permitido o no funcione correctamente). Incluyo el archivo del examen: Par1_23_01.pdf

public class CustomIndex<R> implements Iterable<R>
{
    private final R[] customArray;
    private UnaryOperator<Integer> unaryOp;

    CustomIndex(R[] customArray, int from, int to, UnaryOperator<Integer> unaryOp)
    {
        if(from >= to)
        {
            throw new IllegalArgumentException("Invalid combination of start and end index");
        }
        this.customArray = Arrays.copyOfRange(customArray, from, to);
        setNextIndex(unaryOp);
    }

    @Override
    public CustomIndexIterator iterator()
    {
        return new CustomIndexIterator();
    }

    public void setNextIndex(UnaryOperator<Integer> unaryOp)
    {
        this.unaryOp = unaryOp;
    }

    private class CustomIndexIterator implements Iterator<R>
    {
        private int current;
        private final UnaryOperator<Integer> nextInt = unaryOp;

        @Override
        public boolean hasNext()
        {
            return current < customArray.length;
        }

        @Override
        public R next()
        {
            if(!hasNext())
            {
                throw new NoSuchElementException();
            }
            R aux = customArray[current];
            current = nextInt.apply(current);
            return aux;
        }
    }
}

Tambien queria saber si hace falta importar los packages que usamos para nuestras clases en el examen

fmeola commented 4 months ago

Hola @whatisthisgit No te sirve hacer una copia del array porque en el tester, a propósito, se hace un

       v1[0] = "Hello";

y en la salida se debería ver reflejado el cambio y en tu implementación no. Es cierto que no vimos copyOfRange pero desde ya pueden utiliazarlo ya que tiene que ver con arrays. En el recuperatorio lo que no van a poder utilizar son todas las colecciones de Java (ArrayList, HashSet, etc.) pero el array tradicional sí. Y atención que copyOfRange es exclusivo así que en todo caso sería to+1.

No tienen que escribir los imports en el exámen.

whatisthisgit commented 4 months ago

Muchas gracias por la respuesta Franco.