สนามฝึกซ้อมกอล์ฟ - สหรัฐอเมริกา [ปิด]


11

ครอบครัวของฉันมีธุรกิจอีคอมเมิร์ซ ในเว็บไซต์ของเราเราบังคับให้คนเลือกสถานะของพวกเขาจากเมนูแบบเลื่อนลงเมื่อพวกเขาป้อนที่อยู่ของพวกเขา แต่ผ่านช่องทางอื่น ๆ ที่เราใช้ลูกค้าสามารถป้อนสิ่งที่พวกเขาต้องการลงในช่อง

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

พ่อของฉันชอบรหัสที่จะเบา ดังนั้นแทนที่จะใช้สวิตช์ตัวพิมพ์เล็กตัวใหญ่เขาต้องการโซลูชันแบบลีน

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

  • นิวยอร์ก
  • นิวยอร์ก
  • นิวยอร์ก
  • ny

เป็นอินพุตที่ยอมรับได้สำหรับนิวยอร์กและควรส่งออกนิวยอร์ก

หากมีสิ่งใดที่เหมือนกับ New Yrok ถูกส่งผ่านฟังก์ชันสามารถส่งคืนค่าดั้งเดิมได้

คุณสามารถใช้ภาษาทั่วไปได้ นี่คือการประกวดความนิยมดังนั้นผู้ที่ได้คะแนนมากที่สุดในตอนท้ายของสัปดาห์จะเป็นผู้ชนะ ฉันคิดว่านี่จะเป็นประโยชน์และแปลกใหม่

แก้ไข:คำอธิบายเป็นเรื่องราวปุย แต่ฉันทำงานโครงการที่คล้ายกันและคิดว่าจะต้องมีวิธีที่น่าสนใจมากขึ้นในการทำ ฉันสามารถทำโครงการด้วยตัวเอง (ได้ทำไปแล้ว) แต่ฉันคิดว่านี่เป็นสถานที่ที่ดีสำหรับการท้าทายที่น่าสนใจยิ่งขึ้น โดย "ภาษาทั่วไปใด ๆ " ฉันไม่รวมภาษา / ไลบรารีแบบกำหนดเองที่ออกแบบมาสำหรับความท้าทายนี้ - ฉันพยายามค้นหาวิธีแปลกใหม่แทนที่จะใช้รหัสฟรี ฉันคิดว่าทุกคนทำสิ่งนี้ในบางจุด แต่มันจะสนุกถ้าได้ทำในสิ่งที่ผิดปกติ ฉันพบว่าโครงการที่น่าสนใจที่สุดคือโครงการที่คุณรับมือกับงานประจำวันในรูปแบบใหม่และน่าสนใจนั่นคือเหตุผลว่าทำไมนี่จึงเป็นการประกวดความนิยมมากกว่ากอล์ฟ


14
ฉันไม่แน่ใจว่าทำไมการประกวดนี้จึงเป็นที่นิยมแทนที่จะเป็นรหัสกอล์ฟ (โดยเฉพาะอย่างยิ่งเนื่องจากชื่อมี 'กอล์ฟ' และพ่อของคุณชอบรหัสสั้น ๆ )
Geobits

5
@Claudiu จริง แต่เว็บไซต์นี้ไม่ได้มีไว้สำหรับรหัสการผลิต ...
Geobits

3
@Claudiu ฉันคิดอย่างสุจริตว่าเป็น "เรื่องราวปุย" ของประเภทที่มักจะไปกับความท้าทายเหล่านี้ ทั้งสองวิธีเมื่อฉันบอกว่า "เว็บไซต์นี้ ..." ฉันหมายถึง PP & CG เป็นรหัสที่นี่ส่วนใหญ่เป็นอย่างชัดเจนไม่ได้มีวัตถุประสงค์เพื่อใช้ในการผลิต สุจริตถ้าเขากำลังมองหารหัสที่แท้จริงที่จะใช้ในเว็บไซต์ของเขามันจะมีจริยธรรมมากกว่าที่จะทำมันเองหรือสัญญาออก);
Geobits

8
@chilemagic you can use any code... ดังนั้น OP จะเขียนไซต์ของเขาใหม่เพื่อใช้โซลูชัน APL / CJAM / GolfScript ของคุณหรือไม่ มันเป็นเรื่องที่ท้าทายจากเรื่องจริง ฉันโหวต
edc65

