Phân loại tứ giác | Giúp tôi với bài kiểm tra toán của tôi!


20

Cứu giúp! Kỳ thi toán của tôi sắp diễn ra và tôi đã không học! 1 Một phần của bài kiểm tra là phân loại một hình tứ giác với tọa độ đỉnh của nó, điều mà tôi, thật không may, không biết làm thế nào. 2

Vì vậy, thách thức của bạn là viết một chương trình để làm điều này cho tôi để tôi không thất bại!

Thử thách

Cho bốn đỉnh sao cho không có ba trong số chúng là colinear, hãy xác định phân loại cụ thể nhất của tứ giác được hình thành bởi bốn đỉnh đó.

Ý tôi là "phân loại cụ thể nhất" là mặc dù tất cả các hình vuông đều là hình chữ nhật, nếu hình dạng là hình vuông, bạn nên chỉ ra rằng đó là hình vuông và không chỉ ra rằng đó là hình chữ nhật.

Đầu vào

Đầu vào sẽ được cung cấp dưới dạng bốn tọa độ (x, y). Bạn có thể lấy chúng làm danh sách có độ dài 4 danh sách / bộ dữ liệu có độ dài 2. Ngoài ra, bạn có thể lấy đầu vào làm danh sách tọa độ x và danh sách tọa độ y tương ứng.

Ví dụ, nếu hình dạng của tôi có đỉnh tại các điểm (0, 0), (5, 0), (6, 1), và (1, 1), bạn có thể chọn để có đầu vào bằng một trong các định dạng sau hoặc một cái gì đó tương tự:

[(0, 0), (5, 0), (6, 1), (1, 1)]
([0, 5, 6, 1], [0, 0, 1, 1])

Bạn có thể giả sử rằng tứ giác không tự giao nhau và các điểm được cho theo đúng thứ tự (nghĩa là hai điểm liên tiếp trong đầu vào sẽ được kết nối bởi một đoạn thẳng trong tứ giác).

Đầu ra

Bạn sẽ cần một đầu ra duy nhất cho mỗi lớp tứ giác sau:

  • Quảng trường
  • Hình chữ nhật
  • Hình thoi
  • Hình bình hành
  • Hình thang / hình thang
  • cánh diều
  • Tứ giác

Đây có thể là tên chính xác, một ký tự, một số nguyên, v.v.

Quy tắc

  • Áp dụng sơ hở tiêu chuẩn
  • Nếu ngôn ngữ lập trình của bạn có tích hợp sẵn sẽ thực hiện nhiệm vụ chính xác này, thì tích hợp đó không được phép.
  • Được xây dựng để tìm khoảng cách giữa hai điểm được cho phép.
  • Được xây dựng để tìm góc giữa hai dòng được cho phép.

Tại thời điểm này, nếu bạn biết tất cả các điều khoản, bạn đã sẵn sàng để bắt đầu lập trình! (Các trường hợp thử nghiệm ở cuối)

Thuật ngữ

Phần này dành cho bất cứ ai cần làm rõ về các định nghĩa của các hình dạng khác nhau.

Quảng trường

Một hình tứ giác là một hình vuông nếu và chỉ khi cả 4 cạnh của nó có độ dài bằng nhau và mọi cặp cạnh kề đều vuông góc (nghĩa là nó vừa là hình chữ nhật vừa là hình thoi).

Hình chữ nhật

Một hình tứ giác là một hình chữ nhật khi và chỉ khi mọi cặp cạnh kề đều vuông góc.

Hình thoi

Một hình tứ giác là một hình thoi khi và chỉ khi cả 4 cạnh của nó bằng nhau.

Hình bình hành

Một hình tứ giác là hình bình hành khi và chỉ khi mỗi cặp cạnh đối diện song song và mỗi cặp góc đối diện bằng nhau. Cả hai điều kiện này ngụ ý lẫn nhau vì vậy bạn chỉ cần kiểm tra một trong số chúng.

Hình thang / hình thang

Một hình tứ giác là hình thang / hình thang khi và chỉ khi nó có ít nhất một cặp cạnh song song.

cánh diều

Một hình tứ giác là một con diều nếu hai cặp cạnh kề nhau có chiều dài bằng nhau; nghĩa là, hai cạnh kề của nó bằng nhau và hai mặt kia cũng bằng nhau.

Các trường hợp thử nghiệm

