Mi amigo y yo estábamos trabajando en un laboratorio en nuestra clase de informática AP y decidimos codificar uno de los problemas ya que todavía teníamos la mitad de la clase libre después de terminar. Aquí está la pregunta:
Dado un número n, ¿es n divisible por cada uno de sus dígitos?
Por ejemplo, 128 pasará esta prueba, es divisible por 1,2 y 8. Cualquier número con un cero descalifica automáticamente el número. Si bien puede usar otros idiomas y publicar soluciones con ellos si lo desea, estamos más interesados en ver cómo las personas compactas pueden hacer el programa en Java, ya que ese es el lenguaje que usamos en la clase. Hasta ahora, ambos tenemos 51. Aquí está mi código actual:
public boolean dividesSelf(int n){for(int p=n;n%10>0;)n/=p%(n%10)>0?.1:10;return n<1;}
// 51 characters
// Breakdown:
// for(int p=n; Saves one semicolon to put declaration into for loop
// n%10>0;) Basic check-for-zero
// n/= Pretty simple, discarding one number off of n at a time
// p%(n%10)>0? If p (the given value) is not divisible by n%10 (the current digit)...
// .1:10; Divide by .1 (multiply by 10) so it fails the check next iteration. If it is divisible, divide by 10 to truncate the last digit
// return n<1 If the number was fully divisible, every digit would be truncated, and n would be 0. Else, there would still be non-zero digits.
Requisitos
La firma del método puede ser lo que quieras. Solo cuenta el cuerpo de la función. Sin embargo, asegúrese de que el método devuelva un valor booleano y solo pase un parámetro numérico (no una cadena).
El código debe poder pasar todos estos casos (para mantenerse fiel a las instrucciones de la pregunta original, solo los valores booleanos de verdadero y falso cuentan si el idioma admite booleanos. Si y solo si su idioma no tiene variables booleanas usted puede representar falso con 0 y verdadero con cualquier número entero distinto de cero (preferiblemente 1 o -1):
128 -> true
12 -> true
120 -> false
122 -> true
13 -> false
32 -> false
22 -> true
42 -> false
212 -> true
213 -> false
162 -> true
204 -> false
Además, no contamos los espacios en blanco, así que siéntete libre de hacer lo mismo, a menos que el espacio en blanco es esencial para el funcionamiento del programa (por lo que los saltos de línea en Java no cuentan, pero un solo espacio entre inty x=1hace el recuento.) Buena suerte !
0dígitos que es un múltiplo de cada uno de ellos), imagino que la mayoría de las respuestas se alargarían de una manera poco interesante para incluir un cheque. Así que me gusta más el problema que plantea el título (divisible por sus dígitos, en lugar de ser un múltiplo de sus dígitos, lo que excluye 0).
trueyfalseo son Truthy / Falsy valores bien así? 3. Lajavaetiqueta realmente no se aplica aquí, ya que el desafío en sí no está relacionado con Java.