Trong ngôn ngữ Nim , các quy tắc phân biệt định danh thoải mái hơn một chút so với hầu hết các ngôn ngữ khác. Hai định danh tương đương hoặc địa chỉ cùng một biến nếu chúng tuân theo các quy tắc sau:
- ký tự đầu tiên của cả hai đều giống nhau (phân biệt chữ hoa chữ thường)
- cả hai chuỗi đều giống nhau (trường hợp trong nhạy cảm) sau khi loại bỏ tất cả các trường trong những nhân vật
-
và_
Thử thách
Viết chương trình / hàm lấy hai chuỗi đại diện cho mã định danh Nim và đưa ra giá trị trung thực hoặc falsey dựa trên việc chúng có tương đương với các quy tắc ở trên hay không.
Thông số kỹ thuật
- Quy tắc I / O tiêu chuẩn được áp dụng .
- Sơ hở chuẩn bị cấm .
- Các chuỗi sẽ chỉ chứa các bản in ASCII . Bạn không cần kiểm tra xem đó có phải là định danh hợp lệ không.
- Các chuỗi có thể được lấy làm hai đầu vào riêng biệt, danh sách các chuỗi, v.v. (bạn biết cách khoan)
- Chuỗi rỗng không cần phải xử lý.
- Đầu ra phải phù hợp với cả giá trị trung thực và giá trị falsey.
- Thách thức này không phải là tìm ra cách tiếp cận ngắn nhất trong tất cả các ngôn ngữ, mà là tìm cách tiếp cận ngắn nhất trong mỗi ngôn ngữ .
- Mã của bạn sẽ được ghi theo byte , thường là trong mã hóa UTF-8, trừ khi được quy định khác.
- Các chức năng tích hợp thực hiện nhiệm vụ này được cho phép nhưng bao gồm giải pháp không dựa vào tích hợp được khuyến khích.
- Giải thích, ngay cả đối với các ngôn ngữ "thực tế", được khuyến khích .
Các trường hợp thử nghiệm
Input Output
count, Count falsey
lookMaNoSeparator, answer falsey
_test, test falsey
test, tset falsey
aVariableName, a_variable_name truthy
numbers_are_cool123, numbersAreCool123 truthy
symbolsAre_too>_>, symbols_areTOO>> truthy
Thực hiện tham chiếu Ungolfed
Điều này được viết bằng Nim.
import strutils, re
proc sameIdentifier(a, b: string): bool =
a[0] == b[0] and
a.replace(re"_|–", "").toLower == b.replace(re"_|–", "").toLower
f("test", "tset")
, vì tôi nghĩ rằng một câu trả lời mang lại một kết quả bất ngờ cho nó.
>
không?
f("_test", "test")
.