บทสัมภาษณ์: The Front Nine


18

บทสัมภาษณ์: The Front Nine

นี่เป็นครั้งแรกของความท้าทายที่ได้รับแรงบันดาลใจจากคำถามการสัมภาษณ์งาน

คุณเดินเข้าไปในสำนักงานที่เจ้านายในอนาคตของคุณนั่งอยู่ “ เข้ามาแล้วนั่งลง” เขาพูด คุณนั่งลงอย่างหงุดหงิดเพื่อให้แน่ใจว่าชุดที่เร็วและเป็นมืออาชีพของคุณปราศจากริ้วรอย เขาถามคำถามคุณมากมายเกี่ยวกับการศึกษาประสบการณ์การทำงานก่อนหน้าและอื่น ๆ คุณตอบคำถามเหล่านี้เป็นส่วนใหญ่อย่างซื่อสัตย์เพิ่มการจัดแต่งเล็กน้อยที่นี่และที่นั่นเพื่อทำให้ตัวเองเสียงดีขึ้น เขาโน้มตัวไปข้างหน้าและเริ่มพูดอีกครั้ง

"คุณเคยได้ยินชื่อของการเล่นกอล์ฟ?" ทำไมใช่คุณชอบที่จะตีกอล์ฟและทำมันบ่อยๆในเวลาว่างของคุณ "เยี่ยมมากส่วนสุดท้ายของการสัมภาษณ์คือการตรวจสอบทางเทคนิคคุณจะได้รับมอบหมายให้เขียนโค้ดเพื่อแก้ปัญหาต่าง ๆ ... " เขาส่งกระดาษให้คุณ คุณรีบเหลียวมองมัน peasy ง่าย ๆ ตอนนี้เขาถามเกี่ยวกับการเล่นกอล์ฟทำไม

"คุณจะได้รับคะแนนตามขนาดรวมของการแก้ปัญหาเหล่านี้หากคุณสามารถให้คะแนนต่ำกว่าผู้สมัครคนอื่น ๆ งานของคุณจะเป็นของคุณ" โอ้ "เหมือนกอล์ฟมีปัญหา 18 ข้อแบ่งออกเป็นสองชุด 9. คุณสามารถใช้ภาษาใดก็ได้ที่คุณต้องการแก้ปัญหาเรามีนักแปลและนักแปลสำหรับทุกภาษาที่คุณได้ยินและแน่นอนว่าคุณมี โชคดี! "

งาน

ภารกิจที่ 1: ตารางสูตรคูณ

รับจำนวนเป็นนำเข้าส่งออกตารางการคูณสำหรับจำนวนเต็มบวกในช่วงn จะอยู่ในช่วง ตัวเลขทั้งหมดควรจัดชิดซ้ายในตาราง ใช้อักขระสำหรับมุมซ้ายบน[1, n]n[1, 12]x

ตัวอย่าง:

n=4
x   1   2   3   4
1   1   2   3   4
2   2   4   6   8
3   3   6   9   12
4   4   8   12  16

n=10
x   1   2   3   4   5   6   7   8   9   10
1   1   2   3   4   5   6   7   8   9   10
2   2   4   6   8   10  12  14  16  18  20
3   3   6   9   12  15  18  21  24  27  30
4   4   8   12  16  20  24  28  32  36  40
5   5   10  15  20  25  30  35  40  45  50
6   6   12  18  24  30  36  42  48  54  60
7   7   14  21  28  35  42  49  56  63  70
8   8   16  24  32  40  48  56  64  72  80
9   9   18  27  36  45  54  63  72  81  90
10  10  20  30  40  50  60  70  80  90  100

ภารกิจ 2: ลำดับ RMS

รับสตริงอักขระ ASCII ส่งออกค่าเฉลี่ยรากเฉลี่ยกำลังสองของเลข ASCII ของพวกเขา สตริงจะไม่มีไบต์เป็น NULL (ลำดับ 0)

ตัวอย่าง:

Input: The Interview: The Front Nine
Output: 95.08290393488019