4
มันเป็นงานที่ไม่สำคัญเลยทำไม OP ถึงต้องใช้ความพยายามทั้งหมดในการพิมพ์คำถามเมื่อมันง่ายกว่าที่จะตั้งรหัสด้วยตัวเอง? ทั้งสองวิธีฉันสนุกไปกับมัน
James Williams

คำตอบ:


27

ทับทิม

คิดว่ามันน่าสนใจที่จะแยกตัวย่อของรัฐโดยไม่ต้องเขียนชื่อหรือตัวย่อใด ๆ อย่างชัดเจน หนึ่งนี้ไม่ได้ใช้สะกดผิดของการป้อนข้อมูลเข้าสู่การพิจารณาเพราะเราไม่สนใจเกี่ยวกับสิ่งนั้นที่นี่ใน codegolf.SE, rihgt ?

def f(s)
  [
    /(.).* (.)/,              # two words
    /^([CDGHKLPV]).*(.)$/,    # first and last letter
    /^(.).*([ZVX])/,          # unique letter
    /^([NFOUW])(.)/,          # two first letters
    /^(.)([DNR])/,            # unique second letter
    /^(.).*(L|N)\2/,          # double letters
    /^(.).SS(A|O)/,           # double S before the one used
    /^(.).*?[SNW](.)/,        # identified by the letters before them
    /(.)(.)/                  # two first letters

  ].find { |r| r =~ s.upcase }
  $1+$2
end

ต้องใช้เวลาพอสมควรในการหารูปแบบที่ชาญฉลาดเพื่อให้เข้ากับทุกรัฐ ลำดับของรูปแบบมีความสำคัญ - แต่ละรูปแบบที่ต่อเนื่องกันใช้กับสถานะที่เหลือซึ่งไม่ตรงกับรูปแบบก่อนหน้านี้:

รัฐทั้งหมดที่มีสองคำในนั้นใช้ตัวอักษรเริ่มต้นของสองคำ:

N EW H ampshire, N EW J ersey, N EW M exico, N EW Y ORK, N orth C arolina, N orth D Akota, R Hode ฉัน sland, S outh C arolina, S outh D Akota, Wคือ V irginia

ทุกรัฐขอร้องด้วยตัวอักษรใด ๆ ใน {CDGHKLPV } ให้ใช้ตัวอักษรตัวแรกและตัวสุดท้ายในชื่อ:

C aliforni , C olorad o , C onnecticu T , D elawar E , G eorgi , H AWAI ฉัน , K Ansa s , K entuck Y , L ouisian , P ennsylvani , V irgini , V ermon ที

จากสถานะที่เหลืออยู่ตัวอักษร { ZVX} มีความเป็นเอกลักษณ์:

A ri z ona, n e v ada, T e x as

สถานะที่เหลือทั้งหมดเริ่มต้นด้วย { FNOUW} ใช้ตัวอักษรสองตัวแรก

Fl orida, Ne braska, Oh io, Ok lahoma, หรือ egon, Ut ah, Wa shington, Wi sconsin, Wy oming

จากนั้น { DNR} จะไม่ซ้ำกันเป็นตัวอักษรที่สอง:

Ar kansas, ในไดอาน่า, Id aho

มันยากที่จะสร้างรูปแบบทั่วไป แต่ ...

เหลือเพียงสามสถานะเท่านั้นที่ใช้เป็นสองเท่าNหรือL , และ double letter ถูกใช้ในตัวย่อ state:

T en n essee, Mในn esota, ฉันลิตรลิตร inois

AหรือOหลังจาก double Sนั้นมีเอกลักษณ์เฉพาะตัว

Mตูดchusetts และM iss o URI

เมื่อใดก็ตามที่ { SNW} ปรากฏต่อหน้าตัวอักษรอื่นในชื่อรัฐที่เหลือตัวอักษรที่อยู่หลังตัวอักษรเหล่านี้จะถูกใช้ในตัวย่อ:

las kที่M arylan D , M Ain E , Mคือs issippi, Mบนเสื้อ ana, ฉันโอ๊ย

เหลืออีกสอง สิ่งเหล่านี้ใช้ตัวอักษรสองตัวแรก:

Al abama, Mi chigan


สามารถเล่นกอล์ฟได้แน่นอน:

Ruby 2 - 191 165 154 ตัวอักษร

อีก 26 ตัวอักษรออกมาโดยการทำให้ regexes น่าเกลียดเล็กน้อย นอกจากนี้หนึ่งใน regexes ดั้งเดิมกลายเป็นซ้ำซ้อน!

