수비학을 계산하는 함수가 필요합니다. 예를 들어 "XYZ"를 입력하면 출력이 3이됩니다. 여기수비학을 계산하는 VB 스크립트의 함수를 원합니다.
는 3 된 방법은 다음을 추가하는
X = 24
Y = 25
Z = 26
또 다시 3 (1 + 2)까지 추가 12 (7 + 5)까지 추가 75된다. 마찬가지로 어떤 이름을 전달해야할지, 내 출력은 한자리 수 점수 여야합니다.
수비학을 계산하는 함수가 필요합니다. 예를 들어 "XYZ"를 입력하면 출력이 3이됩니다. 여기수비학을 계산하는 VB 스크립트의 함수를 원합니다.
는 3 된 방법은 다음을 추가하는
X = 24
Y = 25
Z = 26
또 다시 3 (1 + 2)까지 추가 12 (7 + 5)까지 추가 75된다. 마찬가지로 어떤 이름을 전달해야할지, 내 출력은 한자리 수 점수 여야합니다.
나는 이것을 어떻게 사용할 수 있었는지 전혀 알지 못하지만 어쨌든 쓸 재미가있다. VBScript로
Private Function CalcStupidNumber(ByVal s As String) As Integer
s = s.ToLower
If (s.Length = 1) Then 'End condition
Try
Return Integer.Parse(s)
Catch ex As Exception
Return 0
End Try
End If
'cover to Values
Dim x As Int32
Dim tot As Int32 = 0
For x = 0 To s.Length - 1 Step 1
Dim Val As Integer = ConvertToVal(s(x))
tot += Val
Next
Return CalcStupidNumber(tot.ToString())
End Function
Private Function ConvertToVal(ByVal c As Char) As Integer
If (Char.IsDigit(c)) Then
Return Integer.Parse(c)
End If
Return System.Convert.ToInt32(c) - 96 ' offest of a
End Function
하지만 vb 스크립트가 아닌 VB 스크립트 –
예 VB 스크립트 부분을 알지 못했습니다. – rerun
:
Function numerology(literal)
result = 0
for i = 1 to Len(literal)
'' // for each letter, take its ASCII value and substract 64,
'' so "A" becomes 1 and "Z" becomes 26
result = result + Asc(Mid(literal, i, 1)) - 64
next
'' // while result is bigger than 10, let's sum it's digits
while(result > 10)
partial = 0
for i = 1 to Len(CStr(result))
partial = partial + CInt(Mid(CStr(result), i, 1))
next
result = partial
wend
numerology = result
End Function
참고 : * // 결과는 10보다 커집니다. * 부분은 실제로 디지털 루트 계산입니다 (http : //en.wikipedia .org/wiki/Digital_root), 이는 간단한 수식 '1 + (result-1) Mod 9'을 사용하여 수행 할 수 있습니다. ;) – Helen
@Helen, 사랑스러워! 당신의 대답이 추가 된 것을 보았습니다. 그래서 나는이 버전을 그대로 유지할 것입니다. –
안녕 루벤스 파리 아스 답변을 게시 해 주셔서 감사합니다. 이 프로그램은 매우 효율적이었습니다. 방금 계산을 위해 literal = Ucase (리터럴) 줄을 추가했습니다. 그게 전부 야. 도움을 주셔서 감사합니다 – Deepa
을 여기에 있습니다 :
Function Numerology(Str)
Dim sum, i, char
' Convert the string to upper case, so that 'X' = 'x'
Str = UCase(Str)
sum = 0
' For each character, ...
For i = 1 To Len(Str)
' Check if it's a letter and raise an exception otherwise
char = Mid(Str, i , 1)
If char < "A" Or char > "Z" Then Err.Raise 5 ' Invalid procedure call or argument
' Add the letter's index number to the sum
sum = sum + Asc(char) - 64
Next
' Calculate the result using the digital root formula (http://en.wikipedia.org/wiki/Digital_root)
Numerology = 1 + (sum - 1) Mod 9
End Function
헬렌 답장을 보내 주셔서 감사합니다. 그것은 좋은 대답입니다. 고맙습니다 – Deepa
이 함수형 프로그래밍과는 아무 상관이 없습니다. 해당 태그를 제거하십시오. –
@Max가 완료되었습니다. –