Kod Bulmacaları - Çözümler


Yanıtlar:


8

Yapboz es1024's C için çözüm

resim açıklamasını buraya girin

7-Down'da tanımsız davranışları çağırarak biraz geçiştirmek zorunda kaldım. es1024, bu UB kullanımının amaçlanan çözüm olduğunu göstermiştir. Yine de çoğu insanın bilgisayarlarında çalışacaktır. Ben gibi istenilen sonucu elde çeşitli ifadelerle geldi -1 << 30, 3 << 30, 6 << 29ve ~(~0U/4)ancak bunların tümünün imkansız bana 5-karşısında almak için yapılmış. Bu nedenle, sola kaydırmanın boyutunu belirlemek için yalnızca en az önemli 5 bitin kullanıldığı Intel mimarisine özgü özelliği kullandım. Kayması gereken miktarın bir derleme zamanı sabiti ~_olmaması için olması gerektiğini unutmayın ~1. Aşağıdaki kodla ifadeleri test ettim:

#define T(X) _ = c; _ = X; printf("%d\n", _);
z[4] = {9};
int main(c)
{
    int _;

    T("01"[0])
    T(-8)
    T(-2)
    T(11<-328111)
    T(+2+71)
    T(9+0)
    T(0**z)
    T(5;)
    T(0<-000)
    T(2+~3)
    T(!91)
    T(!_)
    T(2**z)
    T('_T;')

    T("11"?5*9:2)
    T(15<<9)
    T(0+22)
    T(-211*0-97;)
    T(-17*0)
    T(3+0<<~_)
    T(8+000)
    T(+0)
    T(42)
    T(+!z)
    T(~_)
}

Makro nereden geliyor? Çözümü yayınlamaktan kaçındım çünkü M-ile karşılaşamadım.
COTO

@COTO Sorunuzu anlamıyorum, "Makro nereden geliyor?"
feersum

Boşver. #define TÇözümünüz için gerekli bir bileşen olarak yanlış anladım . Ancak soru, M-genelinde neden işe yarıyor? Çok karakterli bir sabit tanımlamak bayt değerlerini birleştirir mi? Eğer öyleyse, bugün yeni bir şey öğrendim. :)
COTO

@COTO Evet, bir taban-256 numarası yapmak gibidir. Karakter değişmezlerinin türü vardır int, bu nedenle bilgi kaybı olmadan en fazla dört bayt koyabilirsiniz.
feersum

3
kesinlikle bunu bilmiyordum. (Büyük olasılıkla, onu üretim kodunda kullanan herkes, kodlarını korumaktan sorumlu kişiler tarafından boğularak öldürülmüştür.) :)
COTO

8

professorfish, CJam, 41 karanlık

(Bu çözüm aslında birkaç alan gerektirir, bu yüzden profesörlerin aradığı tek şey bu değildir.)

#K###I#'32
#HDJ*s\ ##
2##2#`#`#-
4Zm*`##L#3
m##6##]`' 
f####e#`#'
`#0#'d1+eu
## #!####9
## '{;'"'m
C5(#}####q

Çok eğlenceliydi. #Altında 6aslında karanlık bir hücre değil kodu olduğunu unutmayın . Bunu inceleyelim:

Karşısında

2 İpucu: [[4 3]]. Bu daha hileli olanlardan biriydi, çünkü denemeye 4Z]]`ya da benzerine gerçekten takıldım . m*Bir dizi olmayan şeylerde Kartezyen ürünü kullanabileceğiniz ortaya çıkıyor ve sizin için bir dizi oluşturacak. İşte burada:

4Zm*`

4 İpucu: 24717. Zamanla Ben, bu lazım H, J, sve sondaki boşluk yer zaten vardı. HMuhtemelen sadece yeniden verebilecek birilerine 17ve yapılacak \sonunda. A Jiter 19ve 247 == 13 * 19böylece:

HDJ*s\ 

7 İpucu: 32. Bunu yapmanın yollarından bir grup vardır: Y5#, 3 2, ZY, YZ\, 4(2, 2)2, '32. Sonuncusu ile gittim, çünkü bir karakterle başlamak 7-down için umut verici görünüyordu ve bu doğru çıktı.

8 İpucu: E. Zaten vardı 'dben orada var seçerken arasında nedenle, 'd1+eu, 'deu1+ya da ben kullanılan bir varyant )ve yerine bir boşluk 1+(non-CJam insanlar için, bu alan dkarakter ve artım ve ya sırayla, bunu üst Kılıf) . Ancak, uson sütundaki A-down için yararlı görünüyordu. Ben de bunlardan ilkini seçtim. Sonunda da 'd) euçalışırdı.

9 İpucu: "". Eh, bu "boş dize, dize temsili almak, bir boşluk itmek" olmalıydı. Ama aynı zamanda `` 7-down'da dize temsili için gerekliydi ve A-down'da bir boşluk da yararlı görünüyordu, bu yüzden seçtim

]`' 

