Categories
Code

[#1S4L] Way Too Long Words

ข้อนี้ถ้าคำที่รับมายาวกว่า 10 ตัวอักษรให้ปรินท์อักษรตัวแรก+จำนวนตัวอักษรที่อยู่ระหว่างตัวแรกและตัวสุดท้าย+อักษรตัวสุดท้าย แต่ถ้าสั้นกว่า 10 ตัวอักษรให้ปรินท์คำเดิมออกมา

Way Too Long Words


Categories
Code

[#1S4L] Next Round

ข้อนี้รับข้อมูล 3 ตัวครับจำนวนผู้เข้าแข่งขัน ลำดับของคะแนนที่ให้ผ่านเข้ารอบ แล้วก็คะแนนของผู้เข้าแข่งขันเรียงจากมากไปน้อย โดยหาว่ามีกี่คนที่ได้เข้ารอบโดยคำนวณจากคนที่ได้คะแนนมากกว่าที่กำหนดไว้

  • ข้อนี้จะยากขึ้นถ้า input คะแนนแบบไม่เรียงมากน้อย 

Categories
Code

[#1S4L] Watermelon

ย้ายมาเขียนที่ Codeforces ครับเนื่องจากทนแรงต้านทานจากรุ่นพี่หลายๆคนไม่ไหว 😛
ข้อนี้ได้รับแตงโมมาลูกนึงครับให้เราหาว่ามันจะแบ่งเป็นสองส่วนโดยที่น้ำหนักแต่ละส่วนเป็นเลขคู่ได้มั้ย จริงๆข้อนี้ไม่อยากแต่ submit ทีแรกมีตกม้าตายที่นึงลองดูกันดีๆนะครับ 😛

Watermelon

Categories
Code

[#1S4L] Watermelon

ย้ายมาเขียนที่ Codeforces ครับเนื่องจากทนแรงต้านทานจากรุ่นพี่หลายๆคนไม่ไหว 😛
ข้อนี้ได้รับแตงโมมาลูกนึงครับให้เราหาว่ามันจะแบ่งเป็นสองส่วนโดยที่น้ำหนักแต่ละส่วนเป็นเลขคู่ได้มั้ย จริงๆข้อนี้ไม่อยากแต่ submit ทีแรกมีตกม้าตายที่นึงลองดูกันดีๆนะครับ 😛

Watermelon

Categories
Code

[1S4L] ATM

ข้อนี้เลือกทำเพราะจะได้ฝึกเรื่อง output format ของแต่ละภาษา
ข้อนี้ต้องการถอนเงินออกจากธนาคาร ก็เช็คจำนวนเงินที่มีกับจำนวนที่ต้องการถอนออก ถ้าถอนสำเร็จคิดค่าธรรมเนียม 0.5 ครับ

  • C ไวสุด Java ช้าสุดอีกตามเคย
  • Java 178.7M < Ruby 7.2M < Python 4.2M <C 1.6M
  • ข้อนี้ทำนานมากเพราะเรื่อง output format นี่ล่ะ
  • ข้อหน้าคาดว่าน่าจะเปลี่ยนไปทำที่ Codeforces แทนครับ

Categories
Code

[1S4L] Factorial

ย้ายจาก SPOJ มาทำที่ Codechef เพราะว่าเว็บมันสวยดีจริงๆมี Codeforces อีกแต่โจทย์ที่นั่นยังยากไปหน่อยเลยมาฝึกฝีมือที่นี่ก่อน

ข้อนี้ให้หาจำนวนเลข 0 ด้านท้ายของผลลัพธ์ n! ครับ จริงๆผมยังหาวิธีอธิบายความคิดเป็นภาษามนุษย์ไม่ได้เลยว่าทำไมมันถึงเป็นแบบนี้ เลยได้แต่ Algorithm มา

  • JAVA 177.7M > Python 4.5M > Ruby 7.2M > C 1.6M
  • ข้อนี้เขียนด้วย C กว่าภาษาอื่นมากใช้เวลาเทสแค่ 0.25 วินาที Ruby อยู่ที่ 2.53 วินาที นอกนั้น 4 วินาที + (แต่ Python ช้าสุดนะ)
  • [JAVA] ยังแสดงผล string กับ variable พร้อมกันในคำสั่งเดียวไม่ได้สักทีใน C มัน (“%d\n”,var) แบบนี้ได้เลย ใครทำเป็นชี้แนะหน่อยนะครับ

Factorial
Problem code: FCTRL

C

[c]
#include <stdio.h>
int main(){
int limit;
int fact,p,ans;

scanf("%d",&limit);
while (limit>0){
scanf("%d",&fact);
p = 5;
ans = 0;
while (fact/p!=0){
ans += fact/p;
p *=5;

}
printf("%d\n",ans);
limit–;
}
}

[/c]

Python

[python]

limit = int(raw_input())
for i in range(0,limit):
fact = int(raw_input())
ans = 0
p = 5
while(p <= fact):
ans += (fact / p)
p *= 5
print ans
[/python]

Ruby

[ruby]

limit = gets.to_i()
while limit>0
fact = gets.to_i()
ans = 0
p = 5
while fact/p!=0
ans += fact/p
p *=5
end
puts ans
limit -=1
end

[/ruby]

JAVA

[java]
import java.util.Scanner;
class main{
public static void main(String[] arg){
Scanner in = new Scanner(System.in);
int limit,ans,p,fact;
limit = in.nextInt();
while (limit>0){
fact = in.nextInt();
ans = 0;
p = 5;
while (fact/p!=0){
ans += fact/p;
p *=5;
}
System.out.print(ans);
System.out.print("\n");
limit–;
}
}
}
[/java]

Categories
Code

[1S4L] Adding Reversed Numbers

จะเห็นว่าบล็อกซีรีย์เปลี่ยนเป็น #1S4L แล้วนะครับเพราะยังหาอะไรมาใช้แทนไม่ได้เลยขอตัดเหลือแค่ 4 ภาษา
ข้อนี้ถ้าเขียนจาก Python จะสั้นมากๆเพราะใช้ [::-1] ในการ reverse ได้เลย

  • เขียนจาก Ruby จะยาวขึ้นมาหน่อยเพราะต้องแปลง string > int ไปมา
  • เขียนจาก C กับ Java ก็เหมือนเดิมครับยาวหน่อย
  • ตอนเขียน Java นี่เล่นมึนไปนานเพราะไม่เคยเขียนแล้วลอง custom function ขึ้นมาเองกว่าจะได้ XD
  • การใช้ MEM Java 178M > Ruby 7.2M > Python 3.9M > C 1.6M

Adding Reversed Numbers

Problem code: ADDREV

C

[c]

#include <stdio.h>
int reverse(int num){
int reverse = 0;

while(num!=0){
reverse = reverse *10;
reverse = reverse + num%10;
num = num/10;
}
return reverse;
}
int main(){
int num1,num2,limit,sum;
scanf("%d",&limit);
while (limit>0){
scanf("%d",&num1);
scanf("%d",&num2);
sum = reverse(num1)+reverse(num2);
printf("%d\n",reverse(sum));
limit–;
}
}

[/c]

Python

[python]

limit = int(raw_input().strip())
while limit>0:
num1 = input()
num2 = input()
sum = int(str(num1)[::-1]) + int(str(num2)[::-1])
print int(str(sum)[::-1])
limit -=1

[/python]

Ruby

[ruby]
limit = gets.to_i
while limit >0
num1,num2 = gets.split
sum = num1.reverse.to_i + num2.reverse.to_i
sumrev = sum.to_s.reverse.to_i
puts sumrev
limit -= 1
end
[/ruby]

Java

[java]
import java.util.Scanner;
class main{
public static void main(String[] arg){
Scanner in = new Scanner(System.in);
int limit,num1,num2,sum;
limit = in.nextInt();
while (limit>0){
num1= in.nextInt();
num2 =in.nextInt();
sum = reverse(num1)+reverse(num2);
System.out.print(reverse(sum));
System.out.print("\n");
limit–;
}

}
public static int reverse(int num){
int reverse =0;
while (num!=0){
reverse = reverse*10;
reverse = reverse + num%10;
num = num/10;
}
return reverse;
}

}

[/java]

Categories
Code

[1S5L]Life, the Universe, and Everything

 Life, the Universe, and Everything

 Problem code: TEST

ข้อนี้ก็ไม่มีอะไรมากครับรับตัวเลขไม่เกินสองหลักเข้ามาแล้วแสดงผลแต่ถ้าเจอเลข 42 ให้หยุดทันที

C

[c]
int main(){
int x;

while(1){
scanf("%d",&x);
if (x==42){
break;
}
printf ("%d\n",x);

}
return 0;
}

[/c]

Python

[python]
while(True):
x = input()
if(x==42):
break;
else:
print x

[/python]

Ruby

[ruby]
while true
x = gets.to_i()
if x == 42
break
end
puts x
end
[/ruby]

Java

[java]
import java.util.Scanner;
class main{
public static void main(String[] arg){
Scanner in = new Scanner(System.in);

while(true){
int x = in.nextInt();
if (x==42){
break;
}
else{
System.out.print(x);
System.out.print("\n");
}
}
}
}
[/java]

SPOJ เนี่ยเค้ามีบอกด้วยว่าใช้ MEM ไปเท่าไรก็ตามนี้เลยครับ JAVA 1398M > Ruby 7.2M >Python 2.7 3.7M > C 1.6M
ตอนนี้ยังมีแค่ 4 ภาษาอยู่นะครับเพราะ JS ว่าจะตัดทิ้งไปเลยยังหาอีกภาษามาแทนไม่ได้ ยังไงใครมีข้อเสนออะไรแนะนำหน่อยนะครับ ^__^

Categories
Code

[1S5L]Life, the Universe, and Everything

 Life, the Universe, and Everything

 Problem code: TEST

ข้อนี้ก็ไม่มีอะไรมากครับรับตัวเลขไม่เกินสองหลักเข้ามาแล้วแสดงผลแต่ถ้าเจอเลข 42 ให้หยุดทันที

C

[c]
int main(){
int x;

while(1){
scanf("%d",&x);
if (x==42){
break;
}
printf ("%d\n",x);

}
return 0;
}

[/c]

Python

[python]
while(True):
x = input()
if(x==42):
break;
else:
print x

[/python]

Ruby

[ruby]
while true
x = gets.to_i()
if x == 42
break
end
puts x
end
[/ruby]

Java

[java]
import java.util.Scanner;
class main{
public static void main(String[] arg){
Scanner in = new Scanner(System.in);

while(true){
int x = in.nextInt();
if (x==42){
break;
}
else{
System.out.print(x);
System.out.print("\n");
}
}
}
}
[/java]

SPOJ เนี่ยเค้ามีบอกด้วยว่าใช้ MEM ไปเท่าไรก็ตามนี้เลยครับ JAVA 1398M > Ruby 7.2M >Python 2.7 3.7M > C 1.6M
ตอนนี้ยังมีแค่ 4 ภาษาอยู่นะครับเพราะ JS ว่าจะตัดทิ้งไปเลยยังหาอีกภาษามาแทนไม่ได้ ยังไงใครมีข้อเสนออะไรแนะนำหน่อยนะครับ ^__^

Categories
About Me Education

Solving 1 Problem in 5 Languages

หลังจากผ่านพ้น ม.6 ไปได้ด้วยเกือบจะดี(ยังรอผลแอดอยู่) อยู่บ้านว่างๆมาเกือบเดือนแล้วครับ จริงๆตั้งปณิธานไว้ว่าจะเขียนโปรแกรมวันละข้อ แต่ยังไม่ได้ทำตามที่ตั้งเป้าไว้เลย เพื่อเป็นการฝึกฝนเตรียมความพร้อมทีจะไปเรียนวิศวะคอมพิวเตอร์ในระดับมหาลัย ผมเลยคิดไว้ว่าจะเขียนโปรแกรมจำพวก Solving Program 1 ข้อออกมาใน 5 ภาษาโดยมี

1. C (อันนี้เขียนเพราะรู้สึกว่าปี 1 ต้องใช้แล้วก็ฝึกพวก Pointer ด้วย)
2. Python (อันนี้เขียนเพราะรู้สึกมันแปลกดี)
3. Ruby (อันนี้เขียนเพราะอยาก)
4. Java (ช่วงนี้เห็นแต่ละ บ. รับ Java Programmer กันเยอะมากเลยอยากลองหัดเขียน + ฝึกไว้ใช้กับ Android ด้วย)
5. JavaScript (อันนี้เขียนเพราะชอบทำ Web App)

ก็ลองติดตามกันดูนะครับ สัญญาว่าจะเขียนบ่อยๆ..

EDIT: ตัดเหลือแค่ 4 พอนะครับหาอะไรมาแทน JS ไม่ได้ใช้ #1S4L