Esta pregunta es complicada (y en particular más difícil que ¿Qué gran número es mayor? ), Para aquellos a quienes les gustan los acertijos más desafiantes.
Entrada
Enteros a1, a2, a3, a4, a5, b1, b2, b3, b4, b5 cada uno en el rango de 1 a 10.
Salida
True if a1^(a2^(a3^(a4^a5))) > b1^(b2^(b3^(b4^b5))) and False otherwise.
^ es exponenciación en esta pregunta.
Reglas
Este es el código de golf. Su código debe terminar correctamente dentro de 10 segundos para cualquier entrada válida en TIO . Si su idioma no está en TIO, el código debería finalizar en menos de 10 segundos en su máquina.
Puede generar cualquier cosa Verdad para Verdadero y cualquier cosa Falsey para Falso.
Casos de prueba
Recuerde que según las reglas de exponenciación, a1 ^ (a2 ^ (a3 ^ (a4 ^ a5))) == a1 ^ a2 ^ a3 ^ a4 ^ a5.
10^10^10^10^10 > 10^10^10^10^9
1^2^3^4^5 < 5^4^3^2^1
2^2^2^2^3 > 10^4^3^2^2
6^7^8^9^10 is not bigger than 6^7^8^9^10
10^6^4^2^2 < 10^6^2^4^2
2^2^2^2^10 > 2^2^2^10^2
10^9^8^7^6 < 6^7^8^9^10
3^1^10^10^10 > 2^1^10^10^10
9^10^10^10^10 < 10^9^10^10^10
Nuevos casos de prueba de Kevin Cruijssen
[10,10,10,10,10, 10,10,10,10,9] #true
[2,2,2,2,3, 10,4,3,2,2] #true
[2,2,2,2,10, 2,2,2,10,2] #true
[10,10,10,10,10, 9,10,10,10,10] #true
[3,2,2,1,1, 2,5,1,1,1] #true
[2,2,3,10,1, 2,7,3,9,1] #true
[7,9,10,10,10, 6,9,10,10,10] #true
[3,2,2,2,2, 2,2,2,2,2] #true
[8,3,1,2,1, 2,2,3,1,1] #true
[2,4,2,1,1, 3,3,2,1,1] #true
[5,4,3,2,1, 1,2,3,4,5] #true
[1,2,3,4,5, 5,4,3,2,1] #false
[6,7,8,9,10, 6,7,8,9,10] #false
[10,6,4,2,2, 10,6,2,4,2] #false
[10,9,8,7,6, 6,7,8,9,10] #false
[1,10,10,10,10, 1,10,10,10,9] #false
[2,4,1,1,1, 2,2,2,1,1] #false
[2,2,2,1,1, 2,4,1,1,1] #false
[2,5,1,1,1, 3,2,2,1,1] #false
[4,2,1,1,1, 2,4,1,1,1] #false
[2,4,1,1,1, 4,2,1,1,1] #false
[2,3,10,1,1, 8,3,9,1,1] #false
[8,3,9,1,1, 2,3,10,1,1] #false
[2,4,1,1,1, 3,3,1,1,1] #false
[2,2,1,9,9, 2,2,1,10,10] #false
[2,2,1,10,10, 2,2,1,9,9] #false
[1,1,1,1,1, 1,2,1,1,1] #false
fuente
Respuestas:
Ruby, 150 bytes
Consulte las revisiones para los conteos de bytes anteriores.
-10 bytes gracias a @ValueInk
+16 bytes gracias a @RosLuP por errores.
Pruébalo en línea .
¿Comparar diferentes torres de poder de base (de 'altura' cinco)?
Código sin golf:
Desglose del código:
Este es el
t
logaritmo base , que se utilizará para reducir el tamaño de los números que estamos comparando. El valor predeterminado es basec
cuando solo se proporciona un argumento.Esto se actualiza
i = i ** j
ya quei
nunca se usa solo, yy
es el resultado de iniciar sesiónb^c^d^e == g^h^i(^j)
dos veces y mover todo a un lado. Luego dejamosz = l[a, f] * b ** c
como baseg
de registro de la basef
de registro dea ** b ** c
.1^b^c^d^e = 1
nunca es mayor quef^g^h^i^j
, y del mismo modo,a^b^c^d^e
siempre es mayor que1^g^h^i^j = 1
sia != 1
. Tenga en cuenta quereturn p
vuelvenil
, que es falsey, yreturn 1
vuelve1
, que es verdad.Si
b == 1
og == 1
, a continuación, esto se reduce a la comparación dea ** b ** c
af ** g ** h
, que se realiza con dos troncos a ambos lados.Esto se compara
a ** b ** c
conf ** g ** h ** i
reordenando comolog[log[b ** c * log[a, f], g], h]
en comparación coni
. (Recordemos esoi **= j
al principio yz = log[b ** c * log[a, f], g]
.)Esto compara las 4 potencias más altas después de iniciar sesión en ambos lados dos veces. Si son iguales, compara la base.
fuente
Python 2,
671612495490611597 bytes-59 bytes gracias a @EmbodimentOfIgnorance
-117 bytes gracias a @Neil
+121 bytes por cerca de cinco correcciones de errores, todos encontrados por @ngn
Toma las entradas como dos listas.
NOTA: También funciona con listas más grandes o con longitudes desiguales.EDITAR: ya no es cierto; si todavía funcionaP(a)
yP(b)
como resultado diferentes tuplas, pero si son lo mismo este código actualizado anterior sólo funciona con las listas con un tamaño fijo de 5 ahora.Pruébalo en línea.
Explicación:
Versión de golf de esta respuesta en math.stackexchange.com , por lo que todo el crédito va a @ThomasAhle .
Para citar su respuesta:
Con respecto a los contraejemplos, menciona lo siguiente en la sección de comentarios:
Como el plan A y B son irrelevantes en este desafío, dado que la altura es 5 para ambas torres de potencia que ingresamos, el plan C lo es. Así que he cambiado
P(a)>P(b)
aP(S(a,b))>P(S(b,a))if P(a)==P(b)else P(a)>P(b)
con la función recursivaS(a,b)
. SiP(a)
, yP(b)
como resultado la misma tupla, elP(S(a,b))>P(S(b,a))
primero será quitar los valores que son iguales en los mismos índices de salida, antes de hacerlo con el mismoP(A)>P(B)
control sobre estas listas ahora más cortos.fuente
[10,10,10,10,10]>[9,10,10,10,10]
R
una vez, ¿así que tal vez solo puede alinearla?R
en la línea 5 ...05AB1E ,
96104 bytesPuerto de la respuesta de Ruby de @SimplyBeautifulArt , ¡así que asegúrate de votarlo!
POSITIVE_INFINITY
NEGATIVE_INFINITY
0.0
[3,2,2,1,1,2,5,1,1,1]
POSITIVE_INFINITE
[2,4,1,1,1,3,3,1,1,1]
NEGATIVE_INFINITY
Entrada como una lista de números enteros diez:
[a,b,c,d,e,f,g,h,i,j]
.Pruébelo en línea o verifique todos los casos de prueba .
Explicación:
Si alguien quiere probar y jugar más al golf, aquí hay un programa auxiliar que he usado para obtener las variables correctas de la lista de entrada.
fuente
C,
168180 bytesC port de la respuesta de Kevin Cruijssen.
Pruébalo en línea
fuente
3,1,10,10,10,2,1,10,10,10
mi respuesta Java como antes. Y en realidad es un puerto de la respuesta de Ruby de @ SimplyBeautifulArt, ya que él fue quien inventó todo y corrigió los errores ...APL (NARS), caracteres 118, bytes 236
La función anterior llama a z, en "az w" devolvería 1 si el número en a es mayor que el número en w, de lo contrario devolvería 0.
Si tengo
Será f (aa)> f (bb) con una matriz de 5 números positivos aa y bb si y solo si (si a> 1 de aa y bb) log (log (f (aa)))> log ( log (f (bb))) uno tiene que usar las leyes log ():
para compilación v (aa) = log (log (aa)) = v (a, b, c, d, e) = log (log (a)) + log (b) (c ^ (d ^ e)) = {p (3 ↑ ⍵), / 3 ↓ ⍵} función y, por lo tanto, el ejercicio se encuentra cuando v (aa)> v (bb).
Pero hay un caso en el que v (aa) y v (bb) son infinitos (APL ha finalizado el espacio flotante) en ese caso, usaría la función no segura
que no entiendo completamente si está bien y no toma en cuenta un parámetro también ... prueba:
fuente
log(log())
, pero para ese caso de prueba, la diferencia entrelog(log(10^10^10^10^10))
ylog(log(9^10^10^10^10))
requeriría una cantidad absurda de precisión para recoger. Necesitaría tener un punto flotante con aproximadamente2e10
10 dígitos de precisión. Y esto ignora el hecho de que ambos lados son aproximadamente tan grandes como10^10^10
, lo que me resulta difícil de creer que haya podido calcular.9, 10, 10, 10, 10, 10, 9, 10, 10, 10
, lo que debería volver1
, peros(9,10,10,10,10) < s(10,9,10,10,10)
.Java 8,
299288286252210208224 bytesPuerto de la respuesta de Ruby de @SimplyBeautifulArt , ¡así que asegúrate de votarlo!
-14 bytes gracias a @SimplyBeautifulArt .
+17 bytes para las mismas correcciones de errores que la respuesta de Ruby.
Pruébalo en línea.
Explicación:
fuente
x==y
lugar deM.abs(x-y)<1e-9
.t
Se puede eliminar para guardar un byte poniéndoloy
como lo hice. TIO