Làm cho tôi một cây bảng chữ cái


14

Giới thiệu

Trong hầu hết các phông chữ, tất cả các ký tự chữ cái viết hoa bên cạnh BDOcó một dòng duy nhất chạm vào một số bốn góc của hình chữ nhật giới hạn của ký tự : ACEFGHIJKLMNPQRSTUVWXYZ.

Ví dụ, hai chân của một A"chạm" góc dưới bên trái và dưới cùng bên phải của nhân vật. Tương tự như vậy, Cchạm vào góc trên cùng và dưới cùng của nó (nó hơi cong nhưng đủ gần). Lchỉ chạm vào góc trên bên trái và dưới cùng bên phải với các dòng duy nhất. Góc dưới bên trái của Lmột đỉnh, không phải là kết thúc của một dòng duy nhất.

Dưới đây là bảng các ký tự chạm vào góc nào theo phông chữ Stack Exchange mà tôi (và hy vọng bạn) nhìn thấy. 1dành cho phía trên bên trái, 2dành cho phía trên bên phải, 3phía dưới bên trái, 4phía dưới bên phải.

A: 3 4
C: 2 4
E: 2 4
F: 2 3
G: 2
H: 1 2 3 4
I: 1 2 3 4
J: 1 3
K: 1 2 3 4
L: 1 4
M: 3 4
N: 2 3
P: 3
Q: 4
R: 3 4
S: 2 3
T: 1 2
U: 1 2
V: 1 2
W: 1 2
X: 1 2 3 4
Y: 1 2
Z: 1 4

Thiết lập

Giả vờ như những đường chạm góc này mở rộng theo hướng góc mà chúng chạm vào để sắp xếp các ký tự này trên lưới có thể được "kết nối".

Ví dụ: tất cả các nhân vật trong

 A
C X

được kết nối vì phía dưới bên trái Avà trên cùng bên phải của Ckết nối và phía dưới bên phải Avà trên cùng bên trái của Xkết nối.

Tuy nhiên,

CAX

không có kết nối vì các kết nối chỉ xảy ra theo đường chéo từ một ký tự sang ký tự tiếp theo .

Thử thách

Viết chương trình ngắn nhất có thể (tính bằng byte) xuất ra tất cả các ký tự ACEFGHIJKLMNPQRSTUVWXYZtrong một cây lớn được kết nối đầy đủ, theo các quy tắc ở trên. Mỗi nhân vật phải xuất hiện chính xác một lần. Sử dụng không gian cho không gian trống.

Thí dụ

Mọi thứ trong cây 23 chữ này có thể đạt được từ bất kỳ thứ gì khác thông qua các kết nối đường chéo được xác định ở trên:

  Q
 A J   R
C U   S Y
 I M N
E H X
 F L T
G   Z K P
     V W

Ghi chú

  • Bạn có thể mã hóa giải pháp của bạn.
  • Đầu ra của bạn chỉ nên chứa ACEFGHIJKLMNPQRSTUVWXYZ, khoảng trắng và dòng mới. BDOsẽ không được sử dụng.
  • Không gian hàng đầu / dấu là tốt miễn là tất cả các kết nối được định vị đúng.
  • Lưới đầu ra không được lớn hơn 30 x 30 ký tự (bao gồm cả dòng mới và dấu cách).
  • Chỉ kết nối góc được xem xét. Đáy Ykhông kết nối với bất cứ điều gì. Bạn phải sử dụng các kết nối góc từ bảng trên.
  • Không phải tất cả các góc có thể kết nối cần phải kết nối với một cái gì đó. Các góc có thể kết nối và không kết nối có thể viền nhau.
  • Đầu ra cho thiết bị xuất chuẩn. Không có đầu vào.
  • Bao gồm một biểu đồ kết nối được thực hiện bằng dấu gạch chéo như Peter Taylor đã làm là một liên lạc hữu ích nhưng không bắt buộc.

Cập nhật:
githubhagocyte đã thực hiện kiểm tra tính hợp lệ của bảng chữ cái trên Github .


Bạn có thể mã hóa giải pháp của bạn?
edc65

2
@ edc65 Bạn có thể mã hóa giải pháp của bạn.
Sở thích của Calvin

7
Thật buồn cười là 2 cụm từ đó chỉ có 1 ký tự khác nhau: P
Teun Pronk

1
@githubphagocyte, đó sẽ là một phụ lục cho câu hỏi tốt hơn là một câu trả lời, cho rằng đó không phải là một câu trả lời.
Peter Taylor

1
Golf đẹp, @ Calvin'sHob sở thích. Điều này rất nhiều niềm vui để xem câu trả lời cho.
Jordan

Câu trả lời:


1

Bình thường , 32

jd"QAPMFRLZ\nUINKSHXJ\n\0GTCVEWY

