Beni aşar mısın? (Soyguncular bölümü)


43

Soyguncular bölümü

Polisler burada bulunabilir .

Meydan okuma

Senin görevin, polislerin aynı dilde ve aynı sürümdeki gönderimlerini aşmaktır (örneğin, Python 3.5Python 3.4 , buna izin verilmez). Bir gönderim, bayt cinsinden uzunluk, orijinal gönderimden kısa olduğunda iptal edilir. Bir başvuruyu kırmak için sadece en az 1 baytlık golf oynamaya ihtiyacınız var . Örneğin, eğer görev 2 × n yapacaksa ve gönderim şuysa:

print(2*input())

Aşağıdakileri yaparak polisten kurtulabilirsin:

print 2*input()

Veya bu bile (lamda'nın serbest olmasına izin verilir):

lambda x:2*x

Bunu aşağıdaki başlık ile gönderin:

##{language name}, <s>{prev byte count}</s> {byte count}, {cop's submission + link}

Örneğin:

Python 2, 16 12 bayt, Adnan (+ gönderim bağlantısı)

lambda x:2*x

A005843 değerini hesaplar (uzaklık = 0).

Bu durumda, var kırık teslim.

puanlama

En fazla başvuruda bulunanları kazanan kişi kazanır.

kurallar

  • Çatlak teslimi, polis teslimi ile aynı dilde olmalıdır.
  • Aynı giriş aynı çıkışa yol açmalıdır (bu nedenle a (2) = 4 4 kalmalıdır).
  • Python gibi diller için, dilde bulunan standart kitaplıkları içe aktarabilirsiniz. (Öyleyse, numpy / sympy vs. yok)
  • Giriş ve çıkış hem ondalık basamaktadır (taban 10).

Not

Bu zorluk bitti. Robbers bölümünün galibi feersum . CnR için final puanları aşağıda gösterilmiştir:

  • feersum : 16 çatlak
  • Dennis : 12 çatlak
  • Sızdıran Rahibe : 6 çatlak
  • Lynn : 4 çatlak
  • mil : 3 çatlak
  • Martin Ender : 2 çatlak
  • Emigna : 2 çatlak
  • jimmy23013 : 1 çatlak
  • Sp3000 : 1 çatlak
  • randomra : 1 çatlak
  • alephalpha : 1 çatlak
  • nimi : 1 çatlak
  • Yıkılabilir Karpuz : 1 çatlak
  • Dom Hastings : 1 çatlak

Yanıtlar:


8

Çedar, 7 6 bayt, Kıyafet

(<<)&1

Bu işe yarayacak gibi görünüyor, fakat dili doğru anlamam her zaman mümkün.


Alternatif olarak (**)&2,. Denedim 2&(**)ve başarısız oldum . :(
Dennis,

@Dennis (**)&2benim için gayet iyi çalışıyor: / ama bu da işe yarıyor.
Downgoat

14

Jelly ,54 bayt , George V. Williams

RÆḊḞ

Burada dene.

Gizli bir özellik!

Doğru hatırladıysam, ÆḊ(A) = sqrt (det (AA T )) n olur! n boyutlu Lebesgue , n girdi noktası ve orijin m boyutlu uzayda oluşturduğu bir tek taraflı ölçünün ölçüsüdür . N = 1 olduğunda Öklid mesafesine dejenere olur. Ne de olsa garip değil.


1
Doğru, belirleyicilerle garip bir şey yaptım ... O kadar gizli ki onu kendim bulamadım!
Dennis,

@Dennis Bunu biliyorum çünkü bir gün ben de determinantı genişletmeye çalıştım ve eğer çapraz ürün olarak çalışmasını istiyorsanız bunu elde edersiniz. Ama çok uzun sürdü çünkü ben de garip olabileceğini düşündüm ve birisinin de aynı şeyi
yapmasını beklemiyordum

Bunlar gerçekten "bayt" olarak kabul edilebilir mi? Kod noktaları ve UTF-16 aralığındadır. Bu, bu çözelti 6 bayt heterojen kodlama varsayar ve 8 bayt homojen kodlama yapar. Burada dürüstçe soruyorum.
Jules


11

Altıgen , 91 33 bayt, Mavi

1""?{\>{+/</+'+./_'..@'~&/!}'+=($

Kırımsız:

    1 " " ?
   { \ > { +
  / < / + ' +
 . / _ ' . . @
  ' ~ & / ! }
   ' + = ( $
    . . . .

Çevrimiçi deneyin!

Hala biraz golf oynayabiliyor ama FryAmTheEggman beni dövmeden önce göndereceğimi düşündüm. ;)

açıklama

İşte bazı renk kodlu çalıştırma yolları:

görüntü tanımını buraya girin

Ancak, bunlar golf nedeniyle gereksiz yere toplanmıştır. Akılda kalıcı bir düzen ile tam olarak aynı kod:

görüntü tanımını buraya girin

Bu daha iyi. Ve son olarak, işte kırmızı ok, bellek imlecinin (MP) başlangıç ​​konumunu ve yönünü gösterdiği bir bellek şemasıdır:

görüntü tanımını buraya girin

Temel amaç, yineleyici A , B ve C kenarlarındaki yinelemeyi takip ederken , f (i) , f (i + 1) ve f (i + 2) etiketli üç kenardaki Fibonacci sayılarını yinelemeli olarak hesaplayacağım . Bunu yaparken, bu kenarların rolleri her yinelemeden sonra döngüsel olarak değiştirilir. Bakalım bunun nasıl oldu ...

Kod, başlangıç ​​ayarlarının yapıldığı gri yolda başlar. Not f (i) daha önce kendi doğru başlangıç değerine sahiptir 0.

1   Set edge f(i+1) to 1.
""  Move the MP to edge A.
?   Read input n into edge A.
)   Increment n.

Şimdi yeşil yol ana döngüdür. _ve >sadece aynalar.

(     Decrement n.
<     If the result is zero or less, continue on the red path, otherwise
      perform another iteration of the main loop.
{     Move the MP to edge f(i+2).
+     Add edges f(i) and f(i+1) into this edge, computing the next Fibonacci number.
'     Move the MP to the edge opposite A.
~     Multiply by -1 to ensure that it's non-positive (the edge may have a positive
      value after a few iterations).
&     Copy the current value of n from A.
'     Move back and to the right again.
+     Copy n by adding it to zero. Since we know that the other adjacent edge
      is always zero, we no longer need to use ~&.
'+'+  Repeat the process twice, moving n all the way from A to B.
=     Reverse the orientation of the MP so that it points at f(i) which now
      becomes f(i+2) for the next iteration.

Bu şekilde, MP, kenarların iç üçlüsü etrafında hareket eder ve nsıfıra ulaşana kadar art arda Fibonacci sayıları hesaplanır . Sonra nihayet kırmızı yol yürütülür:

{}    Move the MP to f(i).
!     Print it.
@     Terminate the program.

Timwi'nin HexagonyColorer ve EsotericIDE ile oluşturulan diyagramlar .


Kutsal inek! Senin tarafından dövülmeyi bekliyordum ama o kadar da değil! 0.o
Blue

@Blue Sizinkinize bir açıklama eklemeyi planlıyor musunuz? Bunun nasıl çalıştığını merak ediyorum. :) Er ya da geç bununla ilgili bir açıklama ekleyeceğim, ancak bugün zamanı bulacağımdan emin değilim.
Martin Ender

Evet, benimki daha geleneksel bir hesaplama yöntemi kullanıyor. Ben tamamen unuttum &, bazı baytları kurtarmış olabilir
Blue


7

Stack Cats, 14 13 bayt, feersum

^]T{_+:}_

-nm+4 bayt için bayraklı. Çevrimiçi deneyin!

Tamam, bu döngü fındıktı. Azaltılmış bir alfabe üzerinde kaba baskı yapmak ve kaba kaba baskı yapmak 3x+2veya 5x+4genişletmeye çalışmak gibi birkaç yaklaşım denedim , ancak çözümün gerçekte bir döngü içermesini beklemiyordum .

Bunun nasıl çalıştığını görmenin en iyi yolu, Dhata ayıklama için bir bayrak eklemektir (bu nedenle çalıştırın -nmD) ve yukarıdaki TIO bağlantısı için hata ayıklamayı açın. Bir {}döngü, döngünün başında yığının tepesini hatırlar ve yığının tepesi bu değer olduğunda tekrar çıkar. Döngünün içi yığının en üstteki üç elemanının çıkarılması ve çevrilmesi ile eğlencelidir, ki bu da döngünün birçok yinelemede nasıl çalıştığını gösterir.


6

Sesos, 14 11 bayt, Sızdıran Rahibe

N 2 hesaplar . Burada dene.

Hex dökümü:

0000000: 16c0f7 959d9b 26e83e ce3d                         ......&.>.=

Montajdan:

set numin
set numout
get
jmp
  jmp, sub 1, fwd 1, add 1, fwd 1, add 2, rwd 2, jnz
  fwd 2, sub 1
  rwd 1, sub 1
  jmp, sub 1, rwd 1, add 1, fwd 1, jnz
  rwd 1
jnz
fwd 2
put

Güzel, benim orijinal golf versiyonumdan bile daha kısasın.
Sızdıran Rahibe

Bu 1 + 3 + … + (2n–1)yerine n × n:) hesaplar
Lynn

Yaklaşımınızı da kullandım
Leaky Nun

6

Neyse ki, 776 759 byte, Yıkılabilir Karpuz

| |||||||| | |
|| |||||| |
||| |||| |
|||| || |
||||| || |
|||| |||| |
||| |||||| |
|| |||||||| |
| |||||||||| |
|| |||||||| |
||| ||||||| |
||||||||||| |
||||||||||| |
||||||||||| |
||||||||||| |
|||||||||| |
||||||||| |
||||||||| |
||||||||| |
||||||||| |
|||||||||| |
||||||||||| |
|||||||||||| |
||||||||||| |
|||||||||| |
||||||||| |
|||||||| |
||||||| |
|||||| |
||||| |
|||| |
||| |
|| |
| |
| |
| |
|| |
|| |
|| |
|| |
|| |
| |
| |
| |
|| |
||| |
|||| |
||||| |
|||||| |
||||||| |
|||||| |
||||||| |
|||||||| |
||||||||| |
|||||||||| |
||||||||||| |
|||||||||||| |
||||||||||| |
|||||||||| |
||||||||| |
|||||||| |
||||||| |
|||||| |
||||| |
|||| |
||| |
|| |
| |
| |
| |
| |
|| |
| |
|| |
||| |
||| |
|||| |
||| |
|| |
| |
| |
| |
|| |
|| |
|| |
|| |

Bu dilin kaynak kodunu okumaya çalıştım ama çok kafa karıştırıcıydı. Birincisi , sütun numarası ip[1]iken satır numarası ip[0], cpkoordinatlar ise diğer şekilde kullanılır. Ancak, bazen değeri cpatanır ip. Programın ne yaptığını anlamaya çalışmaktan vazgeçtim ve daha az çubuk kullanarak aynı komut dizisini kodlamanın bir yolunu buldum.



5

J, 17 12 bayt, mil

+/@(]!2*-)i:

Orijinal olarak hemen hemen aynı, sadece daha golf oynadı. :)

i:ile +1karşılaştırıldığında menzili i.olması yararlı (ve garip). i.Burada kullanırsanız n=0yanlış olacak ama neyse ki bunu i:çözer.

Burada çevrimiçi deneyin.


i:Negatif değerler için sıfır olması ile temiz hile . Benim versiyonum öyleydi +/@(]!2*-)i.,].
mil,

