O rei da Roma antiga está tendo dificuldades para determinar se um quadrado mágico é válido ou não, porque o quadrado mágico que ele está verificando não inclui separadores entre os números. Ele contratou um engenheiro de software para ajudá-lo a determinar se um quadrado mágico é válido ou não.
Descrição da entrada
A entrada é apresentada em argumentos STDIN ou de linha de comando. Você não pode ter a entrada pré-inicializada em uma variável (por exemplo, "este programa espera a entrada em uma variável x
"). A entrada está no seguinte formato:
<top>,<middle>,<bottom>
Cada um <top>
, <middle>
e <bottom>
é uma string que só vai conter os caracteres maiúsculos I
, V
e X
. Não conterá espaços ou outros caracteres. Cada string representa três algarismos romanos, resultando em uma matriz de números 3x3. No entanto, esses números romanos podem (mas não necessariamente) ser ambíguos . Permita-me ilustrar isso com um exemplo. Considere o exemplo de linha a seguir de três algarismos romanos, sem espaços entre cada número:
IVIIIIX
Como não há espaços entre as letras, existem duas possibilidades para os números aqui:
- 1, 8, 9 (
I VIII IX
) - 4, 3, 9 (
IV III IX
)
Quando você considera que todas as três linhas da matriz podem ser ambíguas, existe o potencial de haver muitas matrizes 3x3 diferentes a partir de uma única entrada.
Observe que seqüências como 1, 7, 1, 9 ( I VII I IX
) não são possíveis porque cada linha sempre representa três números romanos. Observe também que os números romanos devem ser válidos, portanto, seqüências como 1, 7, 8 ( I VII IIX
) também não são possíveis.
Descrição da saída
Resultado:
- Um número inteiro
A
, ondeA
é o número de matrizes 3x3 exclusivas que podem ser formadas a partir da entrada ambígua e: - Um valor verdadeiro se alguma das matrizes 3x3 únicas formar um quadrado mágico ou:
- Um valor falso se nenhuma das matrizes 3x3 únicas formar um quadrado mágico.
Os valores de verdade e falsidade devem ser consistentes. Eles são separados por uma vírgula.
Alguma explicação é necessária sobre o que é contado como único. Desde que uma matriz não tenha exatamente os mesmos números nas mesmas posições que uma matriz encontrada anteriormente, ela será contada como única. Isso significa que as reflexões etc. das matrizes encontradas anteriormente são contadas como únicas.
Exemplo de entradas e saídas
Nestes exemplos, eu uso true
como meu valor de false
verdade e como meu valor de falsidade.
Entrada: VIIIIVI,IIIVVII,IVIXII
Saída: 24,true
(O triângulo mágico é 8-1-6, 3-5-7, 4-9-2.)
Entrada: IIIXVIII,IVIII,VIIII
Saída:210,false
Extras
- Você não tem permissão para usar funções de conversão incorporadas de números romanos se o idioma escolhido tiver um.