2017-09-14 7 views
1

모양을 변형하거나 크기를 조정할지 여부를 결정하는 스크립트를 만들고 있습니다. 하나의 모양으로 된 선의 길이를 모두 나열하여 시작합니다.AppleScript로 모양이 변형되었거나 크기가 조정되었는지 확인합니다.

set noofsides to text returned of (display dialog "Enter number of sides:" default answer "") 

set sidevalues to {} 
set repeatnumber to 0 
repeat noofsides times 
    set repeatnumber to repeatnumber + 1 
    set currentsidevalue to text returned of (display dialog "Enter length of line " & repeatnumber & ":" default answer "") 
    set the end of sidevalues to currentsidevalue 
end repeat 

그런 다음 두 번째로 편집 한 모양에 대해 동일한 작업을 수행합니다. 이것은 다른 변수를 가진 두 개의 목록을 제공합니다. 두 모양이 유사한 지 확인하려면 각 'before'줄을 'after'줄로 나눈 값이 같아야합니다. 예를 들어, 삼각형 :

try 
    set primevariable1 to first item of primesidevalues 
    set primevariable2 to second item of primesidevalues 
    set primevariable3 to third item of primesidevalues 
    -- ... 
end try 

try 
    set regularvariable1 to first item of sidevalues 
    set regularvariable2 to second item of sidevalues 
    set regularvariable3 to third item of sidevalues 
    -- ... 
end try 

try 
    variable4 
on error 
    set variable4 to "" 
end try 
if (regularvariable1/primevariable1) = (regularvariable2/primevariable2) and (regularvariable3/primevariable3) = (regularvariable1/primevariable1) and (regularvariable3/primevariable3) = (regularvariable2/primevariable2) and variable4 = "" then 
    display dialog "Shape is similar" 
end if 

단지 3면 모양입니다 :

firstline1/secondline1 = firstline2/secondline2 = firstline3/secondline3 

신속하게 다음을 수행 할 필요없이이 작업을 수행 할 수있는 방법이 있습니까. 내가 5, 6면을 가지고 무언가를하고 싶다면, 이것은 점점 길어질 것입니다. 목록 2의 모든 숫자로 나누어 진 목록의 모든 숫자를 모두 서로 등가로 나누는 것과 비슷합니다. 그러면 모양이 비슷합니까? 누구든지 도와 줄 수 있습니까?

+0

애플 스크립트에 루프 및 색인 변수 (목록/배열)가 있습니까? – MBo

+0

네,하지만 어떻게 구현할 수 있는지 잘 모르겠습니다. –

+0

'set sidevalues ​​to {}'는'sidevalues'가 인덱스 된 데이터 구조임을 나타냅니다. – MBo

답변

0

의 값 가져 오기 (첫 번째 목록에 첫 번째 항목을/두 번째 목록의 첫 번째 항목)과 같이 다른 항목의 값을 비교하는 루프를 사용

set sidevalues to my getSidesValue("Enter number of sides for the first shape:") 
set primesidevalues to my getSidesValue("Enter number of sides for the second shape:") 
set tc to count sidevalues 
if tc = (count primesidevalues) then -- the number of items in the lists is the same 
    set isSimilar to true 
    set thisVal to (item 1 of sidevalues)/(item 1 of primesidevalues) -- Get the value of the first item in the lists 
    repeat with i from 2 to tc -- loop to compare the value of the others items 
     if (item i of sidevalues)/(item i of primesidevalues) is not thisVal then -- not the same value 
      set isSimilar to false 
      exit repeat -- no need to continue 
     end if 
    end repeat 
else 
    set isSimilar to false 
end if 
isSimilar 


on getSidesValue(t) 
    set noofsides to text returned of (display dialog t default answer "") 
    set l to {} 
    repeat with i from 1 to noofsides 
     set currentsidevalue to text returned of (display dialog "Enter length of line " & i & ":" default answer "") 
     set the end of l to currentsidevalue 
    end repeat 
    return l 
end getSidesValue