Input: `1234567890-=qwertyuiop[]\asdfghjkl;'zxcvbnm,./
Output: 91.38101204135423

ภารกิจ 3: Projectile Motion

เมื่อให้ความเร็วและมุมเริ่มต้นกับขอบฟ้าของกระสุนปืนที่ยิงจากระดับพื้นดินให้ส่งออกระยะทางแนวนอนที่มันจะเดินทางก่อนที่จะลงจอด ความเร็วเริ่มต้นจะได้รับในหน่วยเมตรต่อวินาทีมุมจะได้รับในองศาและระยะทางจะเป็นเมตร สมมติว่าแรงโน้มถ่วงของโลก ( g=9.81 m/s/s) และไม่สนใจผลกระทบเชิงสัมพันธ์ เพื่อประโยชน์ของปัญหานี้คุณอาจสมมติว่าโลกแบน (คุณไม่จำเป็นต้องพิจารณาความโค้งของโลกเมื่อทำการคำนวณ) [0, 90]มุมที่กำหนดจะอยู่ในช่วง คำตอบของคุณควรแม่นยำในตำแหน่งทศนิยมอย่างน้อยสองตำแหน่ง (อนุญาตให้ปัดเศษได้)

ตัวอย่าง:

velocity=50, angle=45
Result: 254.84 (rounded)

velocity=10, angle=60
Result: 8.82798576742547

ภารกิจที่ 4: etaoin shrdlu

กำหนดสตริงของอักขระ ASCII ที่พิมพ์ไม่เป็นโมฆะ (ปกติในช่วง[32,127]) ส่งออกสตริงพร้อมอักขระเรียงตามความถี่ในลำดับจากมากไปน้อย ในกรณีของเน็คไทให้เรียงตามลำดับ ASCII ขึ้นไป

ตัวอย่าง:

Input: "Hello, World!"
Output: "llloo !,HWder"

Input: "Programming Puzzles and Code Golf"
Output: "    oooPPaaddeeggllmmnnrrzzCGfisu"

ภารกิจที่ 5: ดัชนี Fibonacci

กำหนดตัวเลขให้ตรวจสอบว่าเป็นหมายเลข Fibonacci หรือไม่และส่งออกดัชนีของมัน (เริ่มจาก 1) ตามลำดับ ถ้าไม่ใช่หมายเลขฟีโบนักชีเอาท์พุท 0 ในกรณีที่ 1 ซึ่งอยู่ในลำดับที่สองให้ส่งออกเหตุการณ์ที่เกิดขึ้นเร็วที่สุด (ดัชนี 1)

ตัวอย่าง:

Input: 1
Output: 1

Input: 144
Output: 12

Input: 4
Output: 0

ภารกิจที่ 6: แอนนาแกรม

ให้สามสตริงตัวอักษรภาษาอังกฤษตัวพิมพ์เล็ก ( [a-z]) ส่งออกสตริงที่ใช้ตัวอักษรทั้งหมดในสตริงแรกเริ่มต้นด้วยสตริงที่สองและลงท้ายด้วยสตริงที่สาม หากไม่สามารถสร้างสตริงดังกล่าวให้ส่งออกสตริงว่าง สตริงอินพุตจะมีความยาวอย่างน้อยหนึ่งตัวอักษร "middle" ของสตริงเอาต์พุต (ระหว่างคำนำหน้าและสตริง postfix) อาจว่างเปล่าหากคำนำหน้าและสตริง postfix ร่วมกันใช้ตัวอักษรทั้งหมดในสตริงแหล่งที่มา

ตัวอย่าง:

Input: geobits bi es
Possible output: bigtoes

Input: mariatidaltug digital trauma
Output: digitaltrauma

Input: mego go lf
Output: (empty string)

ภารกิจที่ 7: เติมลงในช่องว่าง

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

ตัวอย่าง:

Input: ["hello","world","this","is","a","test"], 'x'
Output: ["axxxx","isxxx","thisx","testx","hello","world"]

Input: ["I'm","a","lumberjack","and","I'm","okay"], '!'
Output: ["a!!!!!!!!!","I'm!!!!!!!","and!!!!!!!","I'm!!!!!!!","okay!!!!!!","lumberjack"]

ภารกิจที่ 8: การเปลี่ยนแปลง

กำหนดตัวเลขในช่วง[0.01,0.99]เอาท์พุทจำนวนของเหรียญสหรัฐมาตรฐาน 4 เหรียญที่ควรใช้เพื่อเป็นตัวแทนของค่านี้โดยที่จำนวนเหรียญทั้งหมดจะถูกย่อให้เล็กสุด อินพุตจะมีตำแหน่งอยู่หลังจุดทศนิยม 2 ตำแหน่งเสมอ

การอ้างอิงค่าเหรียญ:

Penny: 0.01, Nickel: 0.05, Dime: 0.10, Quarter: 0.25

ตัวอย่าง:

Input: 0.75
Output: [0,0,0,3]

Input: 0.23
Output: 3 pennies, 0 nickels, 2 dimes, 0 quarters

ภารกิจที่ 9: การรวมช่วง

รับรายการ จำกัด ของ 2-tuples ที่มีจำนวนเต็มที่เป็นตัวแทนช่วงส่งออกผลลัพธ์ของการรวมช่วงที่ทับซ้อนกันหรือช่วงที่อยู่ติดกันทั้งหมด ช่วงทั้งหมดจะต้องมีความยาวอย่างน้อย 1 และค่าเริ่มต้นจะน้อยกว่าค่าสิ้นสุดเสมอ ลำดับของเอาต์พุตไม่สำคัญ

ตัวอย่าง:

Input: (2,3), (4,5), (6,9), (0,7)
Output: (0,9)

Input: (-3,4), (2,5), (-10,-4)
Output (-10,-4), (-3,5)

Input: (2,3), (5,6), (6,8)
Output: (5,8), (2,3)

กฎระเบียบ

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

ลีดเดอร์บอร์ด

สแต็คส่วนย่อยที่ด้านล่างของโพสต์นี้สร้างกระดานแต้มนำจากคำตอบ a) เป็นรายการคำตอบสั้นที่สุดต่อภาษาและ b) เป็นกระดานแต้มนำโดยรวม

เพื่อให้แน่ใจว่าคำตอบของคุณปรากฏขึ้นโปรดเริ่มคำตอบด้วยหัวข้อโดยใช้เทมเพลต Markdown ต่อไปนี้:

## Language Name, N bytes

ที่Nมีขนาดของส่งของคุณ หากคุณปรับปรุงคะแนนของคุณคุณสามารถเก็บคะแนนเก่าไว้ในพาดหัว ตัวอย่างเช่น

## Ruby, <s>104</s> <s>101</s> 96 bytes

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

## Perl, 43 + 2 (-p flag) = 45 bytes

คุณยังสามารถตั้งชื่อภาษาให้เป็นลิงค์ซึ่งจะปรากฏในตัวอย่างข้อมูล:

## [><>](http://esolangs.org/wiki/Fish), 121 bytes


เราได้รับอนุญาตให้ส่งออกตัวเลขในเอกสารทางวิทยาศาสตร์ในภารกิจ 1 หรือไม่
FUZxxl

1
แม้ว่าฉันจะชอบที่จะมีการสัมภาษณ์แบบนี้ฉันก็ยังสงสัยว่ามันจะจัดอันดับคนดีหรือไม่ เอ๊ะอะไรก็ตาม ยังสนุก
ภูมิใจ Haskeller

เราต้องพิมพ์ผลลัพธ์หรือเราสามารถส่งคืนจากฟังก์ชันได้หรือไม่? หากหลังอนุญาตสำหรับงานที่ 1 เราสามารถคืนเมทริกซ์หรือคล้ายกันได้หรือไม่?
Alex A.

ดูเหมือนว่าภารกิจที่ 8 จะมีรูปแบบเอาต์พุต 2 รูปแบบเราสามารถใช้รูปแบบแรกได้หรือไม่
aditsu

1
@pppery คำถามนี้เก่ากว่าลิงก์ที่คุณให้ไว้ดังนั้นฉันจึงไม่คิดว่าจะมีผลกับคำถามนี้
Night2

คำตอบ:


8

Pyth, 155 153 149 142 141 131 130 ไบต์

4 ไบต์ต้องขอบคุณ @FryAmTheEggman

1, 5 และ 4 ไบต์ขอบคุณ @Jakube

  1. 24 ไบต์ :J+1SQp\xtjmsm.[`*dk\ 4JJ

