Röportaj: Ön Dokuz
Bu, iş görüşmesi sorularının programlanmasından esinlenen bir dizi zorluğun ilkidir.
Gelecekteki potansiyel patronunuzun oturduğu ofise girersiniz. "İçeri gel ve otur" diyor. Sinirli bir şekilde oturuyorsunuz, çabuk ama profesyonel kıyafetlerinizin kırışıklık içermediğinden emin olun. Size eğitiminiz, önceki iş deneyimleriniz vb. Hakkında birçok soru soruyor. Onlara çoğunlukla dürüstçe cevap veriyorsunuz, kendinizi daha iyi seslendirmek için buraya ve oraya biraz süsleme ekliyorsunuz. Öne doğru eğilir ve tekrar konuşmaya başlar.
"Hiç kod golfü duydunuz mu?" Neden, evet, golf kodunu seviyor ve boş zamanlarında sık sık yapıyorsunuz. "Harika. Röportajın son kısmı teknik bir sınav. Bir dizi sorunu çözmek için kod yazmakla görevlendirileceksin ..." Sana bir kağıt veriyor. Hızlıca göz at. Çantada keklik. Şimdi neden kod golfü hakkında sordu?
Diyerek şöyle devam etti: "Bu sorunlara çözümlerinizin toplam büyüklüğüne göre puanlandırılacaksınız. Diğer tüm adaylardan daha düşük puan alabiliyorsanız iş sizin." Ah. "Golf gibi, 18 problem vardır, iki grup 9'a bölünmüştür. Çözmek istediğiniz herhangi bir dili kullanmaktan çekinmeyin; duyduğunuz her dil için derleyiciler ve tercümanlar var ve kesinlikle birkaç tane var İyi şanslar! "
Görevler
Görev 1: Çarpım Tablosu
n
Girdi olarak bir sayı verildiğinde , aralıktaki pozitif tamsayılar için bir çarpım tablosu çıkarın [1, n]
. n
aralıkta olacak [1, 12]
. Tüm sayılar tabloda sola hizalanmalıdır. x
Sol üst köşedeki karakteri kullanın .
Örnekler:
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
Görev 2: Sıradan RMS
Bir dizi ASCII karakteri verildiğinde , ASCII sıralarının kök-ortalama-kare ortalamasını çıktılayın. Dize hiçbir zaman NULL bayt içermez (sıra 0).
Örnekler:
Input: The Interview: The Front Nine
Output: 95.08290393488019
Input: `1234567890-=qwertyuiop[]\asdfghjkl;'zxcvbnm,./
Output: 91.38101204135423
Görev 3: Atış Hareketi
Zemin seviyesinden ateşlenen bir merminin ufku ile başlangıç hızı ve açısı göz önüne alındığında, inişten önce gideceği yatay mesafeyi çıktılayın. Başlangıç hızı saniyede metre cinsinden verilecek, açı derece cinsinden ve mesafe metre cinsinden verilecektir. Dünya'nın yerçekimini ( g=9.81 m/s/s
) varsayalım ve göreli etkileri göz ardı edin. Bu sorun uğruna, Dünya'nın düz olduğunu varsayabilirsiniz (hesaplamalarınızı yaparken Dünya'nın eğriliğini dikkate almanız gerekmez). Verilen açı aralıkta olacaktır [0, 90]
. Cevabınız en az iki ondalık basamağa kadar doğru olmalıdır (yuvarlamaya izin verilir).
Örnekler:
velocity=50, angle=45
Result: 254.84 (rounded)
velocity=10, angle=60
Result: 8.82798576742547
Görev 4: Etaoin Shrdlu
Boş olmayan yazdırılabilir ASCII karakter dizisi (aralıktaki [32,127]
sıralar) verildiğinde, dizeyi karakterleri frekanslarına göre azalan düzende sıralayarak çıkarın. Beraberlik durumunda, ASCII ordinal tarafından sipariş, artan.
Örnekler:
Input: "Hello, World!"
Output: "llloo !,HWder"
Input: "Programming Puzzles and Code Golf"
Output: " oooPPaaddeeggllmmnnrrzzCGfisu"
Görev 5: Fibonacci Endeksi
Bir sayı verildiğinde, bunun bir Fibonacci numarası olup olmadığını belirleyin ve varsa dizinini (1'den başlayarak) sırayla çıktılayın. Bir Fibonacci numarası değilse, çıkış 0. İki kez dizilimde olan 1 durumunda, en erken oluşumu (indeks 1) çıkarın.
Örnekler:
Input: 1
Output: 1
Input: 144
Output: 12
Input: 4
Output: 0
Görev 6: Anagramlar
Üç küçük harfli İngilizce harf ( [a-z]
) dizesi verildiğinde, ilk dizedeki tüm harfleri kullanan, ikinci dizeyle başlayan ve üçüncü dizeyle biten bir dize çıktılayın. Böyle bir dize oluşturulamazsa, boş bir dize çıktısı alın. Giriş dizeleri her zaman en az bir harf uzunluğunda olacaktır. Önek ve postfix dizeleri birlikte kaynak dizgideki tüm harfleri kullanırsa, çıkış dizesinin "orta" öğesi (önek ve son düzeltme dizesi arasında) boş olabilir.
Örnekler:
Input: geobits bi es
Possible output: bigtoes
Input: mariatidaltug digital trauma
Output: digitaltrauma
Input: mego go lf
Output: (empty string)
Görev 7: Boşlukları Doldurma
Dizelerin bir listesi ve bir dolgu karakteri verildiğinde, tüm dizelerin dolgu karakteriyle en uzun dizenin uzunluğuna kadar doldurulması sonucunu, dizenin orijinal uzunluklarına göre artan düzende sıralanır ve kasadaki orijinal düzeni korunur bir kravat. Yalnızca bellek kısıtlamaları ile sınırlanmış, herhangi bir sonlu uzunlukta dizeler içeren sonlu uzunluktaki listeleri işleyebilmelisiniz.
Örnekler:
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"]
Görev 8: Değişiklik Yapma
Aralıktaki bir sayı [0.01,0.99]
verildiğinde, toplam jeton sayısı en aza indirilecek şekilde bu değeri temsil etmek için kullanılması gereken 4 standart ABD jetonunun her birinin sayısını çıktılayın. Giriş her zaman ondalık sayının tam olarak 2 yerine sahip olacaktır.
Jeton değeri referansı:
Penny: 0.01, Nickel: 0.05, Dime: 0.10, Quarter: 0.25
Örnekler:
Input: 0.75
Output: [0,0,0,3]
Input: 0.23
Output: 3 pennies, 0 nickels, 2 dimes, 0 quarters
Görev 9: Aralıkları Birleştirme
Aralıkları temsil eden tamsayılar içeren 2 tüplü sonlu bir liste verildiğinde, tüm örtüşen veya bitişik aralıkları birleştirmenin sonucunu çıktı. Tüm aralıklar en az 1 uzunluk olacaktır ve başlangıç değeri daima bitiş değerinden daha az olacaktır. Çıktının sırası önemli değil.
Örnekler:
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)
kurallar
- Bu kod golf , çok kısa cevap (bayt cinsinden) kazanır.
- Puanınız, tüm çözümleriniz için bayt sayılarının toplamı olacaktır.
- Standart boşluklar yasaktır.
- Giriş ve çıkış, diliniz için standart kabul edilen herhangi bir şekilde yapılabilir.
- Her bir meydan okuma için tam programlar veya işlevler yazabilir ve iki meydan okuma arasında ikisi arasında geçiş yapabilirsiniz.
- Tüm zorluklar için aynı dili kullanmalısınız. Sürüm farklılıkları genellikle zorluklarda ayrı girdiler olarak kabul edilebilecek kadar önemliyse, aynı sürümü baştan sona kullanmanız gerekir. Örneğin, Python kullanıyorsanız, tüm zorluklar için Python 2 veya Python 3'ü kullanmanız gerekir.
- Tüm zorlukları çözmelisiniz. Sadece bazı zorlukları çözen cevaplar rekabetçi değildir.
- Dil yerleşiklerini veya standart kitaplıkları kullanabilirsiniz.
Liderler Sıralaması
Bu yazının altındaki Yığın Snippet'i, a) her dil için en kısa çözüm listesi olarak ve b) genel bir lider tablosu olarak cevaplardan lider tablosunu oluşturur.
Yanıtınızın göründüğünden emin olmak için, lütfen aşağıdaki Markdown şablonunu kullanarak yanıtınızı bir başlıkla başlatın:
## Language Name, N bytes
N
gönderiminizin büyüklüğü nerede . Puanınızı artırmak varsa, olabilir onları içinden vurarak, başlığa eski hesapları tutmak. Örneğin:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Başlığınıza birden fazla sayı eklemek istiyorsanız (örneğin, puanınız iki dosyanın toplamı olduğu veya yorumlayıcı bayrak cezalarını ayrı olarak listelemek istediğiniz için), gerçek puanın başlıktaki son sayı olduğundan emin olun :
## Perl, 43 + 2 (-p flag) = 45 bytes
Dil adını, daha sonra snippet'te görünecek bir bağlantı da yapabilirsiniz:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes