3v4l.org

run code in 300+ PHP versions simultaneously
<?php /** * Problema: * * Sabe-se que por trás de cada cometa há um OVNI. Esses OVNIs frequentemente buscam bons * desenvolvedores aqui na Terra. Infelizmente só têm espaço para levar um grupo de devs por vez. * Para a seleção, há um engenhoso esquema, da associação do nome do cometa ao nome do grupo, que * possibilita a cada grupo saber se será levado ou não. * Os dois nomes, do grupo e do cometa, são convertidos em um número que representa o produto das * letras do nome, onde "A" é 1 e "Z" é 26. Assim, o grupo "LARANJA" * seria 12 * 1* 18 * 1 * 14 * 10 * 1 = 30240. Se o resto da divisão do número do grupo * por 45 for igual ao resto da divisão do número do cometa por 45, então o grupo será levado. * Para os cometas e grupos abaixo, qual grupo NÃO será levado? * * Cometa Grupo * Halley Amarelo * Encke Vermelho * Wolf Preto * Kushida Azul */ /** * Verifica um array contendo os cometas e grupos que serão levados. * * @param Array $cometasGrupos * @return String */ function verificarCometas($cometasGrupos) { $mensagem = ''; foreach ($cometasGrupos as $cometa => $grupo) { $somaCometa = somarLetras($cometa); $somaGrupo = somarLetras($grupo); if (! validarDivisao($somaCometa, $somaGrupo)) { $mensagem .= "{$grupo}" . PHP_EOL; } } return $mensagem; } /** * Realiza a soma das letras de uma palavra. * * @param String $palavra * @return String */ function somarLetras($palavra) { if (!$palavra) { return 0; } $palavra = str_split($palavra); $total = 0; foreach ($palavra as $letra) { $numero = ord(strtoupper($letra)) - 64; $total = $total ? $total * $numero : $numero; } return $total; } /** * Verifica a divisão do cometa e grupo e retorna se ele é valido ou não. * * @param Int $cometa, Int $grupo * @return Boolean */ function validarDivisao($cometa, $grupo) { $divisor = 45; $divisaoCometa = $cometa % $divisor; $divisaoGrupo = $grupo % $divisor; $valido = false; if ($divisaoCometa == $divisaoGrupo) { $valido = true; } return $valido; } /** * Lista de cometas e grupos a serem verificados. */ $cometasGrupos = array( 'HALLEY' => 'AMARELO', 'ENCKE' => 'VERMELHO', 'WOLF' => 'PRETO', 'KUSHIDA' => 'AZUL' ); echo verificarCometas($cometasGrupos);

Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).