สร้างตารางสูตรคูณจากรายการ[1, 1, 2, 3, ...]ซึ่งก็คือ+1SQพิมพ์xและลบอักขระตัวแรก

  1. 10 ไบต์ :@.Om^Cd2z2

ซื่อตรง

  1. 18 ไบต์ :c*.t.tyvw7Z*QQ9.81

ใช้สูตรsin(2 theta) * v^2/aโดยที่thetaมุมvคือความเร็วเริ่มต้นและaคือ9.81

  1. 7 ไบต์ :o_/zNSz

ซื่อตรง

  1. 15 ไบต์ :hxeM.u,eNsNQU2Q

สร้างคู่ Fibonacci ค้นหาดัชนีของอินพุตในพวกเขาเพิ่มหนึ่ง

  1. 14 ไบต์ :IqSzSJj.-zsQQJ

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

  1. 8 ไบต์ :C.tolNQz

เรียงตามความยาว เต็มไปด้วยขนย้าย ไขว้อีกครั้ง

  1. 18 ไบต์ :Jsttz/L~%Jd[25T5 1

[quarters, dimes, nickels, pennies]นับเหรียญเอาท์พุทอยู่ในการสั่งซื้อ

ลบอักขระ 2 ตัวแรกของอินพุตและส่งถึง int เพื่อรับเซนต์ Jบันทึกเพื่อ สำหรับแต่ละหมายเลขdในรายการ[25, 10, 5, 1]โพสต์กำหนดJ%dไปJแล้วสร้างค่ากับค่าเดิมของ/Jd Jพิมพ์.

  1. 16 ไบต์ :C-M.p,JS{srMQhMJ

เปลี่ยนสิ่งอันดับเป็นช่วง ๆ รวมกันเป็นหนึ่งรายการขจัดข้อมูลซ้ำซ้อนและเรียงลำดับ Jบันทึกนี้ รูปแบบJ, hMJและhMJ, Jที่hMJอยู่Jกับทุกองค์ประกอบเพิ่มขึ้น 1 ดำเนินการลบในทั้งสองกรณี อดีตคือปลายล่างของช่วงหลังหลังคือปลายสูงกว่า แปลงเป็นคู่และพิมพ์


9

CJam, 162

  1. 25 ไบต์qi),0Xt_ff{*s4Se]}N*s0'xt
  2. 12 ไบต์q_:i:mh\,mq/(© Dennis)
  3. 18 ไบต์q~P*90/ms\_**9.81/
  4. 12 ไบต์q$e`{0=~}$e~(© Dennis)
  5. 16 ไบต์1_{_2$+}99*]qi#)
  6. 22 ไบต์qS/(1+1$s{1$#Lt}/)@@**
  7. 18 ไบต์q~{,}$_z,f{W$e]}p;
  8. 16 ไบต์q2>i25A5]:md]W%p
  9. 23 ไบต์q~${_0=2$1=>{+$3%}|}*]p

เดนนิสตกลงที่จะเข้าร่วมกองกำลัง :)


6

CJam, 223 ไบต์

ภารกิจที่ 1, 35 ไบต์

ri_)_,0Xt2m*::*0'xt:s@s,2+f{Se]}/N*

ลองออนไลน์

ภารกิจที่ 2, 12 ไบต์

q_:i:mh\,mq/

ลองออนไลน์

งานที่ 3, 27 ไบต์

rd180/P*_mc\ms]rdf*~4.905/*

ลองออนไลน์

ภารกิจที่ 4, 12 ไบต์

q$e`{0=~}$e~

