라벨이 Python인 게시물 표시

Streptosquarus Shape Count

이미지
  A bacteria called streptosquarus comes in very peculiar shapes. The streptosquarus is flat with no perceived thickness. (It is essentially two-dimensional.) It is composed of an integer number of unit squares. In addition, all the squares in the streptosquarus must be touching at least one other square of the bacteria along edges.  Write a program that takes a positive integer from the user and returns the number of possible different streptosquarus shapes of that size. Notice that there is only one streptosquarus of sizes one and two, but there are two of size three, five of size four, and 12 of size five. 모든 가능한 스트렙토스쿼러스의 형태를 생성하고, 회전과 대칭에 의한 중복을 제거하여 유일한 형태의 수를 계산해야 합니다. 회전과 대칭을 확인하는 로직을 추가하여 중복을 제거하는 것이 핵심입니다. 이 알고리즘은 크기가 커질수록 매우 느려질 수 있으므로, 크기가 5를 초과하는 경우에는 실행 시간을 고려해야 합니다. from collections import deque def generate_streptosquarus(n): if n == 1 : return 1 # All possible moves from a square moves = [( 0 , 1 ), ( 1 , 0 ), ( 0 , - 1 ), (- 1 , 0 )] #...