Chuck Norris ve Gezgin Satıcı


19

Giriş

Neredeyse herkes Gezgin Satıcı Sorunu (TSP) hakkında bilgi sahibi. Görev, Nşehirlerin bir listesi verildiğinde , her bir şehri ziyaret eden ve başlangıca tam daire halinde gelen en kısa yolu söylemek olan minimum Hamilton döngüsünü bulmaktır . Bu zorluğun konusu bu değil. Bu zorluk Chuck Norris'in çözümünü TSP'ye uygulamaktır:

Chuck Norris, Gezgin O(1)Satıcı sorununu zamanında çözdü : satıcıyı N parçaya böl; her parçayı farklı bir şehre tekmelemek.

Meydan okuma

TSP'yi bu şekilde çözmek için, parçalanma gibi frivolitelerden uzak durmayacak kadar dayanıklı bir Satıcıya ihtiyacımız var; ziyaret edilecek birkaç şehir; satılacak bir dizi ürün; parçalanma için somut bir yöntem; ve puanlama için bir hesaplama.

Şartname

  • Şehirler
    • N Satıcımızın ziyaret edeceği atıf sayısıdır
  • Satış elemanı
    • Ana program veya işlev
    • Dilde yazılmış X
    • Uzunluk modu Neşittir0
  • Ürün:% s
    • Periyodik Tablodaki elemanların tam isimleri
    • Bu, öğelerin yeni kabul edilen adlarını içerir
  • parçalanma
    • Satıcıyı Neşit uzunlukta sürekli parçalara dilimleme
    • Her parça geçerli bir işlev veya dilde olmalıdır. X
  • Çıktı
    • Yürütüldüğünde Satıcı çıktı almalı Chuck Norrisve dilimlenmiş parçaların her biri ayrı bir ürün vermelidir
    • Sadece ekstra sondaki beyaz alan kabul edilebilir
  • puanlama
    • LSatıcının bayt cinsinden uzunluğunun şehir sayısına bölünmesiyle elde edilen Nkare kare.
    • Score = L/(N*N)
    • En düşük puan kazanır
    • Ondalık puanınızı gönderirken lütfen 3 önemli rakam ekleyin

