Chơi scrabble với bảng tuần hoàn


13

Bạn đã có một bộ gạch với các biểu tượng từ bảng tuần hoàn. Mỗi biểu tượng xuất hiện một lần. Bạn đang nghĩ ra những từ để làm nhưng bạn muốn biết liệu nó có thể hay không.

Các thách thức

Viết chương trình bằng ngôn ngữ yêu thích của bạn sẽ lấy một chuỗi làm tham số đầu vào. Bạn có thể cho rằng đầu vào không phải là null, không có khoảng trắng và bao gồm các ký tự ASCII.

Chương trình của bạn nên lấy chuỗi đó và đưa ra một giá trị trung thực nếu từ đó có thể tạo thành các ký hiệu từ bảng các phần tử định kỳ và giá trị falsey nếu từ đó không thể.

Để làm cho thử thách này khó khăn hơn, bạn không được sử dụng biểu tượng hai lần. Vì vậy, nếu bạn sử dụng Nitơ, Nbạn không thể sử dụng Nlại trong cùng một từ.

Quy tắc

Sơ hở tiêu chuẩn không được phép. Bạn có thể sử dụng các ký hiệu từ các yếu tố 1-118 (Hydrogen đến Ununoctium). Bạn có thể tìm thấy một danh sách tất cả các yếu tố ở đây . Bạn có thể đọc danh sách các ký hiệu từ một tệp hoặc các đối số đầu vào nếu bạn muốn.

Các trường hợp thử nghiệm:

Laos - true (LaOs)
Amputation - true (AmPuTaTiON)
Heinous - true (HeINoUS)
Hypothalamus - true (HYPoThAlAmUS)
Singapore - true (SiNGaPoRe)
Brainfuck - true (BRaInFUCK)
Candycane - false

Đây là một thử thách golf mã, chiến thắng mã ngắn nhất.

TRƯỚC KHI BẠN ĐÓNG KHI BỊ L DUI: Mặc dù điều này có vẻ giống với thử thách này , tôi cảm thấy nó khác bởi vì nó không phải là 'Tạo danh sách tất cả các từ có thể từ bảng tuần hoàn', đó là 'Nhập vào tùy ý và xác định xem nó có thể được thực hiện từ bảng tuần hoàn '


2
cái này liên quan chặt chẽ hơn nhưng lại bị đóng như một bản sao của thử thách bạn liên kết. Tôi nghĩ rằng thực tế bạn chỉ có thể sử dụng một biểu tượng một lần là sự khác biệt lớn nhất giữa các thử thách. Về mặt chơi golf, tôi nghi ngờ có một cách tốt hơn là vũ phu buộc tất cả các từ có thể và kiểm tra xem đầu vào có nằm trong số đó không.
Martin Ender

1
"Bạn có thể đọc danh sách các ký hiệu từ một tệp nếu bạn muốn." - làm thế nào để chúng ta đếm nó? Là kích thước của tập tin được thêm vào chiều dài mã? Hoặc chúng ta có thể sử dụng nó miễn phí?
Qwertiy

2
Chúng ta có thể lấy danh sách các yếu tố làm đối số cho chương trình không?
Emigna

1
@Qwertiy, kích thước của tệp là miễn phí, nhưng các byte để đọc nó thì không.
JamesENL

9
Boron, Radium, Iốt, Nitơ, Flo, Urani, Carbon, Kali.
Neil

Câu trả lời:


3

05AB1E, 16 byte

œvyŒ€J})˜Ùvy²Q}O

Giải thích

œv                # for each permutation of the list of elements
  yŒ              # get all sublist of elements
    €J            # join as strings to form the words possible to spell
      })˜Ù        # convert to list of unique spellable strings
          vy²Q}   # compare each word with input word
               O  # sum giving 1 if the word is found, else 0

Cảnh báo: Vô cùng chậm. Tôi khuyên bạn nên thử nghiệm trên một tập hợp con các phần tử nhỏ hơn nhiều trong trình thông dịch trực tuyến.

Đưa danh sách các yếu tố làm đối số đầu tiên.
Lấy từ để kiểm tra như đối số thứ hai.
Trả về 1 cho đúng và 0 cho sai.

Dùng thử trực tuyến trên một tập hợp nhỏ các yếu tố


3

Brachylog , 7 byte

spc~@l.

Gọi với danh sách các ký hiệu (tất cả chữ thường) là Đầu vào và từ là Đầu ra, vd run_from_atom('spc~@l.', ["he":"n":"o":"li"], "Nohe")..

Cảnh báo: điều này cực kỳ không hiệu quả khi tất cả các biểu tượng đều nằm trong danh sách.

Giải trình

spc        Create a string from a permutation of a subset of the Input
   ~@l.    This string can unify with the lowercase version of the Output

4
@Downvoter quan tâm giải thích?
Gây tử vong vào

1

JavaScript (Firefox 48 trở về trước), 103 byte

f=(w,e=`
H
He
... (list of elements not included in the byte count) ...
Uus
Uuo
`)=>!w||e.match(/\w+/g).some(s=>!w.search(s,`i`)&&f(w.slice(s.length),e.replace(`
${s}
`,`
`)))

1

Pyth - 13 byte

Chỉ cần kiểm tra nếu bất kỳ phân vùng của đầu vào hạ cấp có tất cả các phần trong bảng tuần hoàn.

sm.A}RQd./rzZ

Trên thiết bị di động, vì vậy không thể thiết lập một bộ thử nghiệm thực tế, nhưng hãy thử .


1
Bạn đã viết cái này trên điện thoại!?
JamesENL

Điều này không đảm bảo một yếu tố không được sử dụng nhiều lần. Thí dụ.
PurkkaKoodari

1

Bình thường, 11 byte

s}RySQSM./z

Hãy thử trực tuyến. Bộ thử nghiệm.

Viết trên điện thoại của tôi, nhưng nên làm việc. Rất chậm đối với một số lượng lớn các phần tử hoặc một chuỗi dài.

Giải trình

  • Lấy tất cả các phân vùng ( ./) của đầu vào ( z).
  • Sắp xếp ( S) mỗi phân vùng ( M).
  • Đối với mỗi phân vùng ( R), hãy xem nếu nó nằm trong ( }) danh sách tất cả các tập hợp con ( y) của Sbảng tuần hoàn được sắp xếp ( ) được cung cấp dưới dạng đầu vào ( Q).
  • Sum ( s) danh sách kết quả của booleans.
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.