input as (x, y) * 4 -> full name
[(0, 0), (1, 0), (1, 1), (0, 1)] -> square
[(0, 0), (1, 1), (-1, 3), (-2, 2)] -> rectangle
[(0, 0), (5, 0), (8, 4), (3, 4)] -> rhombus
[(0, 0), (5, 0), (6, 1), (1, 1)] -> parallelogram
[(0, 0), (4, 0), (3, 1), (1, 1)] -> trapezoid/trapezium
[(0, 0), (1, 1), (0, 3), (-1, 1)] -> kite  
[(0, 0), (2, 0), (4, 4), (0, 1)] -> quadrilateral

Liên kết (Máy tính đồ họa Desmos)

Dưới đây là các liên kết đến trực quan hóa của từng trường hợp thử nghiệm.

Vuông
Rectangle
Rhombus
bình hành
hình thang / hình thang
Kite
tứ giác

Tiêu chí chiến thắng

Rõ ràng tôi không thể mang máy tính vào bài kiểm tra, vì vậy tôi cần bạn viết mã ngắn nhất có thể để tôi có thể ghi nhớ nó. Tôi cần phải viết nó vào lề và chạy nó bằng cách sử dụng TryIt Offerline TM để phù hợp với lề vào chương trình của bạn cần phải nhỏ nhất có thể!

1 Tất nhiên tôi thực sự đã làm: P
2 Tất nhiên tôi thực sự làm: P


1
Tôi có thể giúp bạn với vấn đề ký quỹ của bạn xkcd.com/1381
Rohan Jhunjhunwala

@RohanJhunjhunwala Tôi là Fermat mới (tôi nghĩ đó là người phù hợp?). Nhưng tham khảo XKCD hay: P
HyperNeutrino

CSV có được phép nhập không?
tuskiomi

Thứ tự một phần của tính đặc hiệu là gì?
Peter Taylor

Câu trả lời:


6

APL (Dyalog) , 104 89 80 82 81 79 78 byte

⍙←{⍵⍺⍺1⌽⍵}
⎕←(|x){⍵≡2⌽⍵:≡⍙¨0⍺⍵⋄2 4=+/1=2|+⍙↑⍵(=⍙⍺)}2|1+-⍙(12x←-⍙⎕+.×1 0J1)÷○1

Hãy thử trực tuyến!


Đầu ra đầu vào

Lấy ma trận tọa độ 4 × 2 làm đầu vào

Đầu ra

  • 1 1 1 cho Quảng trường
  • 1 1 0 cho hình thoi
  • 1 0 1 cho hình chữ nhật
  • 1 0 0 cho hình bình hành
  • 1 0 cho diều
  • 0 1 cho Trapezium
  • 0 0 cho tứ giác

Thuật toán

Đầu tiên, tìm tất cả 4 chiều dài và góc của tứ giác

Nếu cả hai cặp góc đối diện đều bằng nhau ( OA), thì hình dạng là một loại hình bình hành. Xác định xem tất cả các độ dài cạnh có bằng nhau ( AS, Các mặt liền kề) và nếu tất cả các góc bằng nhau ( AA).

+--------+----------------+----------------+
|        |       AA       |      ~AA       |
+--------+----------------+----------------+
|   AS   |     Square     |    Rhombus     |
|--------+----------------+----------------+
|  ~AS   |    Rectangle   |  Parallelogram |
+--------+----------------+----------------+

Nếu không OA, thì:

  • Xác định xem có chính xác 2 cặp cạnh kề nhau không và chúng có bị tách ra không ( aabbthay vìaaab ). Nếu vậy, hình dạng là một con diều.

  • Xác định xem có đúng 1 cặp cạnh đối diện không. Nếu vậy, hình dạng là một hình thang.

  • Nếu không, hình dạng là một hình tứ giác.


⍙←{⍵⍺⍺1⌽⍵}định nghĩa một toán tử mới. Trong APL, một toán tử có nghĩa là một hàm bậc cao hơn . Toán tử này nhận 1 đối số hàm ( ⍺⍺) và trả về một hàm đơn trị:

  1. Xoay ( 1⌽) đối số ( )
  2. Áp dụng ⍺⍺giữa nó và

Điều này đặc biệt hữu ích cho các hàm vô hướng vì hầu hết chúng đều ánh xạ ngầm qua các đối số mảng, cho phép áp dụng các hàm giữa mỗi cặp phần tử liền kề với xung quanh. Ví dụ +⍙1 2 3 41 2 3 4 + 2 3 4 1đánh giá 3 5 7 5.


x←-⍙⎕+.×1 0J1 chuyển đổi ma trận tọa độ đầu vào thành một mảng các số phức biểu thị các vectơ của 4 cạnh của hình.

  • , khi được tham chiếu, lấy và trả về đầu vào

  • 1 0J1đại diện cho vectơ [1, i] ("vectơ" theo nghĩa toán học và "i" là căn bậc hai của -1). Trong APL, một số phức a+biđược viếtaJb

  • +.×Phép nhân ma trận. Về mặt toán học, kết quả sẽ là ma trận 4 × 1. Tuy nhiên, +.×được gọi là "sản phẩm bên trong" trong APL, khái quát hóa phép nhân ma trận và sản phẩm bên trong vectơ và cho phép bạn thực hiện ngay cả những thứ như "nhân" một mảng 3 chiều với một chiều 2 chiều. Trong trường hợp này, chúng tôi đang nhân một ma trận 4 × 2 và một vectơ 2 phần tử, dẫn đến một vectơ 4 phần tử (của các biểu diễn số phức của 4 đỉnh đã cho).

  • -⍙là phép trừ cặp với quấn xung quanh như đã lưu ý ở trên. Điều này cho các vectơ của 4 cạnh của hình (dưới dạng số phức). Các vectơ này chỉ theo hướng "đảo ngược" nhưng điều đó không quan trọng.

  • x← lưu trữ nó vào biến x


2|1+-⍙(12○x)÷○1 tìm (một đại diện) các góc bên ngoài tại 4 đỉnh của hình.

  • 12○xtìm đối số chính , tính bằng radian, của mỗi trong số 4 vectơ bên.

  • ÷○1chia cho π để các góc dễ làm việc hơn. Do đó, tất cả các góc được biểu thị bằng bội số của một góc thẳng.

  • -⍙Phép trừ cặp với quấn xung quanh như đã lưu ý ở trên. Điều này cho 4 góc bên ngoài.

  • 2|1+ Đối số chính được giới hạn (-1,1] và phép trừ theo cặp làm cho phạm vi (-2,2]. Điều này thật tệ vì cùng một góc có 2 cách biểu diễn khác nhau. Bằng cách thực hiện "thêm 1 mod 2", góc được tái giới hạn ở (0,2]. Mặc dù tất cả các góc đều hơn 1 so với mức cần thiết, nhưng sẽ ổn nếu chúng ta ghi nhớ điều đó.


|xtìm độ lớn của mỗi vectơ 4 bên


{⍵≡2⌽⍵:≡⍙¨0⍺⍵⋄2 4=+/1=2|+⍙↑⍵(=⍙⍺)}định nghĩa và áp dụng một hàm với mảng 4 góc ngoài là đối số đúng và mảng có độ dài 4 cạnh là đối số đúng .

  • Các chức năng có một biểu thức bảo vệ. Trong trường hợp này, ⍵≡2⌽⍵là người bảo vệ.
  • Nếu bảo vệ ước tính 1thì biểu thức tiếp theo ≡⍙¨0⍺⍵được thực thi và giá trị của nó được trả về.
  • Nếu người bảo vệ đánh giá 0, biểu thức đó sẽ bị bỏ qua và biểu thức sau đó 2 4=...=⍙⍺)được thực thi thay thế.

⍵≡2⌽⍵ kiểm tra nếu cả hai cặp góc đối diện bằng nhau.

  • 2⌽⍵ xoay mảng góc bằng 2 vị trí.
  • ⍵≡kiểm tra nếu nó giống như chính nó

≡⍙¨0⍺⍵ trả về một giá trị duy nhất cho mỗi hình dạng loại hình bình hành.

  • 0⍺⍵là mảng 3 phần tử của vô hướng 0, mảng có độ dài cạnh và mảng góc .
  • ≡⍙¨thực thi ≡⍙cho từng yếu tố đó.
  • ≡⍙kiểm tra xem tất cả các giá trị của một mảng có bằng nhau không bằng cách kiểm tra xem xoay nó bằng 1 có cho cùng một mảng không. Vô hướng không xoay để ≡⍙0trả về 1. Như đã lưu ý ở trên, ≡⍙⍺kiểm tra hình thoi và ≡⍙⍵kiểm tra hình chữ nhật.

2 4=+/1=2|+⍙↑⍵(=⍙⍺)trả về một giá trị duy nhất cho mỗi hình dạng không phải hình bình hành. Điều này đạt được bằng cách đan xen các kiểm tra cho diều và hình thang.


2=+/1=2|+⍙⍵ kiểm tra một hình thang.

  • +⍙⍵cho các tổng góc liền kề. Các góc bên trong của các đường thẳng song song tổng hợp với một góc thẳng, do đó, các góc bên ngoài của các cạnh song song của một hình tứ giác. Vì vậy, mỗi cặp cạnh song song sẽ dẫn đến hai 1hoặc -1trong các tổng góc liền kề.

  • 1=2|Tuy nhiên, các góc trong là nhiều hơn 1 so với giá trị của chúng, vì vậy các góc thực sự bằng 1hoặc 3. Điều này có thể được kiểm tra bởi "mod 2 bằng 1".

  • +/tổng hợp các mảng. Điều này cho một số lượng tổng góc liền kề là 1hoặc 3.

  • 2= kiểm tra xem nó có bằng 2. (Tức là nếu có chính xác một cặp cạnh song song)


4=+/1=2|+⍙(=⍙⍺) kiểm tra một con diều.

  • (=⍙⍺)đưa ra một mảng chỉ ra các cạnh bên bằng nhau. Không giống như , =yếu tố làm việc khôn ngoan. Do đó, đây là mảng 4 phần tử với 1s trong đó độ dài của cạnh đó bằng với phần bên "bên".

  • +⍙ Tổng số cặp với bọc xung quanh.

  • 1=2|(=⍙⍺)cung cấp một mảng boolean (một chỉ có 0s và 1s), nên các giá trị duy nhất có thể có của tổng cặp là 0, 12. Như vậy 1=2|là giống như chỉ 1=.

  • +/tổng hợp các mảng. Điều này cung cấp cho một số tiền theo cặp 1.

  • 4=kiểm tra nếu điều đó bằng 4. Cách duy nhất điều đó xảy ra là nếu (=⍙⍺)1 0 1 0hay 0 1 0 1. Như đã nói ở trên, điều này có nghĩa là hình dạng là một con diều.


2 4=+/1=2|+⍙↑⍵(=⍙⍺) đan xen các kiểm tra trên.

  • ⍵(=⍙⍺)là mảng 2 phần tử lồng nhau của mảng và mảng(=⍙⍺)

  • thúc đẩy mảng lồng vào một ma trận thích hợp. Vì ⍵(=⍙⍺)là mảng 2 phần tử của mảng 4 phần tử, kết quả là ma trận 2 × 4.

  • +⍙(và, bởi phần mở rộng, ) xoay trục (ngang) cuối cùng, +⍙thành một ma trận giống như áp dụng +⍙cho từng hàng riêng lẻ.

  • 1=2|cả dư lượng / mod ( |) và bằng ( =) đều hoạt động trên cơ sở từng phần tử, thậm chí là ma trận.

  • +/Theo mặc định, less ( /) hoạt động dọc theo trục (ngang) cuối cùng. Vì vậy, tính +/tổng các hàng và biến ma trận 2 × 4 thành một mảng đơn giản gồm 2 phần tử.

  • 2 4==hoạt động theo từng yếu tố, điều này kiểm tra đồng thời các điều kiện diều và hình thang.


3

Toán học, 195 byte

Which[s=Differences@{##,#};l=Norm/@s;r=#.#2==#2.#3==0&@@s;Equal@@l,If[r,1,2],#==#3&&#2==#4&@@l,If[r,3,4],MatchQ[l,{a_,b_,b_,a_}|{a_,a_,b_,b_}],5,#+#3=={0,0}||#2+#4=={0,0}&@@Normalize/@s,6,1>0,7]&

Với khoảng trắng:

Which[
    s = Differences @ {##,#};
    l = Norm /@ s;
    r = #.#2 == #2.#3 == 0& @@ s;

    Equal @@ l, If[r, 1, 2],
    # == #3 && #2 == #4& @@ l, If[r, 3, 4],
    MatchQ[l, {a_,b_,b_,a_}|{a_,a_,b_,b_}], 5,
    #+#3 == {0,0} || #2+#4 == {0,0}& @@ Normalize /@ s, 6,
    1 > 0, 7
]&

Đầu ra 1cho hình vuông, hình 2thoi, 3hình chữ nhật, hình 4bình hành, hình 5diều, 6hình thang và7 cho bất cứ thứ gì khác. Tôi đã đăng một liên kết TIO, nhưng điều này dường như không hoạt động trong Toán học.

Nếu bốn điểm là P, Q, R, và S, sau đó {##,#}{P,Q,R,S,P}, vì vậy slà danh sách các vectơ bên {Q-P,R-Q,S-R,P-S}, llà độ dài của những vectơ, và rlà điều kiện mà góc giữa Q-PR-Qcũng như góc giữa R-QS-Rđều90 độ.

Như vậy, nếu tất cả các cạnh dài bằng nhau thì tứ giác là một hình thoi. Nếur giữ, nó thực sự là một hình vuông, nếu không nó chỉ là một hình thoi đơn giản.

Loại trừ hình thoi, nếu cả hai cặp có độ dài cạnh đối diện bằng nhau, thì tứ giác vẫn là hình bình hành. Nếu rgiữ, thực tế nó là một hình chữ nhật, nếu không, nó chỉ là một hình bình hành đơn giản.

Loại trừ các hình bình hành, danh sách các độ dài cạnh lcó dạng {a,b,b,a}hoặc {a,a,b,b}đối với một số absau đó, tứ giác là một con diều. Lưu ý rằng nó không thể là hình thang hoặc thực tế nó sẽ là hình thoi.

Loại trừ hình bình hành và diều, nếu tứ giác có một cặp cạnh song song thì đó là hình thang. Chúng tôi kiểm tra điều này bằng cách Normalizelấy các vectơ bên và kiểm tra xem một cặp vectơ đối diện có thêm vào không{0,0} .

Loại trừ tất cả những điều trên, nếu 1 > 0(tốt hơn là), thì tứ giác chỉ là một tứ giác cũ đơn giản.


1

Con trăn 2 , 463 410 408 397 byte

Đã lưu 53 byte bằng cách sử dụng bộ dữ liệu trong dòng thứ sáu thay vì lập chỉ mục vào danh sách.

Đã lưu 11 byte bằng cách chuyển sang các số nguyên đầu ra 1 đến 7 thay vì chữ cái đầu tiên của mỗi hình dạng. Các số nguyên tương ứng như sau:

  1. Quảng trường
  2. Hình chữ nhật
  3. Hình thoi
  4. Hình bình hành
  5. Hình thang
  6. cánh diều
  7. Tứ giác
from numpy import *;D=dot
from numpy.linalg import *;N=norm
def P(a,b):x=D(a,b);y=N(a)*N(b);return x==y or x==-y
def Q(a,b):return int(N(a)==N(b))
L=input()
a,b,c,d=tuple([(L[i][0]-L[(i+1)%4][0],L[i][1]-L[(i+1)%4][1]) for i in range(4)])
g=7
e=Q(a,c)+Q(b,d)
if e==2:
 g=(1if D(a,b)==0 else 3) if Q(a,b) else 2 if D(a,b)==0 else 4
elif P(a,c) or P(b,d):
 g = 5
elif Q(a,b) or Q(b,c):
 g = 6
print g

Hãy thử trực tuyến!

Ungolfed để hiển thị logic

Hiển thị dưới dạng hàm, để hiển thị đầu ra cho đầu vào thử nghiệm khác nhau. lưu ý Tôi đã thay đổi ví dụ kiểm tra "Hình chữ nhật" từ ví dụ ban đầu được cung cấp trong câu hỏi, đây không phải là hình chữ nhật.

Logic dựa trên các sản phẩm chấm và chỉ tiêu (chiều dài) của các vectơ được tạo bởi các cạnh của tứ giác để đánh giá xem các cạnh có bằng nhau về chiều dài, song song ở hai bên đối diện hay vuông góc với các cạnh kề hay không.

def S(va, vb):
    return (va[0]-vb[0], va[1]-vb[1])
def dot(sa,sb):      # Eventually replaced with numpy.dot
    return(sa[0]*sb[0]+sa[1]*sb[1])
def norm(s):         # Eventually replaced by numpy.linalg.norm
    return (s[0]**2+s[1]**2)**.5
def isperp(a,b):     # Test if lines/vectors are perpendicular
    return dot(a,b)==0
def ispar(a,b):      # Test if lines/vectors are parallel
    x = dot(a,b)
    y = norm(a)*norm(b)
    return x == y or x == -y
def iseq(a,b):       # Test if lines/vectors are equal in length
    return norm(a)==norm(b)
   
def f(L):
    #Define the four sides
    s = []
    for i in range(4):
        s.append(S(L[i],L[(i+1)%4]))  # I refer often so shorter names may eventually

    guess = 'Q'
    eqsides = 0           # These 6 lines eventually golfed using integer arithmetic by returning an int from iseq()
    if iseq(s[0], s[2]):
        eqsides += 1
    if iseq(s[1],s[3]):
        eqsides += 1
    if eqsides == 2:
    # Opposite sides are equal, so square, rhombus, rectangle or parallelogram
        if iseq(s[0],s[1]):       #Equal adjacent sides, so square or rhombus
            guess='S' if isperp(s[0], s[1]) else 'H'
        else:                     # rectangle or Parallelogram
            guess='R' if isperp(s[0], s[1]) else 'P'
    elif ispar(s[0],s[2]) or ispar(s[1],s[3]):
        guess = 'T'
    elif iseq(s[0],s[1]) or iseq(s[1],s[2]):
        guess = 'K'
    return guess
    

#test suite:
print f([(0, 0), (1, 0), (1, 1), (0, 1)]) # -> square
print f([(0, 0), (1, 1), (-1, 3), (-2, 2)]) # -> rectangle
print f([(0, 0), (5, 0), (8, 4), (3, 4)]) #  -> rhombus
print f([(0, 0), (5, 0), (6, 1), (1, 1)]) #  -> parallelogram
print f([(0, 0), (4, 0), (3, 1), (1, 1)]) # -> trapezoid/trapezium
print f([(0, 0), (1, 1), (0, 3), (-1, 1)]) #-> kite  
print f([(0, 0), (2, 0), (4, 4), (0, 1)]) #-> quadrilateral

Hãy thử trực tuyến!


1
Phân loại sai [(0, 0), (2, 2), (4, 0), (0,-2)]thành diều
TwiNight

Điều này sẽ làm việc? repl.it/JRzE
Zacharý

@TwiNight Cảm ơn. Không thấy khả năng này. Vấn đề là thuật toán ban đầu của tôi chỉ kiểm tra xem liệu có MỘT cặp cạnh có độ dài phù hợp hay không. Như ví dụ của bạn cho thấy, điều đó là không đủ. Tôi cần kiểm tra một cặp cạnh phù hợp, rồi kiểm tra xem cặp đối diện đó có cùng độ dài không. Đã quá bận rộn để thực hiện điều đó.
CCB60

0

Hàng loạt, 287 byte

@set/aa=%3-%1,b=%4-%2,c=%5-%1,d=%6-%2,e=%7-%1,f=%8-%2,g=a*a+b*b,h=(h=c-a)*h+(h=d-b)*h,i=(i=c-e)*i+(i=d-f)*i,j=e*e+f*f,p=!(i-g)+!(j-h),q=!(h-g),r=!(a*e+b*f),k=q+!(j-i)^|!(j-g)+!(h-i),t=!(a*(f-d)-b*(e-c))+!((c-a)*f-(d-b)*e)
@if %p%==2 (echo 1%r%%q%)else if %k%==2 (echo 1)else (echo 1%t%)

Đầu ra ở dạng nhị phân: 1= Diều, 10= 11Tứ giác, 100= Trapezium, = Parallelogram, 101= Rhombus, 110= Hình chữ nhật, 111= Hình vuông. Giải thích: g, h, i, jlà các hình vuông có độ dài của các cạnh. plà số cặp đối diện có cùng độ dài, qphân biệt giữa hình bình hành / hình chữ nhật và rhobmi / hình vuông bằng cách kiểm tra xem các cặp đối diện trên thực tế có bằng nhau hay không, rphân biệt giữa hình bình hành / hình thoi và hình chữ nhật / hình vuông thông qua kiểm tra vuông góc, kkiểm tra một thả diều bằng cách tìm kiếm các cặp cạnh bên bằng nhau và tkiểm tra hình thang thông qua một vài kiểm tra bên song song.



@TwiNight Bah, kiểm tra một con diều thực sự rất khó xử.
Neil

Vâng, tôi đã may mắn tìm được một cách nhỏ gọn để làm điều đó
TwiNight

@TwiNight Tôi sẽ tin lời bạn; APL là hoàn toàn không thể đọc được với tôi.
Neil

Phần mà tôi kiểm tra cho diều là 2=|-.=⍙⍺. Chắc chắn trông nhỏ gọn nếu bạn bỏ qua công việc được tính toán (độ dài 4 cạnh) và toàn bộ dòng cần xác định
TwiNight
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.