gets;[/.* (.)/,/^[CDGHKLPV].*(.)$/,/.*([ZVX])/,/^[NFOUW](.)/,/^.([DNR])/,/.*(L|N)\1/,
/.*SS(A|O)/,/.*?[SNW](.)/,/.(.)/].find{|r|$_.upcase=~r}
puts $&[0]+$1

"ปัจจุบันน้อยกว่าหนึ่งในสามของขนาดรายการ Golfscript!" : P โปรดจำไว้ Golfscript ไม่ได้ใช้ Regexes
โยสิยาห์พระพุทธเจ้าพระพุทธเจ้า

และฉันเปลี่ยนขนาด : P
Josiah Winslow

1
(@JosiahWinslow และโอ้ให้ทำเช่นนั้น 3.9575757575 ... : P)
daniero

6
lol สำหรับสาว regex ในคำอธิบายที่ไม่รอดการบีบอัด
masterX244

1
ฉันชอบคำตอบนี้ แต่มันไม่ถูกต้องเพราะไม่สามารถระบุอินพุตที่ไม่ถูกต้อง (อย่างที่คุณพูด) แม้จะมีตัวอย่างเฉพาะIf something like New Yrok is passed in, the function should return the original value.
edc65

4

ค#

ฉันใช้ตัวอักษรที่อยู่ในสถานะต่าง ๆ แล้วเพื่อให้ตัวย่อย่อสตริงสถานะให้สั้นลง

public string GetAbbr(string state)
            {

                var states =
                    new[] {
                        "AlasKa", "ALabama", "AriZona", "ARkansas", "CAlifornia", "COlorado", "ConnecticuT",
                        "DElaware", "FLorida", "GeorgiA", "HawaiI", "IDaho", "ILlinois", "INdiana", "IowA", "KansaS",
                        "KentuckY", "LouisianA", "MainE", "MarylanD", "MAssachusetts", "MIchigan", "MinNnesota",
                        "MiSsissippi", "MissOuri", "MonTana", "NEbraska", "NeVada", "New Hampshire", "New Jersey",
                        "New Mexico", "New York", "North Carolina", "North Dakota", "OHio", "OKlahoma", "ORegon",
                        "PennsylvaniA", "Rhode Island", "South Carolina", "South Dakota", "TeNnessee", "TeXas", "UTah",
                        "VermonT", "VirginiA", "WAshington", "washington D.C.", "West Virginia", "WIsconsin", "WYoming"
                    };
                var all = states.ToDictionary(st => string.Concat(st.Where(char.IsUpper)));

                var wanted = all.FirstOrDefault(pair => state.ToUpper().Equals(pair.Value.ToUpper()) || state.ToUpper().Equals(pair.Key));

                return wanted.Key ?? state;
            }

1
วิธีแก้ปัญหาที่ดี!
Beta Decay

2

JavaScript (E6)

นี่คือกลุ่มคือรายชื่อโดยใช้เคล็ดลับcamelCaseเพื่อย่อให้สั้น มีขนาด 617 ไบต์

F=i=>
  "AkAlAzArCaCoCtDeFlGaHiIdIlInIaKsKyLaMeMdMaMiMnMsMoMtNeNvNhNjNmNyNcNdOhOkOrPaRiScSdTnTxUtVtVaWaWvWiWyAlaskaAlabamaArizonaArkansasCaliforniaColoradoConnecticutDelawareFloridaGeorgiaHawaiiIdahoIllinoisIndianaIowaKansasKentuckyLouisianaMaineMarylandMassachusettsMichiganMinnesotaMississippiMissouriMontanaNebraskaNevadaNew hampshireNew jerseyNew mexicoNew yorkNorth carolinaNorth dakotaOhioOklahomaOregonPennsylvaniaRhode islandSouth carolinaSouth dakotaTennesseeTexasUtahVermontVirginiaWashingtonWest virginiaWisconsinWyoming"
  .match(/.[^A-Z]*/g).map((w,q)=>U(w,U(w)==U(i)?p=q%50:p),U=s=>s.toUpperCase(),p=-1)[p]||i

0

หลาม

ตัดสินใจที่จะทำเช่นนี้เป็นความท้าทายรหัส - กอล์ฟ รับลงไปที่906 713 694 ตัวอักษรด้วยความช่วยเหลือของ daniero และ hsl:

