เครื่องคิดเลขภาษีขายง่ายของรัฐ


10

ภาษีการขายในสหรัฐอเมริกานั้นซับซ้อน โดยทั่วไปจะมีภาษีการขายของรัฐ (มีรัฐจำนวนหนึ่งที่ไม่ได้เก็บภาษีการขายของรัฐ) แต่อาจมีภาษีการขายเคาน์ตีภาษีการขายเขตโรงเรียนภาษีการขายเทศบาล (เมือง) หรือ ภาษีการขายในเขตเมืองใหญ่ อาจมีภาษีการขายที่แตกต่างกันในส่วนต่าง ๆ ของเมือง อย่างไรก็ตามสำหรับความท้าทายนี้เราจะมุ่งเน้นเฉพาะภาษีการขายของรัฐ

ด้วยจำนวนเงินดอลลาร์สหรัฐที่มากกว่าศูนย์ (ถูกต้องกับทศนิยมสองตำแหน่ง) และรัฐ (ชื่อเต็มหรือตัวย่อสองตัวอักษรตัวเลือกของคุณตัวพิมพ์เล็กและตัวพิมพ์ใหญ่) และใช้แผนภูมิเปอร์เซ็นต์ภาษีการขายด้านล่าง เอาท์พุทภาษีการขายของรัฐที่สอดคล้องกันจะต้องมีการเก็บรวบรวมสำหรับการขายโดยเฉพาะที่ถูกต้องและถูกตัดทอนทศนิยมสองตำแหน่ง โปรดระบุวิธีที่รหัสของคุณจัดการการปัดเศษ

แก้ไข: ตัวย่อสำหรับวอชิงตันถูกระบุว่าไม่ถูกต้องเป็น WS แทนที่จะเป็น WA คำตอบอาจใช้ตัวย่ออย่างใดอย่างหนึ่งเนื่องจากเป็นคนโง่ของฉัน

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%

ตัวอย่างสำหรับแคลิฟอร์เนียที่ 6% ภาษีการขายของรัฐ -

CA
1025.00

61.50

ตัวอย่างสำหรับมินนิโซตาที่ 6.875% -

MN
123.45

8.49

14
inb4 Mathematica builtin
James

Minnesota MN 6.875%- เพราะ. 005% เป็นจริงมาก
Magic Octopus Urn

1
อ่าา ... ใช่แล้ว ... นี่ไม่ใช่ภาษีเงินได้
Magic Octopus Urn

2
@Shaggy ไม่กรณีไม่สำคัญ
AdmBorkBork

2
Pedantry: ตัวย่อของรัฐสำหรับวอชิงตันคือ WA ไม่ใช่ WS
Michael Seifert

คำตอบ:


15

Mathematica, 112 103 77 76 66 ไบต์

Mathematica มี builtin สำหรับทุกสิ่ง

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

ใช้ชื่อรัฐ (รูปแบบใด ๆ ตัวย่อหรือชื่อเต็ม) และจำนวนเงินดอลลาร์

ลองใช้กับ Wolfram Sandbox

การใช้

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

 

f["CA", 1025.00]

61.50

f["miNnNesToA", 123.45]

8.49

คำอธิบาย

Interpreter["USState"][#]

Entityตีความการป้อนข้อมูลที่เป็นชื่อรัฐของสหรัฐและสร้าง

... @"StateSalesTaxRate"

รับอัตราภาษีการขาย

... #2

คูณด้วยอินพุทที่สอง

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

จัดรูปแบบผลลัพธ์เป็นตัวเลขโดยมี 9 หลักทางด้านซ้ายของทศนิยมและ 2 หลักทางด้านขวา


6
มาติกา แน่นอน ...
Ven

8
นี่มันโง่ไปแล้ว!
ขนปุย

ทำไมคุณต้องใช้ API ตราบเท่าที่สตริงเพื่อรับคุณสมบัติที่ 142
Neil

11
ที่นี่มีจุดพูดคุยกึ่งจริงจัง ระบุว่า Mathematica ใช้แหล่งข้อมูลคำพูดจริงจากดาต้าสโตร์ที่อัปเดตอยู่ตลอดเวลาจะเกิดอะไรขึ้นเมื่ออัตราภาษีของรัฐเฉพาะเปลี่ยนไป คำตอบนี้ไม่ถูกต้องตามข้อกำหนดที่ให้ไว้ในคำถามหรือไม่?
ymbirtt

4
@ymbirtt ควรใช้ได้สำหรับการสนทนาเมตานี้
JungHwan Min

5

R , 219 212 ไบต์

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)

