Tarpitten Kaçış (Polisler)


9

Bu bir dilleri tanımlamaya ve bunların tamamlandığını kanıtlamaya dayalı bir meydan okuma.

Bu polislerin iş parçacığı. Soyguncuların ipi burada .

Polisler

Bir polis olarak iki şey hazırlayacaksınız:

  • Bir programlama dilinin veya başka bir hesaplama sisteminin resmi bir belirtimi. (Hesaplamalı sistemler aşağıda tanımlanmıştır.)

  • Aşağıdaki biraz tanımlamaya göre, sisteminizin Turing'in tamamlandığına dair bir kanıt.

Dilinizi belirttiğinizi yayınlayacaksınız ve soyguncular Turing'in bütünlüğünü kanıtlayarak dili "kırmaya" çalışacaklar. Gönderiniz bir hafta içinde kırılmazsa, güvenli olarak işaretleyebilir ve kanıtınızı gönderebilirsiniz. (Birisi ispatınızda bir kusur bulursa, düzeltemediğiniz sürece cevabınız geçersiz olabilir.)

Bu bir , kazanan en çok oyu alan ve çatlamayan veya geçersiz olmayan cevap olacaktır. Zorluk açık uçlu - bir yanıtı kabul etmeyeceğim.

Bu zorluk uğruna, bir hesaplama sistemi dört şey olarak tanımlanacaktır:

  • Bir "program seti" P. Bu sayı dizisi, tamsayı, ikili ağaçlar, bir ızgara üzerindeki piksellerin konfigürasyonları, vb. Gibi sayılabilir sonsuz bir küme olacaktır (Ancak aşağıdaki teknik kısıtlamaya bakınız.)

  • IAynı zamanda sayılabilecek sınırsız bir küme olacak ve P(olabilse de) ile aynı küme olması gerekmeyen bir "girdi kümesi" .

  • Bir "çıkış seti" O, ki bu da yine sayılabilir sonsuz dizi olabilmektedir ve ya aynı olmayabilir olacak PyaI

  • Bir çıkış üretmek için bir belirleyici, mekanik bir işlem oprogramından pve giriş i, p, ive oüyedir P, Ive Osırasıyla. Bu prosedür, prensip olarak bir Turing makinesinde veya başka bir soyut hesaplama modelinde uygulanabilecek şekilde olmalıdır. Prosedür, elbette, programa ve girişine bağlı olarak durmayabilir.

Setleri P, Ive Obir hesaplanabilir şekilde dizeleri olarak bunları ifade edebilen şekilde olmalıdır. (En mantıklı seçimler için bu önemli olmayacaktır; bu kural, durmayan Turing makineleri seti gibi garip setler seçmenizi önlemek için mevcuttur.)

Turing tamlığı aşağıdaki gibi tanımlanacaktır:

  • Hesaplanabilir bir kısmi işlevi için fgelen Iiçin O, bir program vardır pde Pverilen şekilde pve giriş i, çıkışı f(i)ise f(i)bir değere sahiptir. (Aksi takdirde program durmaz.)

Yukarıdaki tanımda "hesaplanabilir" kelimesi "bir Turing makinesi kullanılarak hesaplanabilir" anlamına gelir.

Not ne olduğunu kural 110 ne de bitsel halkalı etiketi , bu tanım gereği Turing karmaşıklığındadır, gerekli giriş-çıkış yapısı yok çünkü. Biz define olarak Lambda hesabı sürece, tam Turing olduğunu Ive Oolmaya Kilise rakamları . (Bu Turing tamamlama değil biz alırsak Ive Ogenel olarak lambda ifadeleri olmak.)

Dilinizin bir uygulamasını sağlamanız gerekmediğini unutmayın, ancak isterseniz cevabınıza bir tane de ekleyebilirsiniz. Bununla birlikte, dili herhangi bir şekilde tanımlamak için uygulamaya güvenmemelisiniz - spesifikasyon kendi içinde eksiksiz olmalıdır ve spesifikasyon ve uygulama arasında bir çelişki varsa, bu uygulamada bir hata olarak ele alınmalıdır.


9
Üzgünüm çocuklar ama popülerlik-yarışma olan objektif kazanan ölçütü. Bir pop-con olmak konuyla ilgili bir zorluk çıkarmaz ve asla yapmaz. En son meta tartışma senden beş Eğer gerçekten üzerinde durmak hiçbir bacağı farklı olmasını tercih edebilirsiniz böylece rağmen, bu lehinde +27 öncesinde uzlaşma vardır. Bu soru üzerinde mutabık kalınan politikaya karşı kapalı olduğundan, yeniden açılmasını rica ediyorum.
Nathaniel