Örnekler

  1. Bu Satıcı 3 şehri ziyaret etti N=3 ve uzunluğu 9'dur L=9. Böylece bu cevabın puanıS = 9 / (3 * 3) = 9/9 = 1 .
    • Satıcının ve dilimlenmiş her parçasının (3'ü olan) hepsinin aynı dilde geçerli programlar veya işlevler olması gerektiğini unutmayın.
Program      -> Output
-------         ------
aaaBBBccc    -> Chuck Norris

aaa          -> Helium
BBB          -> Iridium
ccc          -> Tennessine
  1. N=4ve L=20böyleceS=20/16=1.25
Program                 -> Output
-------                    ------
aaaaaBBBBBcccccDDDDD    -> Chuck Norris

aaaaa                   -> Hydrogen
BBBBB                   -> Cadmium
ccccc                   -> Mercury
DDDDD                   -> Iron

3
Mathematica gibi yerleşik yapılara ElementDataizin veriliyor mu? (Çok tasarruf edeceğinden şüpheliyim, ama bilmiyorum.)
Martin Ender

Çıktıların aktifleştirilmesi önemli mi?
Martin Ender

1
@MartinEnder ^^ yes ^ yes
NonlinearFruit

6
Yakın seçmenlerden herhangi biri hangi kısmı gerçekten belirsiz bulduklarını açıklayabilir mi? (Bu sadece iki sorum olamayacağını biliyorum, ki meydan okumada açıkça ele alınması gerektiğini bile düşünmüyorum, çünkü onları gönderdiğimde zaten yakın oylar vardı.)
Martin Ender

2
@MartinEnder ile tamamen aynı fikirde. Eğer bir meydan okumayı sevmiyorsanız, bir başkasını deneyin.
edc65

Yanıtlar:


11

CJam, L = 1482, N = 114, skor 0.114

'C:L"arbon"  L'h+:L;"Gold"L'u+:L;"Iron"L'c+:L;"Lead"L'k+:L;"Neon"LS+:L;"Argon"L'N+:L"ickel"L'o+:L;"Zinc""Coppe"L'r+:L"Silve"L'r+:LL'i+:L;"Tin" "Boron"      "Radon"      "Barium"     "Cerium"     "Cesium"     "Cobalt"     "Curium"     "Erbium"     "Helium"     "Indium"     "Iodine"     "Osmium"     "Oxygen"     "Radium"     "Sodium"     "Sulfur"     "Arsenic"    "Bismuth"    "Bohrium"    "Bromine"    "Cadmium"    "Calcium"    "Dubnium"    "Fermium"    "Gallium"    "Hafnium"    "Hassium"    "Holmium"    "Iridium"    "Krypton"    "Lithium"    "Mercury"    "Niobium"    "Rhenium"    "Rhodium"    "Silicon"    "Terbium"    "Thorium"    "Thulium"    "Uranium"    "Yttrium"    "Actinium"   "Aluminum"   "Antimony"   "Astatine"   "Chlorine"   "Chromium"   "Europium"   "Fluorine"   "Francium"   "Hydrogen"   "Lutetium"   "Nihonium"   "Nitrogen"   "Nobelium"   "Platinum"   "Polonium"   "Rubidium"   "Samarium"   "Scandium"   "Selenium"   "Tantalum"   "Thallium"   "Titanium"   "Tungsten"   "Vanadium"   "Americium"  "Berkelium"  "Beryllium"  "Flerovium"  "Germanium"  "Lanthanum"  "Magnesium"  "Manganese"  "Moscovium"  "Neodymium"  "Neptunium"  "Oganesson"  "Palladium"  "Plutonium"  "Potassium"  "Ruthenium"  "Strontium"  "Tellurium"  "Ytterbium"  "Zirconium"  "Dysprosium" "Gadolinium" "Lawrencium" "Meitnerium" "Molybdenum" "Phosphorus" "Promethium" "Seaborgium" "Technetium" "Tennessine" "Californium""Copernicium""Einsteinium""Livermorium""Mendelevium""Roentgenium"]L's+"Xenon"?

Çevrimiçi deneyin!

Her program 13 bayt uzunluğundadır. Burada bireysel hatlara ayrılırlar:

'C:L"arbon"  
L'h+:L;"Gold"
L'u+:L;"Iron"
L'c+:L;"Lead"
L'k+:L;"Neon"
LS+:L;"Argon"
L'N+:L"ickel"
L'o+:L;"Zinc"
"Coppe"L'r+:L
"Silve"L'r+:L
L'i+:L;"Tin" 
"Boron"      
"Radon"      
"Barium"     
"Cerium"     
"Cesium"     
"Cobalt"     
"Curium"     
"Erbium"     
"Helium"     
"Indium"     
"Iodine"     
"Osmium"     
"Oxygen"     
"Radium"     
"Sodium"     
"Sulfur"     
"Arsenic"    
"Bismuth"    
"Bohrium"    
"Bromine"    
"Cadmium"    
"Calcium"    
"Dubnium"    
"Fermium"    
"Gallium"    
"Hafnium"    
"Hassium"    
"Holmium"    
"Iridium"    
"Krypton"    
"Lithium"    
"Mercury"    
"Niobium"    
"Rhenium"    
"Rhodium"    
"Silicon"    
"Terbium"    
"Thorium"    
"Thulium"    
"Uranium"    
"Yttrium"    
"Actinium"   
"Aluminum"   
"Antimony"   
"Astatine"   
"Chlorine"   
"Chromium"   
"Europium"   
"Fluorine"   
"Francium"   
"Hydrogen"   
"Lutetium"   
"Nihonium"   
"Nitrogen"   
"Nobelium"   
"Platinum"   
"Polonium"   
"Rubidium"   
"Samarium"   
"Scandium"   
"Selenium"   
"Tantalum"   
"Thallium"   
"Titanium"   
"Tungsten"   
"Vanadium"   
"Americium"  
"Berkelium"  
"Beryllium"  
"Flerovium"  
"Germanium"  
"Lanthanum"  
"Magnesium"  
"Manganese"  
"Moscovium"  
"Neodymium"  
"Neptunium"  
"Oganesson"  
"Palladium"  
"Plutonium"  
"Potassium"  
"Ruthenium"  
"Strontium"  
"Tellurium"  
"Ytterbium"  
"Zirconium"  
"Dysprosium" 
"Gadolinium" 
"Lawrencium" 
"Meitnerium" 
"Molybdenum" 
"Phosphorus" 
"Promethium" 
"Seaborgium" 
"Technetium" 
"Tennessine" 
"Californium"
"Copernicium"
"Einsteinium"
"Livermorium"
"Mendelevium"
"Roentgenium"
]L's+"Xenon"?