Đầu ra:

Q A P M F R L Z 
 U I N K S H X J 
  G T C V E W Y

Kết nối, nhờ trình kiểm tra của @ githubphagocyte:

Q   A   P   M   F   R   L   Z   
 \ / \ /   / \ /   / \   \   \  
  U   I   N   K   S   H   X   J   
     / \ /   / \ /   / \ / \ /    
    G   T   C   V   E   W   Y 

Kết hợp thủ thuật byte null của @ grc và cú pháp cực ngắn của Pyth. Làm lưới của riêng tôi cho địa ngục của nó.

Giải trình:

jlà chuỗi tham gia của python. dlà không gian. \0là chuỗi thoát cho byte rỗng. Nó là một NOP khi được in, vì vậy dòng thứ ba có chính xác hai khoảng trắng ở phía trước. Ngoài ra, lưu ý rằng các chuỗi có thể bị chấm dứt EOL trong Pyth, cũng như kết thúc trích dẫn.


12

GolfScript (41 ký tự)

'QZENRPMALHIFKSXJTUVWYGC'8/{' '*n' '+:n}/

Bản demo trực tuyến

Biểu đồ kết nối:

Q   Z   E   N   R   P   M   A
 \   \   \ /   / \ /   / \ / \
  L   H   I   F   K   S   X   J
   \ / \ / \ /   / \ /   /   /
    T   U   V   W   Y   G   C

11

Con trăn, 49

print' '.join('  MQRCNAF\n XZHLKSIP\n\0GJWVUYET')

Thí dụ:

>>> print' '.join('  MQRCNAF\n XZHLKSIP\n\0GJWVUYET')
    M Q R C N A F 
   X Z H L K S I P 
  G J W V U Y E T

Tôi nghĩ rằng nó kết nối đúng cách bây giờ, nhưng tôi có thể đã bỏ lỡ một cái gì đó một lần nữa.


F4có vẻ như được kết nối với G1, không hợp lệ
Tymric

@Timmy Nhưng F2 được kết nối với A3. Tất cả có vẻ kết nối với tôi.
Sở thích của Calvin

@ Calvin'sHob sở thích Tôi nghĩ rằng tôi đã hiểu sai các yêu cầu. Có được phép có các góc liền kề không được kết nối không?
Tymric

2
@Timmy Chắc chắn rồi. Các cặp góc đó không được tính là kết nối, nhưng hai chữ cái có thể được kết nối theo cách khác.
Sở thích của Calvin

9

Ma thuật 164 158 143

đã sử dụng cây của bmark vì nó gần như được tối ưu hóa hoàn hảo cho Marbelous . Mã trong trường hợp này chỉ là mã ascci cho tất cả các ký tự (bao gồm khoảng trắng và dòng mới) từ trái sang phải, được phân cách bằng dấu cách.

43 20 46 20 50 20 4D 20 51 20 52 20 45 20 41 14 20 58 20 48 20 4e 20 4C 20 4B 20 5A 20 49 20 53 14 47 20 59 20 56 20 20 20 55 20 4A 20 54 20 57

Đầu ra:

 C F P M Q R E A 
  X H N L K Z I S 
 G Y V   U J T W

Một cách tiếp cận đáng tin cậy hơn 135 129

Cái này xuất ra cùng một cây với một khoảng trắng thừa trước và sau mỗi dòng, nó hoạt động bằng cách đưa các chữ vào một chương trình con in một khoảng trắng trước khi in chữ. Và chỉ in một khoảng trắng nếu nghĩa đen là khoảng trắng (20 HEX)

57
54
4A
55
20
56
59
47
14
53
49
5A
4B
4C
4E
48
58
20
14
41
45
52
51
4D
50
46
43
Sp
Sp:
20 I0
.. =V

Câu trả lời này sẽ giảm xuống 96 khi không gian giữa các ô không còn cần thiết cho mã nguồn Marbelous, sẽ xảy ra sau ngày hôm nay.
overactor

1
Sử dụng ngôn ngữ hoặc các tính năng ngôn ngữ mà hoãn câu hỏi được coi là gian lận.
Peter Taylor

4
@PeterTaylor Hiện tại câu trả lời này chỉ sử dụng các tính năng được triển khai khi câu hỏi được hỏi.
overactor

7

BrainF * ck 669

Làm cái này cho cười khúc khích. Đầu ra giống hệt như ví dụ.
Sẽ cung cấp một giải pháp khác sau. Không thể nghĩ ra một cách thông minh để làm điều này trong Lua vì vậy tôi sẽ chỉ sử dụng cách này :)