s='AK,AL,AZ,AR,CA,CO,CT,DE,FL,GA,HI,ID,IL,IN,IA,KS,KY,LA,ME,MD,MA,MI,MN,MS,MO,MT,NE,NV,NH,NJ,NM,NY,NC,ND,OH,OK,OR,PA,RI,SC,SD,TN,TX,UT,VT,VA,WA,WV,WI,WY,ALASKA,ALABAMA,ARIZONA,ARKANSAS,CALIFORNIA,COLORADO,CONNECTICUT,DELAWARE,FLORIDA,GEORGIA,HAWAII,IDAHO,ILLINOIS,INDIANA,IOWA,KANSAS,KENTUCKY,LOUISIANA,MAINE,MARYLAND,MASSACHUSETTS,MICHIGAN,MINNESOTA,MISSISSIPPI,MISSOURI,MONTANA,NEBRASKA,NEVADA,NEW HAMPSHIRE,NEW JERSEY,NEW MEXICO,NEW YORK,NORTH CAROLINA,NORTH DAKOTA,OHIO,OKLAHOMA,OREGON,PENNSYLVANIA,RHODE ISLAND,SOUTH CAROLINA,SOUTH DAKOTA,TENNESSEE,TEXAS,UTAH,VERMONT,VIRGINIA,WASHINGTON,WEST VIRGINIA,WISCONSIN,WYOMING'.split(",")
x=input().upper()
print(s[s.index(x)%50]if x in s else x)

อย่างไรก็ตามหากโมดูลได้รับอนุญาต (เช่นโมดูลเรา ) ฉันสามารถลดได้ถึง 130 ตัวอักษร:

import us
i=raw_input()
x=us.states.lookup(i)
print x.abbr if x else i

และหากคุณไม่จำเป็นต้องคืนค่าดั้งเดิมเมื่อรัฐไม่มีอยู่ฉันสามารถเอามันลงไป 50 ตัวอักษร:

import us
print us.states.lookup(raw_input()).abbr

คุณสามารถบันทึกได้ประมาณ 200 ตัวอักษรในsสตริงแรกโดยปล่อยให้เป็นสตริงขนาดใหญ่หนึ่งสตริงจากนั้นแบ่งเป็นคอมม่า ( ,); ไม่จำเป็นต้องใส่เครื่องหมายคำพูดเดี่ยว ๆ ทั้งหมด
daniero

@daniero ไม่อยากจะเชื่อว่าฉันไม่ได้คิดอย่างนั้น! จะทำอย่างไร
James Williams

คุณสามารถลบ Washington, DC ได้เนื่องจากไม่ใช่รัฐของสหรัฐอเมริกา
NinjaBearMonkey

@hsl ขอบคุณ ฉันเอารายชื่อจากรายการของรัฐที่ฉันพบทางออนไลน์ไม่รู้ว่าวอชิงตันดีซีอยู่ในนั้น
James Williams

0

bash + sed, 291 ไบต์

การแปลงที่ไร้รูปแบบของสารละลาย Ruby ของ Daniero เป็นแบบ:

echo $*|tr a-z A-Z|sed -e\
"/\(.\).* \(.\).*/b1;/^\([CDGHKLPV]\).*\(.\)$/b1;/^\(.\).*\([ZVX]\).*/b1;\
/^\([NFOUW]\)\(.\).*/b1;/^\(.\)\([DNR]\).*/b1;/^\(.\).*\([LN]\)[LN].*/b1;\
/^\(.\).*SS\([AO]\).*/b1;/^\(.\).*\([ED])\)$/b1;/^\(.\).*[SNW]\(.\).*/b1;\
/\(.\)\(.\).*/b1;:1 s//\1\2/"

0

Golfscript - 750 653

ส่วนใหญ่อยู่ในชื่อรัฐและตัวย่อ

{.96>32*-}%.,2>{"ALABAMA,AL,ALASKA,AK,ARIZONA,AZ,ARKANSAS,AR,CALIFORNIA,CA,COLORADO,CO,CONNECTICUT,CT,DELAWARE,DE,FLORIDA,FL,GEORGIA,GA,HAWAII,HI,IDAHO,ID,ILLINOIS,IL,INDIANA,IN,IOWA,IA,KANSAS,KS,KENTUCKY,KY,LOUISIANA,LA,MAINE,ME,MARYLAND,MD,MASSACHUSETTS,MA,MICHIGAN,MI,MINNESOTA,MN,MISSISSIPPI,MS,MISSOURI,MO,MONTANA,MT,NEBRASKA,NE,NEVADA,NV,NEW HAMPSHIRE,NH,NEW JERSEY,NJ,NEW MEXICO,NM,NEW YORK,NY,NORTH CAROLINA,NC,NORTH DAKOTA,ND,OHIO,OH,OKLAHOMA,OK,OREGON,OR,PENNSYLVANIA,PA,RHODE ISLAND,RI,SOUTH CAROLINA,SC,SOUTH DAKOTA,SD,TENNESSEE,TN,TEXAS,TX,UTAH,UT,VERMONT,VT,VIRGINIA,VA,WASHINGTON,WA,WEST VIRGINIA,WV,WISCONSIN,WI,WYOMING,WY"","/.@?)=}{}if

คำอธิบาย:

{        }%                         Map this to every character in the input string:
 .96>32*-                             Subtract 32 from the ASCII value if it's from "a" onwards.
                                      This turns every lowercase letter into an uppercase letter.
           .,2>                     Check if the input length is greater than 2.
               {              }     If it is, they inputted the full name.
                "..."                 Our string is in the form "STATE NAME,STATE ABBREVIATION".
                     ","/             We split the string at every comma to turn it into an array.
                         .@?          Then we see where the input string is in the array...
                            )=        ...then we return the value right next to it.
                               {}   If not, they inputted the abbreviation.
                                      ...do nothing.
                                 if EndIf
                                    (implied) Print the abbreviation

ขออภัยฉันไม่เห็นจุดที่จะเขียนสคริปต์ทั้งหมดและไม่เพิ่มอะไรเลยนอกจากสำเร็จรูปจำนวนเล็กน้อย มันไม่นำอะไรเลย แต่ขอบคุณสำหรับเครดิตที่ฉันเดา ... ขอแสดงความนับถือ "คนอื่น"
daniero

ขออภัยรายการโทรลล์ ฉันรู้ว่ามันไม่ใช่ของจริง
โยสิยาห์พระพุทธเจ้าพระพุทธเจ้า

ทีนี้ลองพิจารณาฉัน
หมุนรอบ

@daniero เฮ้อย่างน้อยฉันก็รู้ว่าเป็นไปได้ที่จะมี regexes ใน Golfscript! นั่นเป็นเหตุผลเดียวที่ฉันทำเช่นนั้น lol: p
Josiah Winslow

0

PHP

ความพยายามของฉันซึ่งไม่ประสบความสำเร็จอย่างที่ฉันคาดไว้ใช้ความยาวสตริงและการจัดวางอักขระเฉพาะเพื่อแยกตัวย่อจากชื่อรัฐ อาจเป็นไปได้ว่าการเรียงลำดับชื่อที่ดีกว่านั้นเป็นไปได้

function findAbb ($state) {
    $first = substr($state, 0, 1);
    $last = substr($state, -2,1);
    $state = strtolower($state);
    if (strlen($state) < 4) {
        return strtoupper($state);
    }
    if (strpos($state, ' ')) { //if it's a space, return the first letter of each word.
        $space_index = strpos($state, ' ');
        $state = explode(' ', $state);
        return strtoupper(substr($state[0], 0, 1) . substr($state[1], 0, 1));
    }
    if (startsWith($state, 'io')) { //iowa is annoying, get rid of it.
        return strtoupper($first . $last);
    }
    if (startsWith($state, 'w,i')) { //if it starts with a W, return the first 2.
        return strtoupper(substr($state, 0, 2));
    }
    if (strlen($state) < 7 && strpos($state, 'm')===false) { //matches texas, ohio, and utah.
        return strtoupper($first . substr($state, -4,1));
    }
    if (strlen($state) < 7 && substr($state, 0, 1) > 'j' && substr($state, 0, 1) < 'n') { //matches maine, kansas, and hawaii
        return strtoupper($first . $last);
    }
    if (startsWith($state, 'c,d,k,l,p,v,g,h')) { //some unique states
        return strtoupper($first . $last);
    }
    if (strpos($state, 'sk')) {
        return strtoupper ('ak');
    }
    if (startsWith($state, 'k,l', 1)) {
        return strtoupper(substr($state, 0, 2));
    }
    if (startsWith($state, 'n')) {
        return strtoupper($first . substr($state, 2, 1));
    }
    if (startsWith($state, 'n', 2) || startsWith($state, 'z', 3)) { //montana, tennessee, minnesota, and arizona
        return strtoupper($first . substr($state, 3, 1));
    }
    if (startsWith($state, 'm') && ($last == 's') || ($last == 'n')) {
        return strtoupper(substr($state, 0, 2));
    }
    if (strpos($state,'o')) {
        return strtoupper($first . 'o');
    }
    if (strpos($state,'y')) {
        return strtoupper($first . 'd');
    }
    if (strpos($state,'r')) {
        return strtoupper($first . 'r');
    }
    if (strpos($state,'ss')) {
        return strtoupper($first . 's');
    }

    return $state; //otherwise return the name of the state (it was mispelled).
}