5

M, 106 bayt, Dennis

R×\³¡Ṫ

Verilen n , bu hesaplar n inci -düzeyi faktöryel ait n . Bu eğlenceli bir egzersizdi!

Kod, Jelly olarak çalışabilir, böylece çevrimiçi olarak deneyebilirsiniz .

açıklama

R×\³¡Ṫ  Input: n
R       Create the range [1, 2, ..., n]
   ³¡   Repeat n times starting with that range
 ×\       Find the cumulative products
     Ṫ  Get the last value in the list
        Return implicitly


5

Haskell, 15 14 bayt, xnor

until odd succ

Verimsiz bir kaç saatimi "anlamsız" sözdizimini deşifre etmeyi öğrenerek geçirdim ... untilBunun yerine buldum.

Veya daha az melliflu bir 13 bayt için until odd(+1).


Güzel bitti, aklımda olan buydu. Ben üç kelimeyi severim.
xnor

4

Python 2, 43 40, xsot

g=lambda n:n<2or-~sum(map(g,range(n)))/3

İlginç, bu benim başlangıçta olanlardan farklı.
xsot

4

Pyke, 11 9 bayt, çamurlu balık

hVoeX*oe+

Burada dene!

Nasıl çalışır

          Implicit input: n (accumulator), n (iterations)
