Oynamayı sevdiğim bir oyun var. Sonlu boyutlu bir ızgarada olur (ancak bir küre gibi sarılır). Bu ızgarada rastgele (yalnızca tamsayı) bir nokta seçilir. Sonra, ben, kullanıcı, bir koordinat girişi istenir. Eğer girdim rastgele nokta ile tam olarak eşleşirse, bana kazandığım söylenir. Aksi takdirde, girdim ile rasgele nokta arasındaki noktaya mesafenin söylendiği söylenir. Örneğin, tahmin edersem (2,2)ve rastgele nokta atlasaydı (4,3), o zaman mesafe olurdu sqrt[(3-2)^2 + (4-2)^2] = sqrt[5].
Oyun, oyuncu noktanın doğru yerine gelene kadar devam eder.
Amaç Yukarıda açıklanan oyunun işlevsel bir versiyonunu oluşturun. Bunu yapmak için tam bir program oluşturmanız gerekir. Programınızın yapması gerekenler:
- İki giriş isteyin: kartın yüksekliği ve genişliği. Kökeni tahtanın sol üst tarafındadır. Bu girişler aşılmayacaktır
1024. - Bu tahtada rastgele bir nokta seçin; tahmin edilmesi gereken nokta bu olacak.
- Bir dönüş simüle eden girişi kabul edin. Giriş, boşlukla ayrılmış bir tamsayı çifti veya iki ayrı tamsayı girişi olacaktır. Bu girdiye yanıt olarak, program iki şeyden birini yapacaktır:
- Giriş seçilen rastgele nokta ile eşleşiyorsa, kullanıcının zaferini gösteren bir mesaj gönderin. "Sen kazandın!"
- Aksi takdirde, kullanıcının giriş noktası ile rastgele nokta arasındaki mesafeyi girin.
- Kullanıcı zafere ulaştığında, kullanıcının aldığı dönüş sayısını gösterin. Ardından program kapanır.
Bonuslar
Bonuslar bu listede göründükleri sırayla uygulanır
- Programınız
D, oyunun gerçekleştiği boyutu tanımlayan bir girdi tamsayısı alırsa -150 bayt . Örneğin,D = 3rasgele bir3tamsayı noktası oluşturursanız ,3tamsayı girişleri alır ve bu noktalar arasındaki mesafeyi çıkarırsınız . score < 0Kullanıcının daha önce belirtilen boyutlar ve dönüş sayacı üzerinde nerede tahmin ettiğini gösteren bir grafik sunumunu (ASCII veya Resim) sağlarsanız % -50 (veya +% 50 ise ). (İlk bonus için giderseniz, bu bonus sadece2Dve1Dmodları için geçerlidir . 3D grafik çıktısı eklerseniz,% -50 ek alırsınız.)- -60 bayt sağlayabilirseniz (başlangıçta bir girdi ile seçilir; yani verildiğinde
0normal oyun modunu gerçekleştirin; verildiğinde1bu oyun modunu gerçekleştirin), noktanın tur başına 1 birim rastgele ortogonal yönde hareket ettiği
Kaydırma hakkında daha fazla bilgi
Sarma yalnızca üçüncü bonusta hareket noktası sınırların herhangi biri boyunca hareket ettiğinde gerçekleşir; bu durumda, hareket noktası ilgili noktaya bükülür, şöyle:
... ...
..R (move right) R..
... ...
Bu sarma davranışı, noktanın yön değiştirdiği gerçeğinin yanı sıra, kullanıcının tahminini etkilemez.
Liderler Sıralaması
Bu yazının altındaki Yığın Parçacığı, a) her dil için en kısa çözüm listesi ve b) genel bir lider panosu olarak cevaplardan katalog 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
Ngö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
10x10rasgele bir nokta, (9,4)ve sanırım (2,2), mesafedir sqrt(13)ya sqrt(53)? (Gelecek için not: garip bir şey yapıyorsanız, rastgele dahil etmeyin, çünkü test senaryoları sağlamayı neredeyse imkansız hale getirir). 2. Üçüncü bonusta, puan hareket etmeden önce veya sonra hesaplanmalı ve çıkarılmalıdır?