Os impostos sobre vendas nos Estados Unidos são complicados, para dizer o mínimo. Geralmente, há um imposto estadual sobre vendas (existem vários estados que não cobram um imposto estadual), mas também pode haver um imposto municipal sobre vendas, um imposto municipal sobre vendas, um imposto sobre vendas escolares, um imposto municipal sobre vendas ou um imposto municipal sobre vendas. imposto sobre vendas na região metropolitana. Pode até haver diferentes impostos sobre vendas em diferentes partes da cidade. Para os propósitos deste desafio, no entanto, focaremos apenas o imposto estadual sobre vendas.
Dado um valor em dólares americanos maior que zero (com precisão de duas casas decimais) e um estado (o nome completo ou a abreviação de duas letras, sua escolha, maiúsculas e minúsculas não importa) e usando o gráfico abaixo das porcentagens de impostos sobre vendas, gerar o imposto estadual sobre vendas correspondente a ser cobrado para essa venda específica, preciso e truncado com duas casas decimais. Especifique como o seu código lida com o arredondamento.
Edit: A abreviação de Washington foi listada incorretamente como WS em vez de WA. As respostas podem usar qualquer uma das abreviações, já que esse foi meu ponto de vista.
State Abbr %
Alabama AL 4.00%
Alaska AK 0.00%
Arizona AZ 5.60%
Arkansas AR 6.50%
California CA 6.00%
Colorado CO 2.90%
Connecticut CT 6.35%
Delaware DE 0.00%
Florida FL 6.00%
Georgia GA 4.00%
Hawaii HI 4.00%
Idaho ID 6.00%
Illinois IL 6.25%
Indiana IN 7.00%
Iowa IA 6.00%
Kansas KS 6.50%
Kentucky KY 6.00%
Louisiana LA 5.00%
Maine ME 5.50%
Maryland MD 6.00%
Massachusetts MA 6.25%
Michigan MI 6.00%
Minnesota MN 6.875%
Mississippi MS 7.00%
Missouri MO 4.23%
Montana MT 0.00%
Nebraska NE 5.50%
Nevada NV 4.60%
New Hampshire NH 0.00%
New Jersey NJ 6.88%
New Mexico NM 5.13%
New York NY 4.00%
North Carolina NC 4.75%
North Dakota ND 5.00%
Ohio OH 5.75%
Oklahoma OK 4.50%
Oregon OR 0.00%
Pennsylvania PA 6.00%
Rhode Island RI 7.00%
South Carolina SC 6.00%
South Dakota SD 4.50%
Tennessee TN 7.00%
Texas TX 6.25%
Utah UT 4.70%
Vermont VT 6.00%
Virginia VA 4.30%
Washington WA 6.50%
West Virginia WV 6.00%
Wisconsin WI 5.00%
Wyoming WY 4.00%
Exemplo para a Califórnia com 6% de imposto estadual sobre vendas -
CA
1025.00
61.50
Exemplo para Minnesota a 6,875% -
MN
123.45
8.49
fonte
Minnesota MN 6.875%
- porque 0,005% é, na verdade, muito.Respostas:
Mathematica,
112103777666 bytesO Mathematica tem um builtin para tudo
Leva um nome de estado (qualquer formato; abreviação ou nome completo) e o valor em dólar.
Experimente na Wolfram Sandbox
Uso
Explicação
Interprete a entrada como um nome de Estado dos EUA e gere um
Entity
.Obtenha a taxa de imposto sobre vendas.
Multiplique isso pela segunda entrada.
Formate o resultado em um número com 9 dígitos à esquerda do decimal e 2 dígitos à direita.
fonte
R ,
219212 bytesAssume o estado como uma abreviação (todas em maiúsculas).
state.abb
são os dados R incorporados com as abreviações do estado em ordem alfabética; portanto, codifica os impostos sobre vendas, localiza o índice do estado, calcula o imposto sobre vendas e formata para duas casas decimais (saída como uma sequência).Experimente online!
fonte
05AB1E , 134 bytes
Experimente online!
O RIP Mathematica vence.
Tudo isso faz é comprimir as seguintes seqüências de caracteres:
E:
Em seguida, usa o índice do estado de entrada para determinar o índice da taxa, padronizando para 6, porque existem muitos estados com 6%.
Para outros consumirem:
Observe que isso só funciona porque eu ordenei os estados de forma que nenhuma interseção de 2 estados crie um estado diferente EG (
OHIN
contém[OH,IN,HI]
enquantoINOH
apenas contém[IN,OH]
)A maioria das idéias para isso veio da minha entrada anterior baseada em estado .
fonte
-d
bandeiraPitão,
270258233219 bytesDevem ser passados parâmetros da seguinte forma:
Explicação:
Graças a @ Mr.Xcoder.
fonte
*c@[6Z5.75K6.25 5.5 5 4Z7 6.5J6 7J6.875 7 4J6.35Z6 7 5 4.75 4 4.23J5J5.13 4.6JJ4J4 4.3 4.5Z5.6J.5 4.7K4.5KZ6.5 6.88 5.5J2.9)xc."AZ-íâFT34r7²¨cK'ÉT?Ú5Ï)}4Që7ËÅÖpuªXTiÖ¶7×ìÉͨ."2w100
. Ele usa cordas embaladas (aqueles que começam com."
).Z
estava disponível. Mais uma vez obrigado ;-).Java (OpenJDK 8) ,
594 + 19592580575412 bytesExperimente online!
fonte
Arrays
comojava.util.Arrays
e se livrando da instrução de importação. Eu incluiria um link TIO, mas é muito longo. : Pfinal
; mudandodouble
parafloat
; mudandoDouble.parseDouble
paranew Float
; e mudar(s,a)->
paras->a->
usando currying. Aqui está o link do TIO para ver como.substring(3)
parasubstring(2)
: TIO 415 bytes . Isso é mais curto do que a minha resposta Java ..;)Java 8,
486467309299290289 bytes-19 bytes graças a @MagicOctopusUrn removendo o ponto e vírgula.
Explicação:
Experimente aqui.
fonte
HI;NY
eMT;NH
atualmente são as únicas coisas em seu código que o impedem de remover todos os pontos e vírgulas. Inverta a ordem de ambos e funcionaria por 20 bytes salvos.7
a sua resposta (emboraTN
isso interfira na ordem atual de0
).INMSRITN 7.00
&AKDENHORMT 0.00
é possível sem entrar em conflito com mais nada.Perl 6, 341 bytes
Então, hein. Isso é bastante artificial, eu acho. Isso usa meta-operadores do Perl 6, como
X=>
aqui, que éX
(produto cruzado) combinado com=>
.Isso significa
<ME NE> X=> 5.5
(em que<ME NE>
meios('ME', 'NE')
) é=> 5.5
aplicado em cada elemento da matriz, produzindoME => 5.5, NE => 5.5
. Os parênteses estão aqui apenas para precedência ...Como jogador de golfe (erm ...), obviamente não o escrevi à mão (exceto a função real). Então eu escrevi um meta-jogador para gerar a combinação mais eficiente!
Ele gera os
X=>
casos e o caso mais simples (com cada um sendo enumerado), e eu escolhi o mais curto (o primeiro).fonte
JavaScript (ES6),
227224 bytesRecebe entrada na sintaxe de curry,
(s)(v)
onde s é o estado ev é a quantidade. Usa arredondamento de piso.Demo
Mostrar snippet de código
fonte
Kotlin , 444 bytes
Experimente online!
Embelezado
fonte
Python 3 , 303 bytes
Experimente online!
Muito simples: os dados são armazenados como dois caracteres + lista de dígitos: cada porcentagem é inferior a 10, portanto, pode ser armazenada como parte inteira (1 dígito) + parte decimal (0 -... dígito (s)).
fonte
C # ,
318309 bytesDados
String
s
A abreviação de 2 letras do estado em maiúsculas.Double
v
O valorString
O valor do imposto a ser cobrado arredondado para 2 casas decimaisGolfe
Ungolfed
Ungolfed legible
Código completo
Lançamentos
318 bytes
- Solução inicial.- 9 bytes
- Alterado o.ToString("F2")
usado no primeiro retorno para seqüências de caracteres interpoladas.Notas
fonte
AWK , 277 bytes
Experimente online!
Uma pontuação respeitável, mas longe de Mathematica. Eu adicionei 2 bytes tendo uma nova linha impressa após cada verificação, mas acho que é mais bonito assim :)
(Espero que seja óbvio que a entrada deve ser a abreviação de estado e um valor em uma linha.)
fonte