++++[->++++++++<]>..[-->+++++<]>+.>++++++++++.[->+++<]>++.[->++<]>+.-[-->+<]>.+++++[->++<]>.--[->++++<]>...>-[--->+<]>---.>++++++++++.+[->++++++<]>+.-[-->+<]>-.>-[--->+<]>.[----->++<]>--...>-[--->+<]>--.+[--->+<]>++++.--[->+++<]>-.[->+++<]>-.[->+++<]>++.++++[->++<]>+.-[->++++<]>.++++++[->++<]>+.-----[->++++<]>.[-->+++++<]>--.>++++++++++.[->+++++++<]>-.-[-->+<]>--.++++[->++<]>.[->++++<]>.[++++>---<]>.>++++++++++.[->+++<]>++.+++[->++<]>.[-->+<]>---.++++++[->++<]>.[-->+<]>------.>-[--->+<]>-.>++++++++++.[->+++++++<]>+.+[->++++<]>...--[->+++<]>.[--->+<]>++.--[-->+++++<]>.---[->++++<]>.[-->+++++<]>.>++++++++++.[->+++<]>++.....>+[--->++<]>.+[--->+<]>+++.---[->+++<]>.

Đầu ra

  Q
 A J   R
C U   S Y
 I M N
E H X
 F L T
G   Z K P
     V W

2
Cho dù thử thách codegolf điên rồ đến mức nào, hầu như luôn có một câu trả lời cân não. Phải yêu nó +1
Pharap

@AndoDaan Không, nó sẽ không. Tôi đã không sử dụng mặc dù. Tôi đã tạo ra bộ não của riêng mình * ck như tôi vẫn luôn làm. Tôi đã sử dụng nó rất nhiều và học được hầu hết các thủ thuật tôi luôn sử dụng khi viết BF vì vậy tôi sẽ không ngạc nhiên nếu nó trông giống như vậy.
Teun Pronk

Không mô phỏng, giống hệt nhau. Cả 669 byte chiều dài. Cả hai đều sử dụng cùng một ký tự theo phương thức ký tự (không tối ưu hóa chút nào), và cả hai đều giống hệt nhau với tất cả các biểu tượng tinh vi, lởm chởm và các thứ khác.
AndoDaan

2
Phải là một sự trùng hợp ngẫu nhiên rồi. Tôi tham gia để giải trí cho thử thách và tôi không thấy niềm vui khi tạo BF. Cách duy nhất thậm chí thể thú vị một chút là khi bạn tự viết trình tạo.
Teun Pronk

6

PHP 46

Điều này giống như giải câu đố hơn là lập trình, vì vậy câu trả lời của tôi giống như giải câu đố hơn là mã. Tuy nhiên, đây là một chương trình PHP hợp lệ, vì vậy tôi đang gửi nó.

C A Q S R P M J
 X Z I F K N H
G T U V W Y E L

Cập nhật tương tự trong Perl. Độ dài vẫn còn 46:

print"CAQSRPMJ
 XZIFKNH
GTUVWYEL"=~s/\S/$& /rg

4

HTML, 55

<pre>C F P M Q R E A
 X H N L K Z I S
G Y V   U J T W

đầu ra:

C F P M Q R E A
 X H N L K Z I S
G Y V   U J T W


2

SỐ LIỆU 63

Chỉnh sửa: bây giờ giải pháp của riêng tôi. Nên là tất cả các chữ cái.

di 'C F P M Q R E A' di ' X H N L K Z I S' di 'G Y V   U J T W'

 C F P M Q R E A 
  X H N L K Z I S 
 G Y V   U J T W

1

Javascript 83

Tôi sẽ bắt đầu với giải pháp mã hóa CỦA BẠN

console.log('  Q\n A J   R\nC U   S Y\n I M N\nE H X\n F L T\nG   Z K P\n     V W')

làm cho nó ngắn hơn alertthay vìconsole.log
Mark Gabriel

2
@MarkGabriel Tôi muốn làm cho nó ngắn hơn theo cách thông minh hơn. Thông báo không có phông chữ phù hợp để hiển thị nghệ thuật ascii.
edc65

1
Tôi hiểu rồi. Quên về định dạng cảnh báo là khác nhau. :)
Đánh dấu Gabriel

1

PHP, 69

<?php echo preg_replace("/(\w)/",'\1 ',"CAQSRPMJ
 XZIFKNH
GTUVWYEL");

cho

C A Q S R P M J 
 X Z I F K N H 
G T U V W Y E L

Bạn hoàn toàn không có kết nối đường chéo nào trong đầu ra của mình
edc65

@ MartinBüttner - cảm ơn bạn, tôi phải trả một byte để sửa chữa.
Chiến thắng

Vấn đề với phản hồi này (và nhiều phản hồi khác) là đầu ra ngắn hơn mã (xem core1024 php)
edc65

Bạn có thể cạo hai byte bằng cách thay thế regex của bạn bằng"/\w/",'\0 '
ATaco
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.