h         Increment the number of iterations.
 V        Do the following n + 1 times.
  o         Iterator. Pushes its value (initially 0) and increments it.
   e        Perform integer division by 2.
            This pushes 0 the first time, then 1, then 2, etc.
    X       Square the result.
     *      Multiply the accumulator and the result.
      oe    As before.
        +   Add the result to the accumulator.
            This sets the accumulator to a(0) = 0 in the first iteration and
            applies the recursive formula in all subsequent ones.

Bu yöntemi kullanarak 8 ile alabilirsiniz hV~oX*o+. Benim 5 baytlık cevabımSDmX^
Blue

Ah, ~otemiz. Ne olduğu hakkında hiçbir fikrim SDmX^yok.
Dennis,

Temel olarak 1-indeksli aralıkta o kareye karşı karışık taban konuşmasını kullanır. OEIS'te bir şey değil
Mavi

Oh, msadece etkiler mi X, etkilemez ^mi? Bu birçok şeyi açıklıyor.
Dennis,

Evet mve benzerleri yalnızca bir sonraki düğümü kullanın. Dokümanlarım vb hakkında herhangi bir yorumunuz var mı?
Mavi,

4

05AB1E , 7 4, Emigna

LnOx

Çoğalırsak, pozitif tamsayıların karelerinin toplamı için formülden 1 ^ 2 + 2 ^ 2 + 3 ^ 2 + ... + n ^ 2 = n (n + 1) (2 * n + 1) / 6 Her iki taraf da 2'ye kadar Sum_ {k = 0..n} 2 * k ^ 2 = n (n + 1) (2 * n + 1) / 3 (ki bu sekans için alternatif bir formül) alıyoruz. - Mike Warburton (mikewarb (AT) gmail.com), 08 Eylül 2007