ใช้สถานะเป็นตัวย่อ (ตัวพิมพ์ใหญ่ทั้งหมด)

state.abb คือข้อมูล builtin R ที่มีตัวย่อของรัฐตามลำดับตัวอักษรดังนั้นจึงฮาร์ดโค้ดภาษีการขายค้นหาดัชนีของรัฐคำนวณภาษีการขายและรูปแบบเป็นทศนิยม 2 ตำแหน่ง (เอาต์พุตเป็นสตริง)

ลองออนไลน์!


5

05AB1E , 134 ไบต์

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

ลองออนไลน์!


RIP Mathematica เป็นผู้ชนะ


ทั้งหมดนี้จะบีบอัดสตริงต่อไปนี้:

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

และ:

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

จากนั้นใช้ดัชนีของสถานะอินพุตเพื่อกำหนดดัชนีของอัตราเริ่มต้นที่ 6 เนื่องจากมีสถานะจำนวนมากที่มี 6%


สำหรับคนอื่น ๆ ที่จะบริโภค:

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

โปรดทราบว่านี่ใช้งานได้เพียงเพราะฉันสั่งให้สหรัฐฯซึ่งไม่มีจุดตัดของ 2 สถานะสร้างสถานะที่แตกต่าง EG ( OHINมีแต่[OH,IN,HI]ในขณะที่INOHมีเท่านั้น[IN,OH])


ส่วนใหญ่ของความคิดสำหรับการนี้มาจากฉันเข้ารัฐตามที่ก่อนหน้านี้


ลิงก์ TIO มีการ-dตั้งค่าสถานะ
H.PWiz

@ H.PWiz นั่นคือการมองเห็นสแต็ค หากคุณลบมันคุณจะเห็นผลลัพธ์ปกติของโปรแกรม
Mr. Xcoder

@ H.PWiz มันมีวัตถุประสงค์เพื่อการสร้างภาพเท่านั้นใช้มันคำสั่งโดยคำสั่งและช่วยให้คุณเห็นว่าทำไมโปรแกรมทำงาน
Magic Octopus Urn

อาฉันคิดว่ามันถูกทิ้งไว้โดยไม่ได้ตั้งใจ
H.PWiz

3

Pyth, 270 258 233 219 ไบต์

*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

จะต้องผ่านพารามิเตอร์ดังนี้:

1025
CA

คำอธิบาย:

*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.

ขอบคุณ @ Mr.Xcoder



1
195 ตัวอักษร 219 *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ไบต์: มันใช้สตริงที่อัดแน่น (อันที่ขึ้นต้นด้วย.")
Mr. Xcoder

ผมคิดว่าเพียง.Zที่มีอยู่ ขอขอบคุณอีกครั้ง ;-).
Ven

3

Java (OpenJDK 8) , 594 + 19 592 580 575 412 ไบต์

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]);}

ลองออนไลน์!


1
คุณสามารถบันทึก 9 ไบต์ได้โดยการกำหนดที่อยู่Arraysเป็นjava.util.Arraysและกำจัดคำสั่งการนำเข้า ฉันจะรวมลิงค์ของ TIO แต่ยาวเกินไป : P
สิ้นเชิงมนุษย์

คุณสามารถบันทึกอีกไม่กี่ไบต์โดยการลบfinal; เปลี่ยนdoubleเป็นfloat; เปลี่ยนDouble.parseDoubleเป็นnew Float; และเปลี่ยน(s,a)->เป็นs->a->โดยใช้การแกง นี่คือลิงค์ TIO เพื่อดูว่า
Kevin Cruijssen

1
โอ้และคุณยังสามารถลบเครื่องหมายจุลภาคและเลขท้ายและการเปลี่ยนแปลงsubstring(3)ไปsubstring(2): TIO 415 ไบต์ นั่นสั้นกว่าคำตอบ Java ของฉัน .. ;)
Kevin Cruijssen

3

Java 8, 486 467 309 299 290 289 ไบต์

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 ไบต์ขอบคุณ@MagicOctopusUrnโดยการลบเครื่องหมายอัฒภาค

คำอธิบาย:

ลองที่นี่

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

1
หากคุณใช้การเรียงลำดับจากคำตอบของฉันคุณสามารถลบเครื่องหมายอัฒภาคทั้งหมดในสตริงของคุณ
Magic Octopus Urn