VersionSystem time (s)User time (s)Memory (MiB)
8.3.60.0040.01116.38
8.3.50.0140.00318.28
8.3.40.0090.00618.92
8.3.30.0070.00718.99
8.3.20.0070.00020.21
8.3.10.0020.00521.76
8.3.00.0080.00019.14
8.2.180.0090.00916.38
8.2.170.0140.00018.82
8.2.160.0130.00422.96
8.2.150.0000.00824.18
8.2.140.0030.00524.66
8.2.130.0040.00426.16
8.2.120.0060.00319.78
8.2.110.0060.00322.25
8.2.100.0070.00418.16
8.2.90.0000.00919.21
8.2.80.0060.00317.97
8.2.70.0080.00417.63
8.2.60.0040.00418.03
8.2.50.0000.00818.07
8.2.40.0060.00319.76
8.2.30.0040.00418.07
8.2.20.0000.00717.81
8.2.10.0040.00418.00
8.2.00.0050.00317.67
8.1.280.0100.01025.92
8.1.270.0040.00419.01
8.1.260.0000.00726.35
8.1.250.0000.00828.09
8.1.240.0060.00322.18
8.1.230.0070.00319.09
8.1.220.0090.00017.79
8.1.210.0050.00318.77
8.1.200.0060.00317.23
8.1.190.0000.00917.25
8.1.180.0040.00418.10
8.1.170.0000.00818.57
8.1.160.0040.00322.08
8.1.150.0040.00418.95
8.1.140.0000.00819.25
8.1.130.0070.00017.86
8.1.120.0000.00717.54
8.1.110.0000.00717.31
8.1.100.0040.00417.38
8.1.90.0040.00417.46
8.1.80.0030.00517.34
8.1.70.0000.00817.50
8.1.60.0050.00517.62
8.1.50.0040.00417.41
8.1.40.0080.00017.45
8.1.30.0080.00017.72
8.1.20.0080.00317.53
8.1.10.0000.00817.33
8.1.00.0060.00317.35
8.0.300.0040.00418.77
8.0.290.0060.00316.75
8.0.280.0030.00318.44
8.0.270.0050.00217.14
8.0.260.0030.00317.26
8.0.250.0040.00417.00
8.0.240.0050.00216.87
8.0.230.0000.00716.89
8.0.220.0000.00716.82
8.0.210.0070.00016.82
8.0.200.0030.00616.96
8.0.190.0040.00416.96
8.0.180.0030.00616.94
8.0.170.0030.00516.82
8.0.160.0000.00816.88
8.0.150.0040.00416.92
8.0.140.0080.00016.84
8.0.130.0000.00513.25
8.0.120.0030.00616.80
8.0.110.0040.00416.91
8.0.100.0000.00716.83
8.0.90.0080.00016.89
8.0.80.0070.01016.85
8.0.70.0080.00016.93
8.0.60.0050.00316.80
8.0.50.0000.00716.74
8.0.30.0140.01017.06
8.0.20.0120.00917.40
8.0.10.0000.00717.07
8.0.00.0120.00516.75
7.4.330.0060.00015.09
7.4.320.0030.00316.60
7.4.300.0030.00316.60
7.4.290.0030.00316.46
7.4.280.0040.00416.59
7.4.270.0050.00316.61
7.4.260.0000.00716.60
7.4.250.0000.00716.50
7.4.240.0000.00716.46
7.4.230.0000.00716.71
7.4.220.0030.01416.71
7.4.210.0080.00616.68
7.4.200.0000.00716.45
7.4.160.0060.01016.41
7.4.150.0090.00917.40
7.4.140.0060.01117.86
7.4.130.0080.00816.47
7.4.120.0120.00516.60
7.4.110.0140.00416.50
7.4.100.0100.00716.46
7.4.90.0110.00516.56
7.4.80.0130.00619.39
7.4.70.0100.00716.56
7.4.60.0030.01316.53
7.4.50.0000.00616.23
7.4.40.0000.01716.64
7.4.30.0230.00016.55
7.4.00.0000.01615.00
7.3.330.0000.00513.20
7.3.320.0000.00513.32
7.3.310.0030.00316.44
7.3.300.0030.00316.43
7.3.290.0030.01216.39
7.3.280.0110.00516.37
7.3.270.0150.00417.40
7.3.260.0120.00616.60
7.3.250.0080.01316.65
7.3.240.0120.00616.39
7.3.230.0130.00816.60
7.3.210.0100.00616.42
7.3.200.0070.01019.39
7.3.190.0030.01316.67
7.3.180.0090.00616.61
7.3.170.0140.00516.38
7.3.160.0120.00316.41
7.2.330.0060.01316.76
7.2.320.0090.01316.86
7.2.310.0100.01016.82
7.2.300.0080.00916.53
7.2.290.0120.01216.83
7.2.00.0030.00919.66
7.1.100.0030.01218.01
7.1.70.0030.00717.01
7.1.60.0040.01819.46
7.1.50.0100.01317.04
7.1.00.0000.08022.40
7.0.200.0060.00315.04
7.0.140.0000.05322.05
7.0.60.0100.07320.06
7.0.50.0100.07317.81
7.0.40.0100.08720.04
7.0.30.0330.06320.12
7.0.20.0230.07020.24
7.0.10.0030.04320.24
7.0.00.0070.04320.22
5.6.280.0070.07020.94
5.6.210.0030.08320.52
5.6.200.0170.07718.25
5.6.190.0030.04320.41
5.6.180.0570.06720.79
5.6.170.0330.06020.47
5.6.160.0030.05720.54
5.6.150.0000.07018.29
5.6.140.0000.08318.18
5.6.130.0070.07318.27
5.6.120.0130.06321.02
5.6.110.0070.03721.12
5.6.100.0030.08721.09
5.6.90.0070.07020.97
5.6.80.0100.06720.43
5.5.350.0330.07020.35
5.5.340.0100.04718.02
5.5.330.0100.08020.19
5.5.320.0100.07720.28
5.5.310.0430.04320.32
5.5.300.0100.05017.94
5.5.290.0000.05317.98
5.5.280.0030.08320.89
5.5.270.0070.07320.76
5.5.260.0100.07020.98
5.5.250.0000.04320.62
5.5.240.0100.07020.28
5.4.450.0700.05019.62
5.4.440.0130.05719.41
5.4.430.0000.06319.53
5.4.420.0100.05719.50
5.4.410.0100.05319.35
5.4.400.0100.05019.02
5.4.390.0230.06018.71
5.4.380.0230.06718.79
5.4.370.0200.05318.79
5.4.360.0270.06718.58
5.4.350.0230.07318.73
5.4.340.0270.06718.65
5.4.320.0230.07018.78
5.4.310.0270.05318.67
5.4.300.0230.05018.55
5.4.290.0270.05318.55
5.4.280.0200.04718.79
5.4.270.0170.05318.53
5.4.260.0170.05718.57
5.4.250.0300.04018.47
5.4.240.0270.06718.54
5.4.230.0170.05718.69
5.4.220.0130.06018.74
5.4.210.0330.06318.77
5.4.200.0100.08716.55
5.4.190.0330.06718.45
5.4.180.0100.06018.54
5.4.170.0200.05718.66
5.4.160.0200.05318.53
5.4.150.0170.05018.79
5.4.140.0170.05316.20
5.4.130.0230.06016.21
5.4.120.0130.05016.18
5.4.110.0170.07316.23
5.4.100.0130.05316.22
5.4.90.0200.05316.44
5.4.80.0200.06016.42
5.4.70.0300.06016.20
5.4.60.0170.06716.43
5.4.50.0130.05316.43
5.4.40.0270.04716.27
5.4.30.0230.04316.24
5.4.20.0270.04016.09
5.4.10.0170.04716.25
5.4.00.0130.05715.74
5.3.290.0100.06714.80
5.3.280.0200.04714.64
5.3.270.0200.05314.77
5.3.260.0130.06314.82
5.3.250.0270.05014.63
5.3.240.0100.06714.66
5.3.230.0130.05714.79
5.3.220.0230.05314.57
5.3.210.0170.05314.61
5.3.200.0200.05714.61
5.3.190.0230.04714.73
5.3.180.0130.05714.57
5.3.170.0130.06714.77
5.3.160.0100.07014.75
5.3.150.0170.06714.73
5.3.140.0170.07014.60
5.3.130.0270.06314.65
5.3.120.0200.07014.60
5.3.110.0200.07314.69
5.3.100.0130.05314.04
5.3.90.0070.06014.13
5.3.80.0130.05314.14
5.3.70.0170.05714.24
5.3.60.0200.04714.13
5.3.50.0200.04714.00
5.3.40.0130.05314.08
5.3.30.0200.04713.92
5.3.20.0130.05013.75
5.3.10.0200.04713.82
5.3.00.0130.05713.72
5.2.170.0200.05011.27
5.2.160.0130.04011.20
5.2.150.0130.04311.26
5.2.140.0230.03311.23
5.2.130.0130.04311.23
5.2.120.0230.04711.21
5.2.110.0170.04311.31
5.2.100.0170.04711.22
5.2.90.0170.04711.23
5.2.80.0200.05711.13
5.2.70.0230.05011.15
5.2.60.0100.05011.10
5.2.50.0070.05011.14
5.2.40.0300.03011.11
5.2.30.0100.04710.95
5.2.20.0100.05010.99
5.2.10.0100.04710.96
5.2.00.0100.04310.94
5.1.60.0070.03710.03
5.1.50.0070.04710.02
5.1.40.0100.04010.01
5.1.30.0100.03710.44
5.1.20.0100.04010.57
5.1.10.0130.03710.11
5.1.00.0130.03310.27
5.0.50.0070.0308.68
5.0.40.0030.0308.45
5.0.30.0070.0438.25
5.0.20.0130.0308.24
5.0.10.0200.0278.29
5.0.00.0100.0478.20
4.4.90.0100.0176.85
4.4.80.0030.0236.85
4.4.70.0100.0206.85
4.4.60.0030.0236.85
4.4.50.0070.0206.85
4.4.40.0130.0306.85
4.4.30.0100.0206.85
4.4.20.0030.0236.85
4.4.10.0030.0236.85
4.4.00.0100.0336.85
4.3.110.0030.0276.85
4.3.100.0070.0236.85
4.3.90.0030.0276.85
4.3.80.0070.0336.85
4.3.70.0030.0276.85
4.3.60.0000.0306.85
4.3.50.0030.0236.85
4.3.40.0030.0376.85
4.3.30.0070.0206.85
4.3.20.0000.0276.85
4.3.10.0070.0206.85
4.3.00.0100.0239.24

preferences:
43.93 ms | 400 KiB | 5 Q