Tạo phác thảo của một hòn đảo từ một hạt giống [đóng]


8

Thách thức là vẽ đường viền của một 'hòn đảo', được tạo ra bằng cách sử dụng hạt giống làm đầu vào.

  • Input (seed): chuỗi gồm 6 ký tự (chính xác) chỉ cho phép các chữ cái viết thường (ví dụ abcdefghijklmnopqrstuvwxyz) - ví dụ: 'đảo', 'aaaaaa', 'jhgcfj'
  • Mỗi hạt giống là cho một hòn đảo duy nhất (nghĩa là không có hai hạt giống nào cho cùng một đầu ra)
  • Không có đầu ra nào là sự biến đổi của đầu ra của hạt giống khác. Đó là dịch, phản xạ, xoay, chia tỷ lệ hoặc bất kỳ sự kết hợp nào của chúng.
  • Sử dụng cùng một hạt giống phải luôn cho cùng một đầu ra
  • Đầu ra: hình ảnh 600px x 600px

Một hòn đảo hợp lệ được vẽ bằng một dòng duy nhất, trong đó:

  • tạo thành một vòng khép kín
  • dày 1px mà không làm mịn, làm mờ, v.v.
  • là liên tục (tức là sau khi vẽ một pixel, pixel tiếp theo sẽ ở một trong 8 không gian liền kề không bị chiếm dụng)
  • không vượt qua chính nó tại bất kỳ điểm nào
  • không rời khỏi ranh giới của hình ảnh
  • có màu đen (# 000), trên nền trắng (#FFF)
  • không có đường đối xứng phản xạ
  • phải kèm theo khoảng trắng

Mã nguồn có giới hạn 500 byte.

Bên cạnh đó, sự phổ biến quyết định; hầu hết phiếu bầu thắng.


6
Tôi nghĩ rằng, trong trường hợp này, cuộc thi về sự nổi tiếng đang được sử dụng như một vỏ bọc cho một thông số không đầy đủ. Tôi nghĩ rằng bạn đang tham gia vào một cái gì đó ở đây - Tôi chưa thấy nhiều thách thức đòi hỏi một hạt giống là đầu vào và một cái gì đó tuyệt vời như đầu ra. Phần thực sự cần làm việc là "không có tiêu chí cụ thể". Nếu bạn muốn trợ giúp của cộng đồng giải quyết một số tiêu chí vững chắc, bạn có thể đăng câu hỏi của mình lên Sandbox .
Rainbolt

2
Điều này dường như quá rộng và cũng là một cuộc thi nghệ thuật hơn là một cuộc thi lập trình. Vì thế, hầu như bất kỳ mã nào tạo ra một số đốm màu đều có thể được bán dưới dạng "đảo".
Martin Ender

1
Bạn có thể rút ra một số cảm hứng từ Thế hệ bản đồ đa giác cho các trò chơi . Toàn bộ quá trình có thể hơi rộng, nhưng bạn có thể thu hẹp nó.
Rainbolt

3
Tôi thích câu hỏi này! Tôi đã bỏ phiếu để đóng để chúng tôi không có người trả lời vì có vẻ như chúng tôi vẫn đang thảo luận về thông số kỹ thuật. Câu hỏi này có thể đã được hưởng lợi từ hộp cát, nhưng tôi nghĩ chúng ta vẫn có thể cải thiện nó và mở lại nó.
hmatt1

2
@chilemagic đừng bận tâm người khác nghĩ gì, bạn nghĩ gì? Tôi nghĩ rằng bản chất của câu hỏi "vẽ một hòn đảo" là chủ quan. Mọi người có khả năng bỏ phiếu cho mã ngắn vẽ một hòn đảo thực tế (nếu đó là một con cá tuyết, ai đó sẽ vẽ một ngôi sao và mọi người sẽ phàn nàn nó không giống một hòn đảo.) Tôi thường ủng hộ việc thay đổi cuộc thi phổ biến thành codegolf, nhưng một số câu hỏi đồ họa tôi nghĩ rằng một ngoại lệ nên được thực hiện.
Cấp sông St

Câu trả lời:


3

BBC cơ bản

Đây là một thuật toán rất đơn giản, có thể được cải tiến để có tính chân thực hơn. Nếu có những thay đổi hơn nữa trong các quy tắc tôi sẵn sàng thay đổi / xóa.

lấy chuỗi 6 ký tự và thêm }@vào để đảm bảo tính bất đối xứng (sự lựa chọn đặc biệt này của các ký tự mang lại cho các đảo gần giống với Nam Cực)

vẽ một đường nối 8 điểm ở các khoảng 45 độ, với khoảng cách từ tâm được xác định bởi mã ASCII.

  INPUT a$
  a$=a$+"}@"
  MOVE 364,300
  FOR i=1 TO 8
    r=4*ASC(MID$(a$,i))-192
    DRAW 300+r*COS(i*PI/4),300+r*SIN(i*PI/4)
  NEXT

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


2
@BetaDecay Đen-trắng được yêu cầu bởi thông số kỹ thuật.
undergroundmonorail

Vẫn có những kết quả đầu ra là các biến thể của nhau - @} zzaa và @} aazz là những phản ánh của nhau
tự hào

1
@proudhaskeller @ và} không được phép trong đầu vào. Đó là lý do tại sao chúng được chọn để thêm vào đầu vào trước khi vẽ.
Cấp sông St

0

Đại số

Algoid là một ngôn ngữ tương tự như LOGO hoặc Rùa và gần như hoàn toàn dựa trên đồ họa.

algo.hide()
algo.setBgColor(15)
algo.setStroke(1)
algo.setColor(0)
algo.goTo(-400,100)
set seed="put seed here".lower()
set letters = "abcdefghijklmnopqrstuvwxyz"
set sides=seed.length()
for (set i=0;i<sides-(sides/6);i++) {
    set letter = seed.getChar(i%seed.length())
    set value = letters.indexOf(letter)*5
    set turn = 360/seed.length()
    algo.go(math.sin(value)*(1500/seed.length()))
    algo.turnRight(turn)
}
algo.lineTo(-400,100)

Hạt giống: supercalifragilisticexpialiadocious even though the sound of it is rather quite atrocious

Hạt giống: islands in the stream

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.