Eksik elemanlar 12 veya 13 karakter uzunluğunda Darmstadtium, Praseodymium, Protactinium ve Rutherfordium, yani her biri 13 karakterde yazdıramıyorum.

Fikir, kısa isimlerle öğeleri basan ilk birkaç programın, kendi Chuck Norriiçinde Lkullanıldığında çıktıyı etkilemeyen değişkeni dizeyi oluşturmak için yabancı karakterlerini kullanmasıdır . Son program daha sonra yığında zaten bir şey olup olmadığını kontrol eder ve L(artı s) ile arasında seçim yapmak için kullanır Xenon.

LÖzellikle Carbon, Nickel, Coppe rve Silve için öğe adının bir parçası olarak eklediğimiz karakter kullanılarak birkaç ek bayt kaydedilir r.


2

Python, L = 2596, N = 118, Puan = 0.186

Her dilimin uzunluğudur 22 bu oldukça uzun yapar böylece.

lambda:"Gold"; print"""";print "Carbon     "print   "Thorium     "print   "Curium      "print "Calcium       "print "Nickel        "print      "Zinc     "print    "Neon       "print "Boron         "print   "Iron        "print  "Cerium       "print "Barium        "print "Caesium       """[9::22];lambda:"Tin"[0];lambda:"Lead    "#print"Argon          "print"Radon          "print"Xenon          "print"Erbium         "print"Cobalt         "print"Copper         "print"Helium         "print"Indium         "print"Iodine         "print"Osmium         "print"Oxygen         "print"Radium         "print"Silver         "print"Sodium         "print"Sulfur         "print"Arsenic        "print"Bismuth        "print"Bohrium        "print"Bromine        "print"Cadmium        "print"Dubnium        "print"Fermium        "print"Gallium        "print"Hafnium        "print"Hassium        "print"Holmium        "print"Iridium        "print"Krypton        "print"Lithium        "print"Mercury        "print"Niobium        "print"Rhenium        "print"Rhodium        "print"Silicon        "print"Terbium        "print"Thulium        "print"Uranium        "print"Yttrium        "print"Actinium       "print"Antimony       "print"Astatine       "print"Chlorine       "print"Chromium       "print"Europium       "print"Fluorine       "print"Francium       "print"Hydrogen       "print"Lutetium       "print"Nitrogen       "print"Nobelium       "print"Platinum       "print"Polonium       "print"Rubidium       "print"Samarium       "print"Scandium       "print"Selenium       "print"Tantalum       "print"Thallium       "print"Titanium       "print"Tungsten       "print"Vanadium       "print"Nihonium       "print"Aluminium      "print"Americium      "print"Berkelium      "print"Beryllium      "print"Flerovium      "print"Germanium      "print"Lanthanum      "print"Magnesium      "print"Manganese      "print"Neodymium      "print"Neptunium      "print"Palladium      "print"Plutonium      "print"Potassium      "print"Ruthenium      "print"Strontium      "print"Tellurium      "print"Ytterbium      "print"Zirconium      "print"Moscovium      "print"Oganesson      "print"Dysprosium     "print"Gadolinium     "print"Lawrencium     "print"Meitnerium     "print"Molybdenum     "print"Phosphorus     "print"Promethium     "print"Seaborgium     "print"Technetium     "print"Tennessine     "print"Californium    "print"Copernicium    "print"Einsteinium    "print"Livermorium    "print"Mendelevium    "print"Roentgenium    "print"Darmstadtium   "print"Praseodymium   "print"Protactinium   "print"Rutherfordium  "