function startsWith ($state, $letters, $index = 0) { //takes a comma separated array and finds contents.
    $letters = split(',',$letters);
    for ($q = 0; $q<count($letters); $q++) {
        if (strpos($state,$letters[$q]) === $index) {
            return true;
        }
    }
    return false;
}

แน่นอนมันสามารถเล่นกอล์ฟได้ นี่เป็นความพยายามครั้งแรกของฉันในการเล่นกอล์ฟ (911)

function t($s){$s=u($s);$f=b($s,0,1);$l=b($s,-2,1);
if(strlen($s)<4)return $s;if(strpos($s,' '))$s=split(' ',$s);
return b($s[0],0,1).b($s[1],0,1);
if(w($s,'IO'))return $f.$l;
if(w($s,'W,I'))return b($s,0,2);
if(strlen($s)<7 && strpos($s,'M')===false)return $f.b($s,-4,1);
if(strlen($s)<7 && b($s,0,1)>'I' && b($s,0,1)<'N')return $f.$l;
if(w($s,'C,D,K,L,P,V,G,H'))return $f.$l;if(strpos($s, 'SK'))return 'AK';
if(w($s,'K,L',1))return b($s,0,2);if(w($s,'N'))return $f.b($s,2,1);
if(w($s,'N',2) || w($s,'Z',3))return $f.b($s,3,1);
if(w($s,'M') && ($l=='S') || ($l=='N'))return b($s,0,2);
if(strpos($s,'O'))return $f.'O';
if(strpos($s,'Y'))return $f.'D';if(strpos($s,'R'))return $f.'R';
if(strpos($s,'SS'))return $f.'S';return $s;}function w($s,$l,$i=0){$l=split(',',$l);
for($q=0;$q<count($l);$q++)if(strpos($s,$l[$q])===$i)return 1;return 0;}
function u($z){return strtoupper($z);}
function b($v,$x,$y){return substr($v,$x,$y);}

0

จาวาสคริ

ฉันรู้ว่านี่ไม่ใช่รหัสกอล์ฟ แต่ฉันต้องการตีกอล์ฟอยู่ดี :)

var r=new XMLHttpRequest
r.open("GET","https://gist.githubusercontent.com/mshafrir/2646763/raw/f2a89b57193e71010386a73976df92d32221d7ba/states_hash.json",0)
r.send()
var o=r.responseText,m=prompt(),a=m
o=JSON.parse(o)
for(var i in o)if(o[i].toLowerCase()==m.toLowerCase())a=i
alert(a)

ยะสำหรับสิ่งใหม่! (ตัวอย่างสแต็ค)


3
นี่เป็นช่องโหว่มาตรฐานและช่องโหว่มาตรฐานมีผลบังคับใช้โดยไม่ต้องระบุอย่างชัดเจน
Ingo Bürk

@ IngoBürkฉันไม่เชื่อว่าสิ่งนี้จะตกอยู่ภายใต้ช่องโหว่มาตรฐาน ... มันได้รับข้อมูลที่จำเป็นจากอินเทอร์เน็ตในลักษณะเดียวกับการอ่านไฟล์
Beta Decay

2
เช่นนั้นeval(open('a.txt'))ถูกต้องหรือไม่ หากคุณใช้ไฟล์ใด ๆ คุณจะต้องรวมไฟล์นั้นและชื่อไฟล์ไว้ในจำนวนอักขระด้วย (นี่ไม่ใช่โค้ดกอล์ฟดังนั้นจริง ๆ แล้วมันไม่สำคัญในกรณีนี้)
Doorknob

@Doorknob เนื่องจากคุณยกประเด็นว่านี่ไม่ใช่รหัสกอล์ฟฉันไม่เห็นว่าทำไมฉันถึงได้ลงคะแนน ... ฉันไม่ได้ละเมิดกฏของป๊อปคอน
Beta Decay

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