HI;NYและ MT;NHในปัจจุบันมีเพียงสิ่งเดียวเท่านั้นในรหัสของคุณที่ห้ามไม่ให้คุณลบเซมิโคลอนทั้งหมดออก กลับคำสั่งของทั้งคู่และมันจะทำงานเพื่อบันทึกเช่น 20 ไบต์
Magic Octopus Urn

1
@MagicOctopusUrn ขอบคุณแก้ไขแล้ว! Btw คุณอาจต้องการเพิ่มสถานะสำหรับ7คำตอบของคุณด้วย (แม้ว่าTNจะรบกวนการเรียงลำดับปัจจุบันของ0)
Kevin Cruijssen

@MagicOctopusUrn INMSRITN 7.00& AKDENHORMT 0.00เป็นไปได้โดยไม่ขัดแย้งกับสิ่งอื่นใด
Kevin Cruijssen

2

Perl 6, 341 ไบต์

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}

งั้นเหรอ นี่เป็นสิ่งที่ฉันคิดไว้ นี้ใช้ Perl 6 เมตาผู้ประกอบการเช่นเดียวกับX=>ที่นี่ซึ่งเป็นX(ผลิตภัณฑ์ข้าม) =>ร่วมกับ

นั่นหมายความว่า<ME NE> X=> 5.5(ซึ่ง<ME NE>หมายถึง('ME', 'NE')) ได้รับนำไปใช้ในองค์ประกอบของอาร์เรย์แต่ละผลผลิต=> 5.5 ME => 5.5, NE => 5.5วงเล็บเป็นเพียงที่นี่เพื่อความสำคัญ ...


ในฐานะนักกอล์ฟ (เอ่อ ... ) ผมไม่ได้เขียนด้วยมือเลย (ยกเว้นฟังก์ชั่นจริง) ดังนั้นฉันจึงเขียน meta-golfer เพื่อสร้างชุดค่าผสมที่มีประสิทธิภาพที่สุด!

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
}

มันสร้างทั้งX=>กรณีและกรณีที่ง่ายกว่า (โดยแต่ละกรณีมีการแจกแจง) และฉันเลือกเคสที่สั้นที่สุด (เก่า)


2

JavaScript (ES6), 227 224 ไบต์

รับอินพุตในรูปแบบ currying (s)(v)โดยที่sคือสถานะและvคือจำนวนเงิน ใช้การปัดเศษพื้น

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

การสาธิต


1

Kotlin , 444 ไบต์

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)}

ลองออนไลน์!

เชิดชู

// 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)
}

1

Python 3 , 303 ไบต์

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)

ลองออนไลน์!

ง่ายมาก: ข้อมูลถูกจัดเก็บข้อมูลเป็นสองตัวอักษร + รายการของตัวเลข: ทุกเปอร์เซ็นต์น้อยกว่า 10 ดังนั้นจึงสามารถจัดเก็บเป็นส่วนจำนวนเต็ม (1 หลัก) + ส่วนทศนิยม (0 -... หลัก)


1

C # , 318 309 ไบต์


ข้อมูล

  • อินพุต String sตัวอักษรย่อ 2 ตัวของสถานะตัวพิมพ์ใหญ่
  • อินพุต Double vค่า
  • เอาท์พุท Stringมูลค่าภาษีที่จะรวบรวมปัดเศษเป็นทศนิยม 2 ตำแหน่ง

แข็งแรงเล่นกอล์ฟ

(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 "";
};

อ่านได้ไม่ดี

// 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 "";
};

รหัสเต็ม

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();
        }
    }
}

ข่าว

  • v1.0 - 318 bytes- โซลูชั่นเริ่มต้น
  • v1.1 - - 9 bytes- เปลี่ยนค่าที่.ToString("F2")ใช้ในการคืนค่าครั้งแรกเป็นสายการแก้ไข

หมายเหตุ

  • ไม่มี

0

AWK , 277 ไบต์

{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}

ลองออนไลน์!

คะแนนที่น่านับถือ แต่ไม่มีที่ไหนใกล้ Mathematica ฉันเพิ่ม 2 ไบต์ด้วยการพิมพ์บรรทัดใหม่หลังจากตรวจสอบแต่ละครั้ง แต่ฉันคิดว่ามันสวยกว่าแบบนั้น :)

(หวังว่าจะเห็นได้ชัดว่าอินพุตควรเป็นตัวย่อของรัฐและค่าในหนึ่งบรรทัด)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.