Not ]ayrıca birini olabilirdi LMOQR.

B İpucu: "m. Gerçekten bunu diğerlerine uydurmak zorunda kaldım, ama önemli olan birkaç karakter vardı. Zaten vardı {ve m. Bu yüzden bir blok kullanmak yerine, {bir karaktere dönüştüm, onu attım ve sonra gerekli iki karakteri ittim:

 '{;'"'m

D ipucu: 124. Bunu, sonunda bir azalma ile en kolay olan C-down ile birlikte çözdüm. Bu yüzden 12, 5'i itiyorum ve ikincisini azaltıyorum:

C5(

Aşağı

1 İpucu: [2 2 2 3]. Bu, kuşkusuz, biri olmamak için asal çarpanlara ayırma gibi görünüyordu. :)

24mf`

3 İpucu: 3010936384. Bu faktoring, aslında 38 6 olduğunu gösterdi . Tek soru, 382-genelinde nasıl uyum sağlanacağıydı. Sonunda *üçüncü sırada bir gerekli , bu yüzden iki katına 19çıktı:

J2*6#

5 İpucu: 2017. Böyle büyük bir sayı için iki karakter? Yerleşik iki basamaklı değişkenleri kullanın:

KH

6 İpucu: "18". Bunu 3 karakterle yapmanın tek bir yolu olduğunu düşünüyorum. Yerleşik 18'i kullanın, bir dizeye ve sonra dize temsiline dönüştürün.

Is`

7 İpucu: ' "\"\"". Muhtemelen bulmacanın en zor kısmı. Özellikle, "\"\""sadece üç karakter almak gerekiyordu . Hile, boş dizenin dize temsilini iki kez almaktı. Bu aşağıdakilere yol açtı:

' `L``+

+Gerekli değildir, fakat 8-genelinde tarafından ihtiyaç vardı.

8 İpucu: !{}. Bloğun kodda girmesi gerekiyordu, böylece sadece iki karakter bıraktı !, bu da başka bir değişmez anlamına geliyordu:

'!{}

A İpucu: -3u3. İle u, ben koymak başladı 8-karşısından yerinde -3ve 3başka hiçbir ipucu onlarla ilgileniyordum köşelerde. Ama sonra maltta bir ihtiyacım vardı . Ben almak için birden yollar olduğunu düşünüyorum 3ile _m_ancak en basit 9 karekökünü alıyordu:

-3 'u9mq

C İpucu: -1. Zaten orada azalma vardı, bu yüzden sadece 0kimsenin umursamadığı bir yer koymak :

