Bem, todo mundo adora poliglotas . Você receberá dois números inteiros, em qualquer forma padrão de entrada (sem codificação). Sua tarefa é escrever uma poliglota que encontre o valor mínimo em um idioma e o valor máximo entre os dois números no outro idioma e execute as seguintes operações:
- O código que encontra o valor máximo também deve calcular sua soma.
- O programa que encontrar o valor mínimo também deve calcular o resultado de sua subtração (
max - min
) - Aqui está a "parte complicada" : se os dois números forem iguais, os dois programas não devem produzir / retornar nada (para
STDOUT
e /STDERR
ou qualquer outroreturn
método) - Consulte a seção Especificações de saída para obter mais detalhes sobre a formatação.
Entrada
Como mencionado acima, dois números inteiros tomados como entrada em qualquer método padrão , comum aos dois idiomas.
Especificações de saída
- Para o programa que encontra o
max
, o formato deve ser:max_value, addition result
- Para o programa que encontra o
min
, o formato deve sermin_value, subtraction result (max - min)
- Os resultados podem ser impressos, com qualquer delimitador clara (
,
\n
,,
ou o que você quiser), retornado da função como uma string contendo os dois valores esperados com um delimitador ou como uma lista de números (por exemplo:[max_value,sum]
)
Exemplos:
Input || Max Language Output || Min Language Output
100, 40 || 100, 140 || 40, 60
63, 67 || 67, 130 || 63, 4
-45, -5 || -5, -50 || -45, 40
21, 21 || ||
-1, 1 || 1, 0 || -1, 2
Pontuação:
Isso é código-golfe , portanto, tente escrever o código mais curto para obter os resultados desejados, observando que as brechas padrão são estritamente proibidas. Você deve usar dois idiomas diferentes, não outras versões do mesmo idioma (por exemplo: Python 2
- Python 3
pares não são válidos)
code-golf
math
arithmetic
polyglot
Mr. Xcoder
fonte
fonte
Respostas:
05AB1E / Jelly ,
2120 bytes-1 byte depois de pedir ajuda - obrigado Emigna! (
`
vaipush(uwrapped(pop()))
)Bytes brutos (o despejo à direita mostra o que minha máquina Windows exibe):
Ambos recebem entrada de STDIN e saída para STDOUT como uma representação de lista
[x, y]
.O idioma máximo é 05AB1E:
Onde os
.
bytes representados não podem ser impressos em sua página de código ( cp1252 ) e provavelmente aqui no que você estiver usando (0x18 = CANe 0x04 = EOT).Experimente a versão 05AB1E
O idioma mínimo é Jelly:
Experimente a versão Jelly .
Quão?
05AB1E:
Geléia:
fonte
C e C ++ (gcc),
117107 bytes-10 bytes graças a @Steadybox!
Explicação: Em C,
auto c=.5
declara uma variável inteira com a classe de armazenamento automático (que é o padrão), que é inicializada em 0, enquanto que em C ++ 11 declara um duplo, inicializado em 0,5. Portanto, o valor da variável será verdadeiro em C ++ e falso em C.Idioma C - max: Experimente online!
C ++ - idioma mínimo: Experimente online!
fonte
auto c=.5
e usar emc
vez desizeof'a'-1
. Em C,auto c=.5
declara uma variável inteira com a classe de armazenamento automático (que é o padrão), que é inicializada como 0, enquanto que em C ++ 11 declara um duplo, inicializado como 0,5. Assim, o valor da variável será truthy em C ++ e Falsas em C.Python 3 / Jelly , 42 bytes
Usando a página de código de Jelly para codificar o arquivo.
Bytes brutos:
Ambos definem uma função diádica sem nome.
Python (a linguagem máxima) vê:
Testes como Python .
Jelly (o idioma mínimo) vê:
Testes como geléia .
Quão?
Jelly interpreta 0x0a como
½
, o átomo de raiz quadrada, enquanto Python interpreta como uma nova linha. No Jelly, 0x7f é interpretado como uma separação entre links (funções) e é representado por uma nova linha ou um pilcrow em sua página de código. Para o Jelly, o último link é a função principal - aqui ele não chama o link acima (que o intérprete ainda precisa analisar corretamente). No Python 0x23,#
instrui que qualquer coisa após e antes de 0x0a, uma nova linha, é um comentário.O código Python que é executado:
O código Jelly que é executado:
fonte
\x7f
e\x04
para os não imprimíveis no Python).Ruby / Python 3, 102 bytes
Ruby retorna max / sum, Python retorna min / diferença. Entrada é um objeto de matriz lido de STDIN.
Experimente on-line: Ruby
Experimente on-line: Python
A principal peculiaridade usada aqui é o uso da verdade
0
no Ruby, que é falso no Python. A outra coisa que vale a pena mencionar é que asort
função do Python modifica a lista no local e retornaNone
, enquanto o Ruby não faz e retorna a matriz classificada, daí a necessidade de usarb or a
para obter o mínimo / máximo.O Python 3 é necessário porque o Python 2 reclama se você tentar chamar
print
após aor
declaração na última linha.fonte
Java / AWK ,
219217212196 bytesExperimente online!
Java gera max e sum, AWK produz min e diferença. Nenhuma saída para se as entradas são idênticas.
Este é meu primeiro poliglota e primeiro TIO :)
fonte
JavaScript (ES6) / QBasic,
172171 bytesBaseado nesta solução minha de uma pergunta poliglota semelhante .
Essa solução também usa a abordagem de comentários!
JavaScript é o idioma min. Ele recebe uma matriz contendo números como entrada. Gera dois números separados por
,
(1º número é o menor valor da matriz de entrada e 2º número é a diferença dos maiores e menores valores da matriz de entrada) poralert()
ing. Não fazalert()
nada se os números são iguais. Você pode chamar a função comof([100,40])
.QBasic é o idioma máximo. Solicita repetidamente a entrada, duas vezes. Imprime o maior número de números de entrada, bem como a soma dos números maiores e menores da entrada. Não faz
PRINT
nada se os números são iguais.Como funciona?
No QBasic (um idioma da família BASIC estruturada; não requer números de linha),
'
marca o início de um comentário que vai até o final da linha. Enquanto no JavaScript, ele marca o início de uma string. Portanto, a primeira linha inteira é marcada como um comentário no QBasic, mas no JavaScript, a linha é executada (e essa linha contém a parte do JavaScript que calcula o menor número e a diferença entre o maior e o menor número, além de um/*
no final que inicia um comentário para ocultar o restante do código QBasic do interpretador JavaScript.)O código da segunda linha para a segunda linha contém o código QBasic para calcular o maior número e a soma do maior e do menor número (o código é muito autoexplicativo).
A última linha contém
'*/
.'
faz com que o intérprete QBasic interprete o código a seguir como um comentário, enquanto que no JavaScript ele não tem nenhum efeito, pois faz parte de um comentário (iniciado no final da primeira linha). O código a seguir (*/
) faz com que o JavaScript termine o comentário iniciado na primeira linha, mas não é executado no QBasic porque o QBasic acha que faz parte de um comentário.Casos de teste
JavaScript (idioma mínimo):
QBasic (idioma máximo):
Vá para este site . Copie e cole o seguinte código no editor de texto:
A razão pela qual os números de linha são necessários é que o site que mencionei suporta apenas idiomas BASIC não estruturados. E esse site é o único intérprete online do BASIC decente que eu pude encontrar. No entanto, a execução do código presente na parte superior da postagem (o código sem números de linha) deve funcionar bem em qualquer bom intérprete QBasic que ofereça suporte ao BASIC estruturado e
'
como iniciador de comentários (poucos, no entanto, a maioria)fonte