2
(WhatWizard'ın farklı bir nedenden dolayı kapandığını unutmayın.)
user202729

2
Lütfen yakın oyları "Kabul etmiyorum" veya "Bunu beğenmedim" düğmesi olarak kullanmayın. Site politikasını uygulamak için yakın oylar kullanılacaktır. Bir politikaya katılmıyorsanız, bunu metaya taşıyın; topluluk mutabakatı tarafından konuya getirilen zorlukları kapatmayın.
Mego

1
@Mego Bunu çok geniş olarak kapatmaya oy verdim, ancak bunun pop-cons için mevcut kurallarımız tarafından konu dışı olduğunu düşünüyorum. Popülerlik yarışmalarının "Ulaşılması gereken hedefin açık bir belirtimi" olmasını bekleriz, bu soru en yaratıcı şekilde do X'dur. Geçerli bir cevap olmaktan başka bir hedefin olmadığı ve pop-con etiketinin sadece açık tutmak için eklendiği açıktır.
Ad Hoc Garf Hunter

2
@WhatWizard ulaşılması gereken hedefe açık bir şekilde dönüyor olmak, bir hafta içinde çatlamayan açıklık ile değerlendirilir. Net değil mi?
Nathaniel

Yanıtlar:


10

Gözü kapalı Aritmetik

Başlamak için nispeten kolay bir dil, nispeten konuşma. (Bir dili ne kadar zorlayabileceğim konusunda sınırlar var çünkü bunu kanıtlamam gerekiyor Kendimi tamamladım!)

Bu dil için, program seti aşağıdaki "program" bölümünde verilen Gözü kapalı Aritmetik programlar kümesidir, giriş kümesi pozitif tamsayılar kümesidir ve çıktı kümesi tamsayılar kümesidir (sadece tüm değil, tüm küme pozitif tamsayılar).

Bu dil oldukça ilginçtir - belki de pratik olarak yararlıdır - çünkü az ya da çok toplam kontrol akışı eksikliğine sahiptir, tamamen göremediğiniz sayılardaki hesaplamalara dayanmaktadır. Bu, potansiyel olarak içindeki programları uygulamak için bir dil olarak yararlı kılar homomorfik şifreleme sistemleri .

Şartname

Gözü kapalı Aritmetik, aşağıdaki özelliklere sahip ezoterik bir programlama dilidir:

Veri depolama

Çalışan bir Gözü kapalı Aritmetik programının durumu, her biri bir tamsayıyı saklayabilen altı değişkenden oluşur. (Bu tamsayılar alabilirsiniz kadar büyük veya küçük hiçbir sınır yoktur;. Özellikle bunlar negatif gidebilir) değişkenler denir a, b, c, d, e, ve i .

Programının başlangıcında, aiçin edahil her biri 0 başlatılabilecektir ve vardır ikullanıcı girişi alınan bir pozitif tamsayıya başlatılır. (Herhangi bir girdi yoksa,i olarak başlatılır.)

Program yürütmeyi durdurursa (bu yalnızca sıfıra bölünme nedeniyle oluşabilir), ibölme denenmeden hemen önceki değer program çıktısı olarak kullanılır.

program

Gözü kapalı Aritmetik program, her biri aşağıdaki formlardan birine sahip olan komutların bir listesidir (burada v , herhangi bir değişken adıyla, her kullanıldığında potansiyel olarak farklı bir adla değiştirilebilir):

  • v = v + v
  • v = v - v
  • v = v * v
  • v = v / v

Not o komutların her işlenen şırası bir değişken gerektiğini unutmayın; bu dil değişmez tamsayıların kullanılmasına izin vermez.

Programın yürütülmesi, komutların her birini sırayla çalıştırarak ve ardından tekrar başa dönerek ve komutları sırayla tekrar çalıştırmaya devam ederek gerçekleştirilir, ad infinitum (veya programı sona erdiren sıfıra bölme girişimi olana kadar) .

Her komut, gösterimden beklediğinizle aynı anlambilime sahiptir; bu, en pratik programlama dilleri tarafından kullanılandan farklı değildir: komutta ölçülen ikinci ve üçüncü değişkenlerin değerleri alınır, aritmetik bir işlem (toplama / çıkarma) / multiply / divide komutun dört biçimi için sırasıyla uygulanır) ve sonuç değeri ilk değişkene kaydedilir. Buradaki bölüm, 0'a yuvarlanan tamsayı bölümüdür.

Program çıkışı dışında herhangi bir kontrol akışı yoktur; komutlar daima sıfıra bölünür (varsa) ve programı sonlandırıncaya kadar sırayla değişir. Özellikle, değişkenleri doğrudan okumanın bir yolu yoktur, sadece sonuçları diğer değişkenlere atanan değerleri etkileyen bir hesaplama kaynağı olarak kullanmak.


Cevabımın bir şey eksik olup olmadığını kontrol edebilir misiniz ?
user202729

@ user202729: (burada yorum yapmak için destek teknisyenim olmadığı için buraya yorum yapıyor) "Flip" ifadesinden "false ise move" ve "true olursa move" ifadesini taklit edemezsiniz. taşıdıktan sonra. Yani bununla başa çıkmak için başka bir yola ihtiyacınız olacak (örneğin, testleri tersine çevirmenin bir yolu zor olmalı). Daha da önemlisi, bu, durma davranışı açısından Turing-eksiksizlik kanıtıdır, ancak sorudaki tanım I / O da yapabilmenizi gerektirir, bu yüzden bunu yapabileceğinizi kanıtlamanız gerekir.
ais523

Umarım G / Ç kısmı (şimdi) tamam. Diğer konuya gelince, iç bile gerekli değilse, ara devletlerin tüm sorunu
çözdüğünü

@ user202729: hala tam olarak doğru değil (örn. soru, negatif sayılar verebilmenizi gerektirir ve aynı zamanda amacını değiştirmeniz gerekir, iböylece her zaman "durur" - durum numarası değişmez çıktının bir parçası olun), ancak yeterince güvenli ve kuralları yeterince açıklığa kavuşturarak tam bir çatlak elde edeceğiniz için bunu güvenli olarak işaretlemeyeceğim kadar yakın. Tekniklerle ilgili bu mücadeleyi kazanmak istemiyorum.
ais523

Bu, de.ioccc.org/years-spoiler.html#1992_buzzard.1'in kullandığı kısıtlamalara çok yakındır . Bu uygulama sabit boyut tamsayıları kullanır ve bu nedenle Turing-complete değildir ve bu, sahip olduğunuz değişkenlerin sayısında ciddi bir şekilde kısıtlanmıştır, ancak kanıtın yine de benzer olduğunu düşünüyorum.
b_jonas
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.