PROG0500 - Words and numbers
The word value of an integer is computed as the sum of the positions in the alphabet of all letters in the English name of the number. Herewith, the letter A is the first letter of the alphabet, the letter B is the second letter of the alphabet, and so on.
As an example, consider the integer 4. The English name of this integer is written as FOUR. The word value of the integer can thus be computed in the following way $$ 4 \longrightarrow \text{FOUR} \longrightarrow 6(\text{F}) + 15(\text{O}) + 21(\text{U}) + 18(\text{R}) \longrightarrow 60 $$ The smallest number that is diminished by this procedure is 80 $$ 80 \longrightarrow \text{EIGHTY} \longrightarrow 5(\text{E}) + 9(\text{I}) + 7(\text{G}) + 8(\text{H}) + 20(\text{T}) + 25(\text{Y}) \longrightarrow 74 $$ Curiously, it's also the smallest such number in Spanish, if we take into account that Spanish uses 27 letters with ñ in the 15th position $$ 80 \longrightarrow \text{OCHENTA} \longrightarrow 16(\text{O}) + 3(\text{C}) + 8(\text{H}) + 5(\text{E}) + 14(\text{N}) + 21(\text{T}) + 1(\text{A}) \longrightarrow 68 $$
The figure below shows that the integer 500 is yet another example of an integer whose word value is smaller than the value of the integer itself.
Input
The input contains a list of integers. The first line contains an integer $n \in \mathbb{N}$ that indicates how many integers are in the list. This is followed by another $n$ lines that each contain an integer (represented as a series of digits), followed by a comma, a space and the English name of the integer. Note that apart from letters, the name may contain other characters. Only the letters in the name must be taken into account while determining the word value. Letters must be treated case insensitive.
Output
There is only a single line of output containing a list of all integers from the given list whose word value is smaller than the integer value itself. Each integer that fulfills this condition must be included in the list, followed by the word value of the integer enclosed in square brackets. All integers having a smaller word value must be listed in their original order as they appear in the input, separated from each other by a comma and a space. The output must be an empty line if all integers in the given list have a word value that is greater than or equal to the integer value itself.
Example
Input:
4 4, four 80, eiGhTY 14, fourteen 100, one hundred
Output:
80[74]
Example
Input:
6 500, five hundred 10, ten 130, one hundred, thirty 1003, ONE THOUSAND, THREE 551, five hundred, fifty-one 0, zero
Output:
500[116], 1003[192], 551[216]
Example
Input:
7 10, ten 20, twenty 30, thirty 40, forty 50, fifty 60, sixty 70, seventy
Output:
De woordwaarde van een getal wordt berekend als de som van de posities in het alfabet van alle letters in de Engelse naam van het getal. Hierbij staat de letter A op de eerste plaats in het alfabet, de letter B op de tweede plaats, enzoverder.
Neem als voorbeeld het getal 4. De Engelse naam van dit getal is FOUR. De woordwaarde van het getal kan dus op de volgende manier berekend worden $$ 4 \longrightarrow \text{FOUR} \longrightarrow 6(\text{F}) + 15(\text{O}) + 21(\text{U}) + 18(\text{R}) \longrightarrow 60 $$ Het kleinste getal waarvan de woordwaarde kleiner is dan de waarde van het getal zelf is 80 $$ 80 \longrightarrow \text{EIGHTY} \longrightarrow 5(\text{E}) + 9(\text{I}) + 7(\text{G}) + 8(\text{H}) + 20(\text{T}) + 25(\text{Y}) \longrightarrow 74 $$ Vreemd genoeg is dat ook het kleinste getal als we de Spaanse naam van de getallen beschouwen, en er rekening mee houden dat het Spaanse alfabet bestaat uit 27 letters waarbij de letter ñ op positie 15 staat $$ 80 \longrightarrow \text{OCHENTA} \longrightarrow 16(\text{O}) + 3(\text{C}) + 8(\text{H}) + 5(\text{E}) + 14(\text{N}) + 21(\text{T}) + 1(\text{A}) \longrightarrow 68 $$
Onderstaande figuur illustreert dat ook het getal 500 een kleinere woordwaarde heeft dan de waarde van het getal zelf.
Invoer
De invoer bestaat uit een lijst van natuurlijke getallen. De eerste regel van de invoer bevat een getal $n \in \mathbb{N}$ dat aangeeft hoeveel getallen er in de lijst voorkomen. Daarna volgen $n$ regels die elk een natuurlijk getal bevatten (voorgesteld als een reeks cijfers), gevolgd door een komma, een spatie en de Engelse naam van het getal. Merk op dat de Engelse naam naast letters ook nog andere karakters kan bevatten. Bij het bepalen van de woordwaarde moeten echter alleen de letters in de naam in rekening gebracht worden, en mag er geen onderscheid gemaakt worden tussen hoofdletters en kleine letters.
Uitvoer
De uitvoer bestaat uit één enkele regel die een lijst bevat van alle natuurlijke getallen uit de gegeven lijst waarvan de woordwaarde kleiner is dan de waarde van het getal zelf. Elk getal dat aan die voorwaarde voldoet, moet in de lijst opgenomen worden, gevolgd door de woordwaarde van het getal tussen vierkante haakjes. Alle getallen met hun kleinere woordwaarde moeten opgelijst worden in de oorspronkelijke volgorde zoals ze voorkomen in de invoer, van elkaar gescheiden door een komma en een spatie. De uitvoer bestaat dus uit een lege regel indien de gegeven lijst enkel getallen bevat met een woordwaarde die groter of gelijk is aan de waarde van het getal zelf.
Voorbeeld
Invoer:
4 4, four 80, eiGhTY 14, fourteen 100, one hundred
Uitvoer:
80[74]
Voorbeeld
Invoer:
6 500, five hundred 10, ten 130, one hundred, thirty 1003, ONE THOUSAND, THREE 551, five hundred, fifty-one 0, zero
Uitvoer:
500[116], 1003[192], 551[216]
Voorbeeld
Invoer:
7 10, ten 20, twenty 30, thirty 40, forty 50, fifty 60, sixty 70, seventy
Uitvoer:
Added by: | Peter Dawyndt |
Date: | 2014-08-29 |
Time limit: | 10s |
Source limit: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Languages: | PY_NBC |
Resource: | None |