Tiền tố Palindromes


8

Viết chương trình hoặc hàm lấy N , và S và đưa ra số lượng palindrome có độ dài S mà bạn có thể xây dựng bằng cách sử dụng bảng chữ cái có kích thước N sao cho bất kỳ tiền tố nào có kích thước giữa 2S-1 không phải là một bảng màu.

Ví dụ: nếu N2S5

Các palindromes hợp lệ sẽ là

01110
10001

Và do đó, câu trả lời sẽ là 2

Đây là vì vậy câu trả lời sẽ được tính theo byte dựa trên độ dài của chúng với ít byte hơn.


2
Chào mừng đến với PPCG! Mặc dù có định dạng laconic, nhưng điều này có vẻ như là một thách thức hợp lệ - với điều kiện đó không phải là một bản sao cũng không phải là một câu hỏi được chọn ở một nơi khác mà không được phép. Ít nhất, bạn cần thêm một tiêu chí chiến thắng chính khách quan, chẳng hạn như chơi gôn . Tôi cũng khuyên bạn nên thêm một số ví dụ và trường hợp thử nghiệm.
Arnauld

@Arnauld Chúng tôi có thể thay đổi một câu hỏi ngoài chủ đề thành một thách thức hợp lệ (ais523 đã làm điều đó một vài lần) nhưng trong trường hợp đó rõ ràng đó không phải là điều OP muốn. Dù sao nó cũng không đau.
dùng202729

kết quả không phải là vô hạn? cho N> = 2: 01111111111111111111111111..0là một bảng màu sao cho bất kỳ tiền tố nào không phải là một bảng màu
Nahuel Fouilleul

@NahuelFouilleul có chiều dài S.
user202729

1
@ user77149 Nếu bạn hỏi nó ở đây, bạn sẽ nhận được câu trả lời như "Jelly, 15 byte: Dùng thử trực tuyến! "
user202729

Câu trả lời:



1

Bình thường , 16 byte

lf!tit_IM._T2^SE

Hãy thử nó ở đây!

Câu trả lời của tôi đồng ý với kết quả của Dennis , thay vì câu trả lời của Haskell và Python.

Làm thế nào nó hoạt động

lf! tit_IM._T2 ^ SE | Chương trình đầy đủ.

              SE | Lấy đầu vào thứ hai (E), tạo một phạm vi số nguyên từ 1 ... E.
             ^ | Và lấy Qth Cartesian Power, trong đó Q là đầu vào đầu tiên.
 f | Lọc theo một điều kiện sử dụng T làm biến.
         ._T | Lấy tất cả các tiền tố của T ...
      _IM | Và đối với mỗi tiền tố, hãy kiểm tra xem chúng có bất biến khi đảo ngược không.
     t | Lấy đuôi (loại bỏ phần tử đầu tiên).
    tôi 2 | Chuyển đổi từ cơ sở 2 sang số nguyên.
  ! Suy giảm, phủ định. Lưu ý rằng trong số các số nguyên, chỉ có 0 là sai.
l | Lấy chiều dài của danh sách được lọc.

1

Husk , 19 byte

Lf(=1ḋ↔mS=↔‼hU¡h)πŀ

Hãy thử trực tuyến hoặc xem các giải pháp!

Giải trình

Lf(=1ḋ↔mS=↔‼hU¡h)πŀ  -- takes two arguments N S, example: 2 4
                  ŀ  -- range [0..N-1]: [0,1]
                 π   -- all strings of length S: [[[0,0,0,0],[0,0,0,1],…,[1,1,1,1]]
 f(             )    -- filter with the following predicate (example with [0,1,1,0]):
              ¡h     --   infinitely times take the head & accumulate in list: [[0,1,1,0],[0,1,1],[0,1],[0],[],[],…
             U       --   only keep longest prefix with unique elements: [[0,1,1,0],[0,1,1],[0,1],[0],[]]
           ‼h        --   get rid of last two (apply twice head): [[0,1,1,0],[0,1,1],[0,1]]
       m             --   map the following
        S=           --     is itself equal to..
          ↔          --     .. itself reversed?
                     --   ↳ [1,0,0]
      ↔              --   reverse: [0,0,1]
     ḋ               --   convert from binary: 1
   =1                --   is it equal to 1: 1
                     -- ↳ [[1,0,0,1],[0,1,1,0]]
L                    -- length: 2

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.