0  (

E İpucu: Stack: "". En basit olan buydu. Sadece hata ayıklayıcıyı arayın:

ed

Calvin'in Hobileri konuştu , cevap geçerli. Bunu yazıma düzenleyeceğim

7

COTO, Javascript ES4, 37 Karanlık

 __________
|{}=51###6#|
|a##.#I-9<4|
|:##-##"#<#|
|5+Math.PI#|
|}##+##.#+#|
|["9"+0][0]|
|'##p##"###|
|a+-a#a=-10|
|'##c##=###|
|]##"\x48I"|
 ¯¯¯¯¯¯¯¯¯¯
  • Karşısında 6 5+Math.PIya da Math.PI+5; ancak ikincisi 'M' ve 'h' yi diğer ifadelere geçmeye bırakacaktı, pek olası görünmüyordu.
  • A genelinde bir dize olması gerekiyordu; ortada 4 ile bir kaçış gibi görünüyordu, bunun için tek yeriniz var "\x48I".
  • 2 aşağı şimdi bir dize ile biter, bu nedenle muhtemelen bir sayıya "pac" eklenir; buna geri döneceğiz.
  • 8 ac xxxasıfıra göre değerlendiriyor, yani -a + a? a + -a? 3 + -a? a+-abana 1dn bir dize bir char gibi görünüyordu verdi çünkü en iyi görünüyordu.
  • 1 tanesi şunları içeriyordu: 5, sadece yasal dilbilgisi olabilir {x:5}xxa'x. Döndürülen değer 5 olduğundan, nesneyi dışarı çekmesi gerekir, yani {x:5}['a']son eksik karakter de bir:{a:5}['a']
  • 1 genelinde başlangıçta {var. Bunun kırmızı bir ringa ataması olduğunu tahmin ettim, denedim t={}=51ve işe yaradı. Bunu bilmiyordum!
  • Şimdi 2 5xxax"pac"= = "2pac" var. Bu bir 5-a+"pac"şekilde olmalı , bu yüzden ikinci karakter '.' kayan nokta değişmezi için.
  • 7 ac şimdi [xx"xxxx]"90" döndürüyor. Yani bu değer çıkarılmış bir dizi değişmez değeri olmalıdır; biz sadece bir değer için yer var [xx"xx][0]. Orada iki tel için yer yok, ya da "9"+0ya 9+"0"uygun.
  • 3 dn; 3072, 3 * 1024'tür; 2'nin gücü şüpheli ve orada çok sayıda (1eX gibi) almanın diğer yollarını engelleyen 'Ben' vardı. Yani, tahmin edilen bit kaydırma; 6<<Icevap olduğu ortaya çıktı, sonuna eklemek için +0 kaldı.
  • 4 ac şimdi bir karşılaştırma operatörü içeriyordu; ve ikinci karakter geçerli bir tekli operatör olmalıydı (hem 't =' hem de 'I' sonra sığacak). '-' Ben tahmin etti ve sol birkaç olası çözüm var ( I-I<4, I-6<4, vs)
  • 5 dn şimdi içeriyor -x..]xxx4. ".." beni attı - yasal sözdizimi olabilecek sadece birkaç yol var ve bu yüzden ES4'ün amaçlanan olup olmadığını sordum - bu terk edilmiş spesifikasyonun garip bir özelliği miydi? Ama sonra bunun kırmızı bir ringa balığı olduğunu gördüm; -""NaN, yani -"..]"xx4orada olması gereken - NaN ile karşılaştırma, yanlış döndürme; '==' yapacak, ancak onay için son cevaba bakmanız gerekiyor ...
  • 9ac'ın birkaç olası çözümü vardı, ancak 5dn için izin verilecek karakter kısıtlaması, bunun başka bir kırmızı ringa ataması olduğunu düşündürdü; bir şey =-10. Dürüst olmak gerekirse, 9dn'nin önceki sürümüne de baktım ve bunun bir şey olması gerektiğini fark ettim =top(bir pencereyi geri almak için). Atanan değişken a veya I olabilir, önemli değil.

Zor bulmaca!


4

yapboz grc's Python

grc bulmaca çözümü

Tüm uzun kayan nokta ifadeleri için, Python matematiksel ifadeleri zorla oluşturmak ve değerlendirmek için bir C ++ programı yaptım. Tüm sayıların kayan nokta olduğunu ve yalnızca +, -, *, /, //, ** ve ~ işleçlerini desteklediğini varsayar. a**9*27%bKarma ve karma dışında her ipucunu 5 karakterden daha uzun süre almak için kullandım . 6 veya daha az boşlukla, birkaç saniye içinde biter, 7 için biraz bekler.


3

Yapboz COTO MATLAB için çözüm

14 boşluk olduğundan, ben bu oldukça iyi golf sanırım.

çözüm ızgarası

Bu test komut dosyası:

g=4;
o=magic(3);
D=@disp;

D(max([  2]));
D( i^3);
D(o^0);
D(6 -7+eye  );
D((i));
D(.1  ^5* g );
D(~2);
D(diag(~o)  );

D(asin (1)*i);
D((93+7) +~g);
D(  10e15);
D(2*ones (2));
D(02 ^  9 );
D(-i );
D(~o);

aşağıdaki çıktıyı üretir:

     2

        0 - 1.0000i

     1     0     0
     0     1     0
     0     0     1

     0

        0 + 1.0000i

   4.0000e-05

     0

     0
     0
     0

        0 + 1.5708i

   100

   1.0000e+16

     2     2
     2     2

   512

        0 - 1.0000i

     0     0     0
     0     0     0
     0     0     0

İyi gösteri. Birkaç boşluk beklemiyordum, ama anahtarda da birkaç tane var. Bunu şimdi göndereceğim. ;)
COTO
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.