ลองออนไลน์

ภารกิจที่ 5, 17 ไบต์

XXri:R{_2$+}*]R#)

ลองออนไลน์

ภารกิจที่ 6, 25 ไบต์

re!_rf#:!.*r:S;{N+SN+#)}=

ลองออนไลน์

ภารกิจที่ 7, 19 ไบต์

{:C;{,}$_W=,f{Ce]}}

ลองออนไลน์

งาน 8, 33 ไบต์

A4m*{:+}$r2>i:R;{[X5A25].*:+R=}=p

ลองออนไลน์

งาน 9, 43 ไบต์

{{~1$-,f+}%:|$__,(%a\2ew{:-W<},+e_$2/2,f.+}

ลองออนไลน์


4

Haskell, 650 ไบต์

ภารกิจที่ 1, 88 ไบต์:

f n="x   "++unlines(map(take 4.(++"   ").show=<<)$[1..n]:map(\a->a:map(a*)[1..n])[1..n])

ภารกิจ 2, 76 ไบต์:

g s=sqrt(sum(map(fromIntegral.(^2).fromEnum)s)/sum(s>>[1]))

งานที่ 3, 28 ไบต์

v?a=v*v/9.81*sin(2*a*pi/180)

งาน 4, 60 ไบต์:

import Data.List
i x=concat$sortOn((0-).length)$group$sort x

ภารกิจที่ 5, 64 ไบต์

j=(%zip[0..]z);x%((i,h):t)|x<h=0|x==h=i|1<2=x%t;z=scanl(+)0(1:z)

งาน 6, 93 ไบต์

import Data.List
k a b c|q b a&&q c a=b++((a\\b)\\c)++c|1<2="";q=(.sort).isSubsequenceOf.sort

งาน 7, 81 ไบต์

import Data.List
s!f=map(take(maximum$map r s).(++cycle[f]))(sortOn r s);r=length

งาน 8, 73 ไบต์

m x=floor(x*100)#[25,10,5,1];x#[]=[];x#(h:t)|(d,m)<-divMod x h=(m#t)++[d]

ภารกิจ 9, 87 ไบต์ (สำเนาที่ไร้ยางอายของคำตอบของ @ MtnViewMark จากความท้าทายที่คล้ายกัน)

n i=foldr(&)[]i;p@(a,b)&(q@(c,d):r)|b<c=p:q&r|a>d=q:p&r|1<3=(min a c,max b d)&r;p&_=[p]

2

Mathematica 10.3, 465 bytes

ทั้งหมดนี้เป็นฟังก์ชั่นนิรนาม นอกจากนี้ต้องขอบคุณมาร์ตินสำหรับความช่วยเหลือในการเล่นกอล์ฟเนื่องจากฉันเป็น noob ที่ Mathematica

ภารกิจที่ 1, 69 ไบต์

Grid@Join[{Join[{"x"},r=Range@#]},Flatten/@({r,Outer[1##&,r,r]}\[Transpose])]&

\[Transpose] เป็นสัญลักษณ์ "transpose" 3 ไบต์

ภารกิจที่ 2, 13 ไบต์

Mean[#^2]^.5&

หรือ

√Mean[#^2]&

(√คือ 3 ไบต์) RootMeanSquareในตัวไม่เพียงพอที่ค่อนข้างสั้น ...

งาน 3, 18 ไบต์

Sin[2#2°]#/9.81#&

ภารกิจที่ 4, 57 ไบต์

""<>SortBy[c=Characters@#,{-c~Count~#&,ToCharacterCode}]&

งานที่ 5, 33 ไบต์

Tr@Position[Fibonacci@Range@#,#]&

หรือ

Tr[Fibonacci@Range@#~Position~#]&

หรือ

Tr[Fibonacci~Array~#~Position~#]&

ภารกิจที่ 6, 178 ไบต์(ปัจจุบันมีข้อบกพร่อง)

({s,a,b}=Characters@{##};q=If[#2~SubsetQ~#,List@@(Plus@@#-Plus@@#2),{}]&;i=If[#!={},##]&;x=i[q[s,a],{}];y=If[x!={},i[q[x,b],{},Null],Null];Echo[If[y!=Null,""<>Join@{a,y,b},""]])&

หักกอล์ฟ:

({s,a,b}=Characters@{##};
q=If[#2~SubsetQ~#,List@@(Plus@@#-Plus@@#2),{}]&;
i=If[#!={},##]&;
x=i[q[s,a],{}];
y=If[x!={},i[q[x,b],{},Null],Null];
Echo[If[y!=Null,""<>Join@{a,y,b},""]])&

การจัดการสตริงน่ากลัว ...

งาน 7, 39 ไบต์

#~SortBy~StringLength~StringPadRight~#1

งาน 8, 46 ไบต์

FrobeniusSolve[{1,5,10,25},100#]~MinimalBy~Tr&

หรือ

{.1,.5,.10,.25}~FrobeniusSolve~#~MinimalBy~Tr&

งาน 9, 12 ไบต์

Interval@##&

ช่วงเวลาที่ส่งผ่านไปยังตัวสร้างจะรวมอัตโนมัติ -ed เอาชนะสิ่งนั้น

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