Halkımın kaçırdığı bir önemsiz değişiklik olduğundan, 4'te kırdığın için mutluyum. Güzel!
Emigna

4

Jelly, 22 21 bayt, Dennis

_²×c×Ḥc¥@÷⁸÷’{S
‘µR+ç

Sonuncusu için Jelly kaynak kodunu okumak için birkaç saat harcadım, bu yüzden kullanmak için bu "beceriyi" koyabilirim. Umarım @Dennis, daha kısa bir formüle izin veren matematiksel keşiflerini bizimle paylaşır (yalnızca garip bir Jelly hilesi değil!


Karşılaştırma için vardı: `'_c_ × c @ + ¥ \ nr0ç @ €:' + \ S
Sp3000 19.07

@ Sp3000 Ah, neden göndermediniz?
feersum

Dennis'in M'de tekrar yayınlanmasından önceki 6 hakkında düşünmek için daha fazla zaman: P
Sp3000

4

J, 20 19 bayt, mil

[:+/2^~+/@(!|.)\@i.

Bu, ürünü binom katsayılarının bir toplamı olarak hesaplanan kare Fibonacci sayıları toplamı olarak hesaplar.

Neyse ki, @miles kendisi bu yorumda Fibonacci sayıları üretme kodunu yayınladı .


4

Acc !! , 526 525 bayt, DLosc

N
Count x while _%60-46 {
(_+_%60*5-288)*10+N
}
_/60
Count i while _/27^i {
_+27^i*(_/27^i*26-18)
}
_*3+93
Count i while _/27^i/27%3 {
_-i%2*2+1
Count j while _/3^(3*j+2-i%2)%3 {
_+3^(1+i%2)
Count k while _/3^(3*k+1+i%2)%3-1 {
_+3^(3*k+1+i%2)*26
}
}
}
Count i while _/27^i/3 {
_-_/27^i/3%27*27^i*3+_/3^(3*i+1+_%3)%3*3
}
_/3
Count i while _/100^i {
_*10-(_%100^i)*9
}
Count i while _/100^i/10 {
_+_/100^i/10%10
Count j while i+1-j {
_+(_%10-_/100^(j+1)%10)*(100^(j+1)-1)
}
}
_/100
Count j while _/100^j {
Write _/100^j%10+48
}

Bunun nasıl çalıştığı hakkında hiçbir fikrim yok, ancak küçük bir iyileşme tespit edebildim.

24c24
< _+_/100^i*100^i*9
---
> _*10-(_%100^i)*9

Ah, ateş et. Kimsenin özlediğim bir matematik golfünü yakalayamayacağını umuyordum. +1
DLosc

4

Haskell, 10 bayt, xnor

gcd=<<(2^)

Kullanım örneği: map ( gcd=<<(2^) ) [1..17]-> [1,2,1,4,1,2,1,8,1,2,1,4,1,2,1,16,1].

Nasıl çalışır: Gönderen oeis sayfa biz görüyoruz a(n) = gcd(2^n, n): Haskell sözdizimi yazılmış veya a n = gcd (2^n) n. Desenli f x = g (h x) xişlevler =<<:, f = g =<< hböylece gcd=<<(2^)geri çevrilen işlev aracılığıyla noktaya çevrilebilir gcd (2^x) x.


............... Nasıl
TuxCrafting





3

Matl, 11 10 bayt, Luis Mendo

YftdAwg_p*

-1 ^ uzunluk (dizi) yapmak yerine, öğeleri Boole değerlerine dönüştürür (her zaman 1'dir), onları olumsuzlar ve öğelerin ürününü alır.




3

Brachylog, 11 10 bayt, Fatalize

yb:AcLrLc.

Çevrimiçi deneyin!

açıklama

Brachylog Prolog kökenli bir dildir ve en büyük yeteneği bir şeyleri ispat etmektir.

İşte, bu ifadeleri kanıtlıyoruz:

yb:AcLrLc.
yb:AcL       Inclusive range from 1 to input, concatenated with A, gives L
     LrL     L reversed is still L
       Lc.   L concatenated is output

Bu kesinlikle aklımdaki cevaptı, aferin!
16'da

3

Jöle, 9 8 bayt, Dennis

œċr0$L€Ḅ

Üzgünüm! Amaçladığın çözümü bulamadım.

Bu , değiştirme ile değerleri C(n+k-1, k)seçmek için bir yol sayısı olduğu gerçeğine dayanmaktadır .kn

Not: Bunları saymak için olası kümeleri oluşturduğu için bu verimsizdir, bu nedenle n'nin büyük değerlerini çevrimiçi kullanmaktan kaçının .

Çevrimiçi deneyin ya da n'ye kadar doğrulayın .

Daha sonra n = 1000 hesaplamak için yeterince verimli olan 8 baytlık bir sürüm daha buldum. Bu, binom katsayısını kullanarak değerleri hesaplar ve listeleri oluşturmaktan kaçınır.

Ḷ+c’Ṛ;1Ḅ

Çevrimiçi deneyin ya da n'ye kadar doğrulayın .

açıklama

œċr0$L€Ḅ  Input: n
  r0$     Create a range [n, n-1, ..., 0]
œċ        Create all combinations with replacement for
          (n, n), (n, n-1), ..., (n, 0)
     L€   Find the length of each
       Ḅ  Convert it from binary to decimal and return

Ḷ+c’Ṛ;1Ḅ  Input: n
Ḷ         Creates the range [0, 1, ..., n-1]
 +        Add n to each in that range
   ’      Get n-1
  c       Compute the binomial coefficients between each
    Ṛ     Reverse the values
     ;1   Append 1 to it
       Ḅ  Convert it from binary to decimal and return


3

QBasic, 30 29 bayt, DLosc

INPUT n:?(n MOD 2)*(n+.5)+n/2

Güzel! (Sahip olduklarım tam olarak olmasa da.)
DLosc
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.