척 노리스 및 여행 세일즈맨


19

소개

거의 모든 사람이 TSP ( Traveling Salesman Problem )에 익숙합니다 . 과제는 N도시 목록이 주어지면 각 도시를 방문하여 처음으로 다시 돌아 오는 가장 짧은 경로를 말하는 최소 해밀턴 사이클 을 찾는 것 입니다. 그것은이 도전에 관한 것이 아닙니다. 이 과제는 TSP에 척 노리스의 솔루션 을 구현하는 것입니다 .

척 노리스는 O(1)적시에 Traveling Salesman 문제를 해결했습니다. Salesman 을 N 조각으로 나누십시오. 각 조각을 다른 도시로 걷어차십시오.

도전

이러한 방식으로 TSP를 해결하려면 해체와 같은 경박함에서 벗어나지 않는 충분히 내구성있는 세일즈맨이 필요합니다. 방문 할 여러 도시; 판매 할 제품 세트; 분리를위한 구체적인 방법; 그리고 점수 계산.

사양

  • 도시들
    • N 세일즈맨이 방문 할 인용 횟수입니다.
  • 판매원
    • 주요 프로그램 또는 기능
    • 언어로 작성 X
    • 길이가 mod 인 N경우0
  • 제품
    • 주기율표 에서 원소 의 전체 이름
    • 여기에는 새로 허용되는 요소 이름 이 포함됩니다
  • 절단
    • 세일즈맨을 N동일한 길이의 연속 조각 으로 슬라이스
    • 각 부분은 언어에서 유효한 기능 또는 프로그램이어야합니다 X
  • 산출
    • 세일즈맨이 실행되면 Chuck Norris슬라이스 된 조각이 각각 고유 한 제품을 출력해야합니다.
    • 여분의 후행 공백 만 허용됩니다.
  • 채점
    • L세일즈맨 의 길이 ( 바이트)를 도시 수 ( N제곱)로 나눈 값입니다.
    • Score = L/(N*N)
    • 가장 작은 점수 승리
    • 소수 점수를 게시 할 때 유효 숫자 3 자리를 포함하십시오

  1. 이 세일즈맨은 3 개의 도시를 방문 N=3하며 길이는 9 L=9입니다. 따라서이 답변의 점수는입니다 S = 9 / (3 * 3) = 9/9 = 1.
    • 세일즈맨과 각각의 슬라이스 조각 (3 개가 있음)은 모두 동일한 언어의 유효한 프로그램 또는 기능이어야합니다.
Program      -> Output
-------         ------
aaaBBBccc    -> Chuck Norris

aaa          -> Helium
BBB          -> Iridium
ccc          -> Tennessine
  1. N=4그리고 L=20이렇게S=20/16=1.25
Program                 -> Output
-------                    ------
aaaaaBBBBBcccccDDDDD    -> Chuck Norris

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

3
Mathematica와 같은 빌트인이 ElementData허용됩니까? (많은 비용이 절약 될지 의심하지만 잘 모르겠습니다.)
Martin Ender

산출물의 대문자 표기가 중요합니까?
Martin Ender

1
@MartinEnder ^^ 예 ^ 예
NonlinearFruit

6
가까운 유권자들이 실제로 불분명 한 부분을 설명 할 수 있습니까? (내가 두 가지 질문 만 할 수는 없다는 것을 알고 있습니다.이 질문을 게시 할 때 이미 투표가 이미 완료 되었기 때문에 도전 과제에서 명시 적으로 해결해야 할 필요조차 없다고 생각합니다.)
Martin Ender

2
@MartinEnder에 전적으로 동의합니다. 도전이 마음에 들지 않으면 다른 도전을 시도하십시오.
edc65

답변:


11

CJam, L = 1482, N = 114, 점수 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"?

온라인으로 사용해보십시오!

각 프로그램의 길이는 13 바이트입니다. 여기서는 개별 라인으로 나뉩니다.

'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"?

누락 된 요소는 Darmstadtium, Praseodymium, Protactinium 및 Rutherfordium이며 길이가 12 자 또는 13 자이므로 13 자로 인쇄 할 수 없습니다.

아이디어는 짧은 이름을 가진 요소를 인쇄하는 처음 몇 개의 프로그램은 외부 문자를 사용 Chuck Norri하여 변수에 문자열 을 작성하여 L자체적으로 사용될 때 출력에 영향을 미치지 않는다는 것입니다. 그런 다음 최종 프로그램은 스택에 이미있는 것이 있는지 확인하고이를 사용하여 L(plus s) 및 Xenon.

방금 추가 한 문자를 L요소 이름의 일부로, 특히 Carbon, Nickel, Coppe r및 Silve와 같이 몇 개의 추가 바이트가 저장됩니다 r.


2

파이썬, L = 2596, N = 118, 점수 = 0.186

각 슬라이스의 길이는 22 이므로이 길이가 꽤 길어집니다.

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  "

슬라이싱 및 다이 싱 후 세일즈맨은 다음과 같습니다.

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  "

여기에 이미지 설명을 입력하십시오


최신 정보

  • [16-09-08] 숭고한 설명 문자로 끝나는 줄에 연결할 때 공간이 추가되었습니다.
  • [16-09-08] 각 슬라이스를 22 자 길이로 만들고 gif를 추가했습니다.

나는 파이썬에 대해 잘 알고 있습니다. 어떻게 lambda:"Actinium";print""Actinium을 출력합니까? 이것은 파이썬 3에만 해당됩니까?
Linus

@Linus 람다 키워드는 매개 변수를 사용하지 않고 반환하는 익명 함수를 만듭니다 Actinium. 는 print ""세일즈맨이 사지가 절단 된 후 유용한 아무것도하지 않습니다.
NonlinearFruit
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.