İşte dilimleme ve küp küp kesmeden sonra Satıcı:

lambda:"Gold"; print""  # <-- This is a function
"";print "Carbon     "
print   "Thorium     "
print   "Curium      "
print "Calcium       "
print "Nickel        "
print      "Zinc     "
print    "Neon       "
print "Boron         "
print   "Iron        "
print  "Cerium       "
print "Barium        "
print "Caesium       "
""[9::22];lambda:"Tin"  # <-- This is a function and the choke point
[0];lambda:"Lead    "#  # <-- This is a function
print"Argon          "
print"Radon          "
print"Xenon          "
print"Erbium         "
print"Cobalt         "
print"Copper         "
print"Helium         "
print"Indium         "
print"Iodine         "
print"Osmium         "
print"Oxygen         "
print"Radium         "
print"Silver         "
print"Sodium         "
print"Sulfur         "
print"Arsenic        "
print"Bismuth        "
print"Bohrium        "
print"Bromine        "
print"Cadmium        "
print"Dubnium        "
print"Fermium        "
print"Gallium        "
print"Hafnium        "
print"Hassium        "
print"Holmium        "
print"Iridium        "
print"Krypton        "
print"Lithium        "
print"Mercury        "
print"Niobium        "
print"Rhenium        "
print"Rhodium        "
print"Silicon        "
print"Terbium        "
print"Thulium        "
print"Uranium        "
print"Yttrium        "
print"Actinium       "
print"Antimony       "
print"Astatine       "
print"Chlorine       "
print"Chromium       "
print"Europium       "
print"Fluorine       "
print"Francium       "
print"Hydrogen       "
print"Lutetium       "
print"Nitrogen       "
print"Nobelium       "
print"Platinum       "
print"Polonium       "
print"Rubidium       "
print"Samarium       "
print"Scandium       "
print"Selenium       "
print"Tantalum       "
print"Thallium       "
print"Titanium       "
print"Tungsten       "
print"Vanadium       "
print"Nihonium       "
print"Aluminium      "
print"Americium      "
print"Berkelium      "
print"Beryllium      "
print"Flerovium      "
print"Germanium      "
print"Lanthanum      "
print"Magnesium      "
print"Manganese      "
print"Neodymium      "
print"Neptunium      "
print"Palladium      "
print"Plutonium      "
print"Potassium      "
print"Ruthenium      "
print"Strontium      "
print"Tellurium      "
print"Ytterbium      "
print"Zirconium      "
print"Moscovium      "
print"Oganesson      "
print"Dysprosium     "
print"Gadolinium     "
print"Lawrencium     "
print"Meitnerium     "
print"Molybdenum     "
print"Phosphorus     "
print"Promethium     "
print"Seaborgium     "
print"Technetium     "
print"Tennessine     "
print"Californium    "
print"Copernicium    "
print"Einsteinium    "
print"Livermorium    "
print"Mendelevium    "
print"Roentgenium    "
print"Darmstadtium   "
print"Praseodymium   "
print"Protactinium   "
print"Rutherfordium  "

resim açıklamasını buraya girin


Güncelleme

  • [16-09-08] Sublime, bir yorum karakteriyle biten bir satıra katılırken fazladan bir boşluk ekledi
  • [16-09-08] Her dilimi 22 karakter uzunluğunda ve gif ekledi

Python'da oldukça bilgim var, lambda:"Actinium";print""Actinium çıktısı nasıl ? Bu Python 3'e özgü mü?
Linus

@Linus Lambda anahtar sözcüğü, parametre almayan ve geri dönen anonim bir işlev oluşturur Actinium. print ""Satıcı parçalanmış sonra yararlı bir şey yapmaz.
NonlinearFruit
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.