Chuck Norris vs Nhân viên bán hàng du lịch


19

Giới thiệu

Hầu như mọi người đều quen thuộc với Vấn đề nhân viên bán hàng du lịch (TSP). Nhiệm vụ là, đưa ra một danh sách các Nthành phố, tìm ra chu trình Hamilton tối thiểu để nói con đường ngắn nhất ghé thăm mỗi thành phố và quay lại vòng tròn bắt đầu. Đó không phải là những gì thách thức này là về. Thách thức này là triển khai giải pháp của Chuck Norris cho TSP:

Chuck Norris đã giải quyết vấn đề Nhân viên bán hàng du lịch O(1)kịp thời: chia nhân viên bán hàng thành N mảnh; đá từng mảnh đến một thành phố khác nhau

Thử thách

Để giải quyết TSP theo cách này, chúng tôi cần một Nhân viên bán hàng đủ bền, không né tránh những điều phù phiếm như mất tinh thần; một số thành phố để tham quan; một bộ sản phẩm để bán; một phương pháp cụ thể để phân chia; và một tính toán cho điểm.

Đặc điểm kỹ thuật

  • Các thành phố
    • N là số lượng trích dẫn Nhân viên bán hàng của chúng tôi sẽ truy cập
  • Người bán hàng
    • Chương trình chính hoặc chức năng
    • Viết bằng ngôn ngữ X
    • Với độ dài mod Nbằng0
  • Các sản phẩm
    • Tên đầy đủ của các thành phần trên Bảng tuần hoàn
    • Điều này bao gồm tên mới được chấp nhận của các yếu tố
  • Phân chia
    • Cắt nhân viên bán hàng thành Ncác miếng liên tục có độ dài bằng nhau
    • Mỗi phần nên là một chức năng hoặc chương trình hợp lệ trong ngôn ngữ X
  • Đầu ra
    • Khi được thực hiện, Nhân viên bán hàng sẽ xuất ra Chuck Norrisvà các mảnh được cắt sẽ tạo ra mỗi sản phẩm riêng biệt
    • Chỉ có thêm khoảng trắng ở cuối là chấp nhận được
  • Chấm điểm
    • Độ dài, Lcủa Người bán hàng tính theo byte chia cho số lượng thành phố N, bình phương.
    • Score = L/(N*N)
    • Điểm số nhỏ nhất sẽ thắng
    • Vui lòng bao gồm 3 số liệu quan trọng khi đăng điểm thập phân của bạn

Ví dụ

  1. Nhân viên bán hàng này đến thăm 3 thành phố N=3và nó có chiều dài là 9 L=9. Do đó, điểm cho câu trả lời này sẽ là S = 9 / (3 * 3) = 9/9 = 1.
    • Lưu ý rằng Nhân viên bán hàng và mỗi phần được cắt lát (trong đó có 3), tất cả phải là các chương trình hoặc chức năng hợp lệ trong cùng một ngôn ngữ.
Program      -> Output
-------         ------
aaaBBBccc    -> Chuck Norris

aaa          -> Helium
BBB          -> Iridium
ccc          -> Tennessine
  1. N=4L=20vì vậyS=20/16=1.25
Program                 -> Output
-------                    ------
aaaaaBBBBBcccccDDDDD    -> Chuck Norris

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

3
Được xây dựng như Mathicala ElementDatađược phép? (Tôi nghi ngờ nó sẽ tiết kiệm được nhiều, nhưng tôi không biết.)
Martin Ender

Là viết hoa của đầu ra quan trọng?
Martin Ender

1
@MartinEnder ^^ có ^ có
tuyến

6
Bất kỳ cử tri thân cận nào có thể giải thích phần nào họ thực sự thấy không rõ ràng? (Tôi biết đó không chỉ là hai câu hỏi của mình, mà tôi thậm chí không nghĩ cần phải giải quyết rõ ràng trong thử thách, bởi vì đã có phiếu bầu gần khi tôi đăng chúng.)
Martin Ender

2
Hoàn toàn đồng ý với @MartinEnder. Nếu bạn không thích thử thách, hãy thử một thử thách khác.
edc65

Câu trả lời:


11

CJam, L = 1482, N = 114, điểm 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"?

Hãy thử trực tuyến!

Mỗi chương trình dài 13 byte. Ở đây chúng được chia thành các dòng riêng lẻ:

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

Các yếu tố còn thiếu là Darmstadtium, Praseodymium, Protactinium và Rutherfordium dài 12 hoặc 13 ký tự, điều đó có nghĩa là tôi không thể in chúng thành 13 ký tự.

Ý tưởng là một vài chương trình đầu tiên, in các phần tử có tên ngắn sử dụng các ký tự không liên quan của chúng để xây dựng chuỗi Chuck Norritrong biến L, không ảnh hưởng đến đầu ra khi được sử dụng riêng. Chương trình cuối cùng sau đó kiểm tra xem có bất cứ thứ gì đã có trên ngăn xếp hay không và sử dụng nó để chọn giữa L(cộng s) và Xenon.

Một vài byte bổ sung được lưu bằng cách sử dụng ký tự mà chúng ta vừa thêm vào Lnhư một phần của tên thành phần, đặc biệt cho Carbon, Nickel, Coppe rvà Silve r.


2

Con trăn, L = 2596, N = 118, Điểm = 0.186

Độ dài của mỗi lát là 22 do đó làm cho nó khá dài.

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  "

Đây là Nhân viên bán hàng sau khi cắt và thái hạt lựu:

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  "

nhập mô tả hình ảnh ở đây


Cập nhật

  • [16-09-08] Sublime đã thêm một khoảng trắng khi tham gia vào một dòng kết thúc bằng một ký tự nhận xét
  • [16-09-08] Tạo mỗi lát dài 22 ký tự và thêm gif

Tôi khá quen thuộc với Python, lambda:"Actinium";print""Actinium xuất ra như thế nào ? Đây có phải là đặc biệt của Python 3?
Linus

@Linus Từ khóa lambda tạo ra một hàm ẩn danh không có tham số và trả về Actinium. Việc print ""này không làm gì hữu ích sau khi Nhân viên bán hàng bị mất.
Phi tuyến
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.