เรื่องเกี่ยวกะ ฟังก์ชั่น ( ใครเก่ง ๆ ช่วยตอบหน่อยนะ )

ห้องของพี่บัณฑิต สดๆร้อนๆ ครับ

Moderators: Spadez, oosora

เรื่องเกี่ยวกะ ฟังก์ชั่น ( ใครเก่ง ๆ ช่วยตอบหน่อยนะ )

Postby I_LoVe_moNKeY » Sun Oct 30, 2005 2:18 pm


function getinput( txt ){ // A-Z = 65 -> 90 ; a-z = 97 -> 122
var input = txt ;
var result = "" ;
var temp ;
if(input){
input = input.toLowerCase() ;
for(var i = 0;i < input.length ;i++){
temp = input.charCodeAt(i) ;
if(temp > 96 && temp < 122){
temp += i ;
temp %= 26 ;
temp += 97 ;
result += String.fromCharCode(temp) ;
}
}
}
result = result.toLowerCase() ;
alert(result) ;
}



อยากรู้ว่าถ้าต้องการ result ออกมาเปง uymaxbxfptvuqylzeoc
ต้องใส่ txt เปงอาราย ใครเก่ง ๆ ช่วยตอบหน่อยนะ ( ขอโทดที ไม่รู้คำสั่ง จัดหน้าในบอร์ด มานเลยไม่ยอมจัดหน้าให้ )


Kung #20


<?php
if(!$gui && !$document)
echo "OK !!";
else
echo "Dead !!";
?>


Image
User avatar
I_LoVe_moNKeY
Member
 
Posts: 60
Joined: Sun Jun 26, 2005 8:24 pm
Location: In front of U :)

ค่อยๆคิด

Postby the_Maestro » Sun Oct 30, 2005 9:40 pm

จริงๆมันก้ไม่ยากเกินกำลังนายหรอก ลองคิดดู :D

อย่างตัวแรกเราอยากได้ตัว "u"ใช่ป่ะ code มันคือ 116 เพราะเค้าบอกว่า z = 122 ลองไล่ดูก้ได้
ทีนี้ถ้าอยากได้ 116 เราก้ต้องหาว่า ต้องใส่ตัวอะไรลงมา นั่นก้คือหาโค้ดของ input ตัวที่ i นั่นแหละ จากโค้ดของfunction จะเห็นว่าถ้า input เป็นเท่าไหร่มันจะเอาไปบวกกับตำแหน่ง แล้วmodด้วย26แล้วก้บวก97เสร็จแล้วก้ได้เป็นค่า result เพราะฉะนั้นเราก้ทำย้อนกลับ

สำหรับตัว "u"
116-97 = 19 แสดงว่า input + 0(ตำแหน่ง) ต้องหารด้วย 26 เหลือเศษ 19 เราก้มาดูว่ามีตัวอะไรบ้างที่หารด้วย 26 แล้วเหลือเศษ 19 ก้จะมี
19,45,64,83,102,121,140...
แต่ที่ใช้ได้มีแค่ 83,102,121 สามตัว เพราะที่เหลือไม่ใช่โค้ดของตัวหนังสือ ตามที่กำหนดมาให้
ก้แสดงว่าถ้าใส่ สามตัวนี้จะได้ u จริงหรือเปล่า อย่าพึ่งเชื่อต้องตรวจคำตอบก่อน
ตัว 83 ก้คือ ตัว "S" ซึ่งถ้าดูดีๆจะเห็นว่าในโค้ดน่ะถ้าเป็นตัวใหญ่จะถูกทำให้เป็นตัวเล็กก่อน
input = input.toLowerCase() ; //ทำให้เป็นตัวเล็ก
จาก 83 ก้จะกลายเป็น115 ซึ่งไม่ถูกและ
ส่วน 102 กะ 121 ไม่น่ามีปัญหา เพราะเป็นตัวเล็กอยู่แล้ว
102 = "g" ,121 = "y"
ก้คือถ้าใส่สองตัวนี้ลงไปจะได้ตัว "u"
ฮั่นแน่ นึกว่าจบแล้วอ่ะดิ
ต้องคิดอีกกรณีนึงด้วย คือ ถ้าเป็น G กับ Y ก้ใช้ได้นะเพราะมันจะถูกเปลี่ยนให้เป็นตัวเล็กอยู่แล้ว
ทันี้ก้คิดแบบนี้แหละ แต่ตัวต่อไปต้องระวังเรื่องค่าตำแหน่งเพราะตัวที่สองจะถูกบวกด้วยหนึ่งก่อนเอาไปmodด้วย26แบบนี้ไปเรื่อยๆก้จะออกเอง คิดเองละกันนะ โชคดีจ้า
Image
#20

"
Someday, you will meet someone who separate your life to two parts;
before you meet her,...

and after you failed in love with her.

"
User avatar
the_Maestro
Member
 
Posts: 142
Joined: Thu Aug 18, 2005 11:28 pm


Return to Com-Sci#48 (CS รุ่น20)

Who is online

Users browsing this forum: No registered users and 4 guests

cron