Einfacher staatlicher Umsatzsteuerrechner

10

Die Umsatzsteuern in den USA sind, gelinde gesagt, kompliziert. Im Allgemeinen gibt es eine staatliche Umsatzsteuer (es gibt eine Handvoll Staaten, die keine staatliche Umsatzsteuer erheben), aber es kann auch eine Kreisumsatzsteuer, eine Schulbezirksumsatzsteuer, eine kommunale (Stadt-) Umsatzsteuer oder eine Umsatzsteuer in der Metropolregion. In verschiedenen Teilen einer Stadt kann es sogar unterschiedliche Umsatzsteuern geben. Für diese Herausforderung konzentrieren wir uns jedoch nur auf die staatliche Umsatzsteuer.

Bei einem US-Dollar-Betrag größer als Null (auf zwei Dezimalstellen genau) und einem Status (entweder der vollständige Name oder die Abkürzung aus zwei Buchstaben, Ihre Wahl, der Fall spielt keine Rolle) und die Verwendung der folgenden Tabelle mit Umsatzsteuerprozentsätzen. Geben Sie die entsprechende staatliche Umsatzsteuer aus, die für diesen bestimmten Verkauf erhoben werden muss, genau und auf zwei Dezimalstellen gekürzt. Bitte geben Sie an, wie Ihr Code mit Rundungen umgeht.

Bearbeiten: Die Abkürzung für Washington wurde fälschlicherweise als WS anstelle von WA aufgeführt. Antworten können beide Abkürzungen verwenden, da dies mein Trottel war.

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%

Beispiel für Kalifornien bei 6% staatlicher Umsatzsteuer -

CA
1025.00

61.50

Beispiel für Minnesota bei 6,875% -

MN
123.45

8.49
AdmBorkBork
quelle
14
inb4 Mathematica eingebaut.
James
Minnesota MN 6.875%- weil 0,005% eigentlich viel sind.
Magic Octopus Urn
1
Ahhh ... richtig ... das ist keine Einkommenssteuer.
Magic Octopus Urn
2
@ Shaggy Nein, Fall spielt keine Rolle.
AdmBorkBork
2
Pedanterie: Die staatliche Abkürzung für Washington lautet WA, nicht WS.
Michael Seifert

Antworten:

15

Mathematica, 112 103 77 76 66 Bytes

Mathematica hat für alles ein eingebautes

