-X
Çevrimiçi deneyin!
Tersini dene!
açıklama
Bunun aslında Stack Cats'teki önceki yarışmadan çok daha kolay olduğu ortaya çıktı. Tam program (uygulandıktan sonra -m
) burada -X-
. X
Teyp başının sağındaki ve sağındaki yığınları değiştirmek için kullanılır, yani ilk yığını hiç etkilemez, bu nedenle onu görmezden gelebiliriz. Ama o zaman program etkili.--
(yığının en üstünü iki kere olumsuzlayın), hiçbir şey yapmaz.
Ters program için, uygulama -m
verir X-X
. Yine, X
hiçbir şey yapmaz, bu yüzden program etkili, sadece -
yığının tepesini olumsuzlar.
Diğer 2 baytlık çözüm -=
, ancak hemen hemen aynı. Tek fark bu=
tüm bacaları değil, sadece bitişik bacaların üstlerini değiştirmektir.
Fakat yine de kullanmak -m
biraz hile yapmak gibi geliyor, bu yüzden aşağıda tamamen yansıtılmış bir program kullanan bir çözüm var.
:I<->I:
Çevrimiçi deneyin!
Tersini dene!
açıklama
Önceki cevabın düşünceleri hala geçerlidir : herhangi bir geçerli çözüm eşleştirilmiş karakterleri kullanmalı ve I
. Altı olası çözüm (TIO bağlantısına dahil edilmiş) hepsi aynıdır. -
ve _
bu programa eşdeğerdir ve :
ile ikame edilmiş olabilir |
ya da T
(sıfır girişler için tesadüfi olarak iş sıfır olmayan girişleri için aynı şeyi hangi). Bunu açıklamak için seçtim çünkü en kolayı.
Bu nedenle, başlangıç yığınının girişini -1
(sonsuz sayıda sıfırın üstünde) tutarken, bant boyunca diğer tüm yığınların yalnızca sıfırları tuttuğunu unutmayın. Stack Cats, herhangi bir uzunluğa sahip programın hiçbir şey yapmadığı özelliğine de sahiptir (sonlandırması koşuluyla, ancak bu zorluk için yine de döngüler kullanamayız). Aynı şey orta karakterli hiçbir şey yapmayan herhangi bir tuhaf uzunluktaki program için de geçerlidir ... Bakalım:
: Swap the input with the -1 below.
I Move the -1 one stack to the left and turn it into +1.
< Move another stack left (without taking the value).
- Negate the zero on top of that stack (i.e. do nothing).
Bu nedenle, programın ikinci yarısı ilk yarısını tam olarak çözer ve -1
tekrar bir girdiyle sonuçlanır .
Ters program :I>-<I:
. Bunun bir şeyleri nasıl değiştirdiğini görelim:
: Swap the input with the -1 below.
I Move the -1 one stack to the left and turn it into +1.
> Move one stack right, i.e. back onto the initial stack which still holds the input.
- Negate the input.
< Move back to the left where we've parked the 1.
I Move that 1 back onto the initial stack and turn it back into a -1.
: Swap the -1 below the negated input to act as an EOF marker.