NumberForm[Interpreter["USState"][#]@"StateSalesTaxRate"#2,{9,2}]&

Nimmt einen Statusnamen (ein beliebiges Format; Abkürzung oder vollständiger Name) und den Dollarbetrag.

Probieren Sie es auf Wolfram Sandbox

Verwendungszweck

f = NumberForm[Interpreter["USState"][#]@"StateSalesTaxRate"#2,{9,2}]&

 

f["CA", 1025.00]

61,50

f["miNnNesToA", 123.45]

8.49

Erläuterung

Interpreter["USState"][#]

Interpretieren Sie die Eingabe als US-Bundesstaatnamen und generieren Sie eine Entity.

... @"StateSalesTaxRate"

Holen Sie sich den Umsatzsteuersatz.

... #2

Multiplizieren Sie das mit dem zweiten Eingang.

NumberForm[..., {9,2}]

Formatieren Sie das Ergebnis in eine Zahl mit 9 Stellen links von der Dezimalstelle und 2 Stellen rechts.

JungHwan min
quelle
6
Mathematica. Natürlich ...
Ven
8
Das wird jetzt nur albern!
Shaggy
Warum müssen Sie eine API so lange wie die Zeichenfolge verwenden, um die 142. Eigenschaft zu erhalten?
Neil
11
Hier gibt es einen halbschweren pedantischen Punkt. Was passiert, wenn sich der Steuersatz eines bestimmten Staates ändert, wenn Mathematica seine realen Daten aus einem ständig aktualisierten Datenspeicher bezieht? Wird diese Antwort dann nicht in Bezug auf die in der Frage angegebene Spezifikation ungültig?
ymbirtt
4
@ymbirtt sollte für diese Metadiskussion in Ordnung sein .
JungHwan Min
5

R , 219 212 Bytes

function(S,m)sprintf("%.2f",c(4,0,5.6,6.5,6,2.9,6.35,0,6,4,4,6,6.25,7,6,6.5,6,5,5.5,6,6.25,6,6.875,7,4.23,0,5.5,4.6,0,6.88,5.13,4,4.75,5,5.75,4.5,0,6,7,6,4.5,7,6.25,4.7,6,4.3,6.5,6,5,4)[match(S,state.abb)]*m/100)

Nimmt den Zustand als Abkürzung (alle Großbuchstaben).

state.abb sind die eingebauten R-Daten mit den staatlichen Abkürzungen in alphabetischer Reihenfolge, so dass die Umsatzsteuern fest codiert, der Index des Staates ermittelt, die Umsatzsteuer berechnet und auf 2 Dezimalstellen formatiert werden (Ausgabe als Zeichenfolge).

Probieren Sie es online aus!

Giuseppe
quelle
5

05AB1E , 134 Bytes

.•2=Šλ₁ÙH ’€9¿FîβïLT_s€¤Ôтαxì8ÜuK8º'DιÒ—pcλ¯øÒÔ\’þü€ŒβÞéΣŽZê•#.å1kUX0‹i6*т/ëX•Ž½ì∞в’±₃C¸wiα·¥žYÉúžĆƵ˜šŸ‰Ê‡†Σgλ&/ûjDĆв₆•hR„AB„ .‡#è*т/}

Probieren Sie es online aus!


RIP Mathematica gewinnt.


Dies komprimiert lediglich die folgenden Zeichenfolgen:

AKDEMTNHOR CO ALGANYHIWY MO VA SDOK NV UT NC LANDWI NM MENE AZ OH ILMATX CT ARKSWS MN NJ INMSRITN

Und:

0 2.9 4 4.23 4.3 4.5 4.6 4.7 4.75 5 5.13 5.5 5.6 5.75 6.25 6.35 6.5 6.875 6.88 7

Verwendet dann den Index des Eingabestatus, um den Index der Rate zu bestimmen, standardmäßig 6, da es so viele Zustände mit 6% gibt.


Für andere zu konsumieren:

AKDEMTNHOR 0
CO         2.9
ALGANYHIWY 4
MO         4.23
VA         4.3
SDOK       4.5
NV         4.6
UT         4.7
NC         4.75
LANDWI     5
NM         5.13
MENE       5.5
AZ         5.6
OH         5.75
CAFLIDIAKYMDMIPASCVTWV 6
ILMATX     6.25
CT         6.35
ARKSWS     6.5
MN         6.875
NJ         6.88

Beachten Sie, dass dies nur funktioniert, weil ich die Zustände so angeordnet habe, dass kein Schnittpunkt von 2 Zuständen einen anderen Zustand EG erzeugt ( OHINenthält, [OH,IN,HI]während INOHnur enthält [IN,OH])


Die meisten Ideen dafür stammen aus meinem vorherigen staatlichen Eintrag .

Magische Krakenurne
quelle
TIO Link hat -dFlagge
H.PWiz
@ H.PWiz Das dient zur Visualisierung des Stacks. Wenn Sie es entfernen, sehen Sie die reguläre Ausgabe des Programms.
Mr. Xcoder
@ H.PWiz dient nur zu Visualisierungszwecken, nimmt es Befehl für Befehl und zeigt an, warum das Programm funktioniert.
Magic Octopus Urn
Ah, ich dachte, es wurde versehentlich zurückgelassen.
H.PWiz
3

Pyth, 270 258 233 219 Bytes

*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

Parameter müssen wie folgt übergeben werden:

1025
CA

Erläuterung:

*c@[...)xc."..."2w100
          ."..."       Decompress the string
         c      2      Cut the string in chunks of size 2 (states abbreviations)
        x        w     Get the index of the second parameter in that string
  @[    )              Index into the tax array
 c                100  Generate a percentage
*                      Multiply that with the implicit input at the end
Alas, `.Z` makes this longer. Maybe there's a way to write the array more efficiently, by repeating the keys, but I havn't found one yet.

Vielen Dank an @ Mr.Xcoder.

Ven
quelle
233 Bytes
Mr. Xcoder
Ich dachte nur .Zverfügbar. Danke nochmal ;-).
Ven
3

Java (OpenJDK 8) , 594 + 19 592 580 575 412 Bytes

s->a->{float[]r={0};java.util.Arrays.asList("AL4`AK0`AZ5.6`AR6.5`CA6`CO2.9`CT6.35`DE0`FL6`GA4`HI4`ID6`IL6.25`IN7`IA6`KS6.5`KY6`LA5`ME5.5`MD6`MA6.25`MI6`MN6.875`MS7`MO4.23`MT0`NE5.5`NV4.6`NH0`NJ6.88`NM5.13`NY4`NC4.75`ND5`OH5.75`OK4.5`OR0`PA6`RI7`SC6`SD4.5`TN7`TX6.25`UT4.7`VT6`VA4.3`WS6.5`WV6`WI5`WY4".split("`")).forEach(e->{if(e.contains(s))r[0]=a/100*new Float(e.substring(2));});return s.format("%.2f",r[0]);}

Probieren Sie es online aus!

Roberto Graham
quelle
1
Sie können 9 Bytes sparen, indem Sie die import-Anweisung direkt Arraysals adressieren java.util.Arraysund entfernen. Ich würde einen TIO-Link einfügen, aber er ist zu lang. : P
totalhuman
Sie können ein paar weitere Bytes sparen, indem Sie sie entfernen final. wechseln doublezu float; wechseln Double.parseDoublezu new Float; und wechseln (s,a)->zu s->a->mit Curry. Hier ist der TIO-Link um zu sehen wie.
Kevin Cruijssen
1
Oh, und Sie können auch alle Kommas und hinteren Nullen und entfernen Änderung substring(3)zu substring(2): TIO 415 Bytes . Das ist kürzer als meine Java-Antwort ..;)
Kevin Cruijssen
3

Java 8, 486 467 309 299 290 289 Bytes

s->a->{float r=6;for(String x:"AKDENHORMT0 CO2.9 ALGANYHIWY4 MO4.23 VA4.3 SDOK4.5 NV4.6 UT4.7 NC4.75 LANDWI5 NM5.13 MENE5.5 AZ5.6 OH5.75 ILMATX6.25 CT6.35 ARKSWS6.5 MN6.875 NJ6.88 MSRINTN7".split(" "))if(x.contains(s))r=new Float(x.replaceAll("[A-Z]",""));return s.format("%.2f",a*r/100);}

-19 Bytes dank @MagicOctopusUrn durch Entfernen der Semikolons.

Erläuterung:

Probieren Sie es hier aus.

s->a->                    // Method with String and float parameters and String return-type
  float r=6;              //  Float starting at 6 (most states had 6.00 as tax)
  for(String x:"...".split(" "))
                          //  Loop over all states + amounts
    if(x.contains(s))     //   If the input-state is found in String `x`:
      r=new Float(x.replaceAll("[A-Z]",""));
                          //    Set float `r` to the amount of this state
                          //  End of loop (implicit / single-line body)
  return s.format("%.2f", //  Return result rounded to 2 decimal points:
     a*r/100);            //   Float input multiplied by `r` divided by 100
}                         // End of method
Kevin Cruijssen
quelle
1
Wenn Sie die Reihenfolge aus meiner Antwort verwenden, können Sie alle Semikolons in Ihren Zeichenfolgen entfernen.
Magic Octopus Urn
HI;NYund MT;NHsind derzeit die einzigen Dinge in Ihrem Code, die Sie daran hindern, alle Semikolons zu entfernen. Kehren Sie die Reihenfolge von beiden um und es würde für etwa 20 gespeicherte Bytes funktionieren.
Magic Octopus Urn
1
@MagicOctopusUrn Danke, bearbeitet! Übrigens möchten Sie möglicherweise auch die Status für 7Ihre Antwort hinzufügen (obwohl TNdies die aktuelle Reihenfolge von beeinträchtigt 0).
Kevin Cruijssen
@MagicOctopusUrn INMSRITN 7.00& AKDENHORMT 0.00ist möglich, ohne mit irgendetwas anderem in Konflikt zu geraten.
Kevin Cruijssen
2

Perl 6, 341 Bytes

my%a=((<ME NE>X=>5.5),CO=>2.9,MO=>4.23,MN=>6.875,NJ=>6.88,(<LA ND WI>X=>5),(<AK DE MT NH OR>X=>0),(<IN MS RI TN>X=>7),(<AR KS WS>X=>6.5),AZ=>5.6,(<AL GA HI NY WY>X=>4),VA=>4.3,UT=>4.7,(<IL MA TX>X=>6.25),(<CA FL ID IA KY MD MI PA SC VT WV>X=>6),(<OK SD>X=>4.5),NV=>4.6,NM=>5.13,CT=>6.35,OH=>5.75,NC=>4.75).flat;{round $^a*(%a{$^b}/100),0.01}

Also, was? Das ist ziemlich erfunden, denke ich. Dies verwendet die Metaoperatoren von Perl 6, wie X=>hier, die X(produktübergreifend) mit kombiniert werden =>.

Das bedeutet <ME NE> X=> 5.5(wo <ME NE>bedeutet ('ME', 'NE')) => 5.5, dass auf jedes Element des Arrays angewendet wird, was ergibt ME => 5.5, NE => 5.5. Die Klammern haben nur Vorrang ...


Als Golfer (ähm ...) habe ich das offensichtlich nicht von Hand geschrieben (außer der eigentlichen Funktion). Also habe ich einen Metagolfer geschrieben, um die effizienteste Kombination zu generieren!

my %values;
my %simple;
for lines() {
  my $abb = m/<[A .. Z]> ** 2/.Str;
  my $val = m/\d\.\d+/.Str;
  %values{$val}.push: $abb;
  %simple{$abb} = $val;
}

say "(", (join ',', do for %values.kv -> $key, @vals {
  my $int-key = +$key;
  if @vals > 1 {
    "(<{@vals}>X=>$int-key)"
  } else {
    "{@vals}=>$int-key"
  }
}), ").flat";

say();

say join ',', do for %simple.kv -> $key, $val {
  "$key=>" ~ +$val
}

Es werden sowohl die X=>Fälle als auch der einfachere Fall generiert (wobei jeder aufgezählt wird), und ich habe den kürzesten ausgewählt (den ersteren).

Ven
quelle
2

JavaScript (ES6), 227 224 Byte

Nimmt Eingaben in die Curry-Syntax vor, (s)(v)wobei s der Status und v der Betrag ist. Verwendet Bodenrundung.

s=>v=>(v*(p=s=>parseInt(s,36))('3344bk50k4mo28k4we4tm5eg3uw48s5az39i3js5b43yi3ny4fq3h03mk3bg'.substr(p('k039017k00038f00030022h00g000j00k600k080k707h30706800ba0030305ic0303303930460000e00d2'[p(s)*84%943%85])*3,3))/1e3|0)/100

Demo

Arnauld
quelle
1

Kotlin , 444 Bytes

val S="0|AK|DE|MT|NH|OR#2.9|CO#4|AL|GA|HI|NY|WY#4.23|MO#4.3|VA#4.5|OK|SD#4.6|NV#4.7|UT#4.75|NC#5|LA|ND|WI#5.13|NM#5.5|ME|NE#5.6|AZ#5.75|OH#6|CA|FL|ID|IA|KY|MD|MI|PA|SC|VT|WV#6.25|IL|MA|TX#6.35|CT#6.5|AR|KS|WS#6.875|MN#6.88|NJ#7|IN|MS|RI|TN"
fun c(t:String,d:Double){
val m=mutableMapOf<String,Double>()
S.split("#").map{val s=it.split("|")
for (item in s.subList(1, s.size))m.put(item, s[0].toDouble())}
System.out.printf("%.2f", m[t]!!*d*.01)}

Probieren Sie es online aus!

Verschönert

// Tax rate followed by states with that rate separated by pipes, with hashes in between
val STATES="0|AK|DE|MT|NH|OR#2.9|CO#4|AL|GA|HI|NY|WY#4.23|MO#4.3|VA#4.5|OK|SD#4.6|NV#4.7|UT#4.75|NC#5|LA|ND|WI#5.13|NM#5.5|ME|NE#5.6|AZ#5.75|OH#6|CA|FL|ID|IA|KY|MD|MI|PA|SC|VT|WV#6.25|IL|MA|TX#6.35|CT#6.5|AR|KS|WS#6.875|MN#6.88|NJ#7|IN|MS|RI|TN"

fun function(targetState: String, amount: Double) {
    // Stores data
    val m = mutableMapOf<String, Double>()
    // For each rate
    STATES.split("#").map {
        // Split the data out
        val rateData = it.split("|")
        // For each state with that rate
        for (stateCode in rateData.subList(1, rateData.size)) {
            // Put it in the dataset
            m.put(stateCode, rateData[0].toDouble())
        }
    }

    // Print out the tax rate
    System.out.printf("%.2f", m[targetState]!! * amount * .01)
}
jrtapsell
quelle
1

Python 3 , 303 Bytes

import re
t=re.split("(\d+)","AL4AK0AZ56AR65CA6CO29CT635DE0FL6GA4HI4ID6IL625IN7IA6KS65KY6LA5ME55MD6MA625MI6MN6875MS7MO423MT0NE55NV46NH0NJ688NM513NY4NC475ND5OH575OK45OR0PA6RI7SC6SD45TN7TX625UT47VT6VA43WS65WV6WI5WY4")
f=lambda s,a:"%.2f"%({t[i-1]:float(t[i])/10**-~len(t[i])for i in range(1,len(t),2)}[s]*a)

Probieren Sie es online aus!

Ganz einfach: Die Daten werden als zwei Zeichen + Ziffernliste gespeichert: Jeder Prozentsatz ist kleiner als 10, daher kann sie als ganzzahliger Teil (1 Ziffer) + Dezimalteil (0 -... Ziffer (n)) gespeichert werden.

jferard
quelle
1

C # , 318 309 Bytes


Daten

  • Eingabe String s Die 2-Buchstaben-Abkürzung des Status in Großbuchstaben.
  • Eingabe Double v Der Wert
  • Ausgabe String Der zu erhebende Steuerwert wird auf 2 Dezimalstellen gerundet

Golf gespielt

(s,v)=>{for(int i=0;i<21;i++)if("NHAKDEMTOR,CO,ALHIGANYWY,MO,VA,SDOK,NV,UT,NC,NDLAWI,NM,MENE,AZ,OH,KYCAFLIDIAMDMIPASCVTWV,ILMATX,CT,ARKSWA,MN,NJ,MSINRITN".Split(',')[i].Contains(s))return $"{v*(new[]{0,2.9,4,4.23,4.3,4.5,4.6,4.7,4.75,5,5.13,5.5,5.6,5.75,6,6.25,6.35,6.5,6.875,6.88,7}[i]/100):F2}";return "";};

Ungolfed

( s, v ) => {
    for( int i = 0; i < 21; i++ )
        if( "NHAKDEMTOR,CO,ALHIGANYWY,MO,VA,SDOK,NV,UT,NC,NDLAWI,NM,MENE,AZ,OH,KYCAFLIDIAMDMIPASCVTWV,ILMATX,CT,ARKSWA,MN,NJ,MSINRITN".Split( ',' )[ i ].Contains( s ) )
            return $"{v * ( new[] { 0, 2.9, 4, 4.23, 4.3, 4.5, 4.6, 4.7, 4.75, 5, 5.13, 5.5, 5.6, 5.75, 6, 6.25, 6.35, 6.5, 6.875, 6.88, 7 }[ i ] / 100 ):F2}";
    return "";
};

Ungolfed lesbar

// Takes a 2 letter abbreviation state ( 's' ) and a value ( 'v' )
( s, v ) => {

    // Cycles through an array with the states grouped by tax value
    for( int i = 0; i < 21; i++ )

        // Checks if the state group at the current index contains the state 's'
        if( "NHAKDEMTOR,CO,ALHIGANYWY,MO,VA,SDOK,NV,UT,NC,NDLAWI,NM,MENE,AZ,OH,KYCAFLIDIAMDMIPASCVTWV,ILMATX,CT,ARKSWA,MN,NJ,MSINRITN".Split( ',' )[ i ].Contains( s ) )

            // Returns the value 'v' * the corresponding state percentage divided by 100
            return $"{v * ( new[] { 0, 2.9, 4, 4.23, 4.3, 4.5, 4.6, 4.7, 4.75, 5, 5.13, 5.5, 5.6, 5.75, 6, 6.25, 6.35, 6.5, 6.875, 6.88, 7 }[ i ] / 100 ):F2}";

    // If the state isn't found, return an empty string
    return "";
};

Vollständiger Code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TestBench {
    public static class Program {
        private static Func<String, Double, String> f = ( s, v ) => {
            for( int i = 0; i < 21; i++ )
                if( "NHAKDEMTOR,CO,ALHIGANYWY,MO,VA,SDOK,NV,UT,NC,NDLAWI,NM,MENE,AZ,OH,KYCAFLIDIAMDMIPASCVTWV,ILMATX,CT,ARKSWA,MN,NJ,MSINRITN".Split( ',' )[ i ].Contains( s ) )
                    return $"{v * ( new[] { 0, 2.9, 4, 4.23, 4.3, 4.5, 4.6, 4.7, 4.75, 5, 5.13, 5.5, 5.6, 5.75, 6, 6.25, 6.35, 6.5, 6.875, 6.88, 7 }[ i ] / 100 ):F2}";
            return "";
        };

        static void Main( string[] args ) {
            List<KeyValuePair<String, Double>>
                testCases = new List<KeyValuePair<String, Double>>() {
                    new KeyValuePair<String, Double>( "CA", 1025.0d ),
                    new KeyValuePair<String, Double>( "MN", 123.45d ),
                };

            foreach( KeyValuePair<String, Double> testCase in testCases ) {
                Console.WriteLine( $" STATE: {testCase.Key}\n VALUE: {testCase.Value}\nOUTPUT: {f( testCase.Key, testCase.Value )}\n" );
            }

            Console.ReadLine();
        }
    }
}

Veröffentlichungen

  • v1.0 - 318 bytes- Erste Lösung.
  • v1.1 - - 9 bytes- Die .ToString("F2")in der ersten Rückkehr verwendeten wurden in interpolierte Zeichenfolgen geändert .

Anmerkungen

  • Keiner
Auhmaan
quelle
0

AWK , 277 Bytes

{split("LANDWI 5 VA 4.3 IACAFLIDKYMDMIPASCVTWV 6 SDOK 4.5 MO 4.23 CO 2.9 NM 5.13 NV 4.6 UT 4.7 NJ 6.88 MENE 5.5 AZ 5.6 ARKSWA 6.5 MN 6.875 MSINRITN 7 ILMATX 6.25 NC 4.75 CT 6.35 ALGANYWYHI 4 OH 5.75 AKDEMTORNH 0",T)
for(i in T)if(T[i]~s=".*"$1".*")printf"%.2f\n",$2*T[i+1]*.01}

Probieren Sie es online aus!

Eine respektable Punktzahl, aber bei weitem nicht in der Nähe von Mathematica. Ich habe 2 Bytes hinzugefügt, indem ich nach jeder Überprüfung einen Zeilenumbruch gedruckt habe, aber ich denke, dass es auf diese Weise schöner ist :)

(Hoffentlich ist es offensichtlich, dass die Eingabe die Statusabkürzung und ein Wert in einer Zeile sein sollte.)

Robert Benson
quelle