ใครจะกินโคล่าเป็นคนสุดท้าย
โจทย์
กติกาเกม
-
มีคนเล่น 2 คน (A และ B)
-
แต่ละรอบ คนเล่นจะดื่มโคล่าสลับกันไปเรื่อยๆ
-
จำนวนโคล่าที่ดื่มในแต่ละรอบจะเพิ่มขึ้นเรื่อยๆ ตามตารางนี้:
คน ดื่มครั้งที่ 1 ดื่มครั้งที่ 2 ดื่มครั้งที่ 3 ดื่มครั้งที่ 4 ดื่มครั้งที่ 5 ดื่มครั้งที่ n คนดื่มก่อน 1 3 4 7 8 9 13 14 15 16 21 22 23 24 25 … คนดื่มหลัง 2 5 6 10 11 12 17 18 19 20 26 27 28 29 30 … -
เกมจะจบลงเมื่อมีคนดื่มโคล่าครบตามจำนวนที่กำหนด
| Input | Output |
|---|---|
| A 20 | B |
โค้ด
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
char firstPerson = scanner.next().charAt(0);
char secondPerson = firstPerson == 'A' ? 'B' : 'A';
int totalCola = scanner.nextInt();
int n = 1;
int tracking = 1;
while (tracking <= totalCola) {
for (int i = 1; i <= n; i++) {
if (tracking == totalCola) {
System.out.println(firstPerson);
}
tracking++;
}
for (int i = 1; i <= n; i++) {
if (tracking == totalCola) {
System.out.println(secondPerson);
}
tracking++;
}
n++;
}
}
}คำอธิบาย
ขั้นตอนที่ 1: การนำเข้าไลบรารีและสร้างคลาส
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// โค้ดหลักจะอยู่ในนี้
}
}- เราเริ่มด้วยการนำเข้า
Scannerเพื่อรับข้อมูลจากผู้ใช้ - สร้างคลาส
Mainและเมธอดmainซึ่งเป็นจุดเริ่มต้นของโปรแกรม
ขั้นตอนที่ 2: การรับข้อมูลนำเข้า
Scanner scanner = new Scanner(System.in);
char firstPerson = scanner.next().charAt(0);
char secondPerson = firstPerson == 'A' ? 'B' : 'A';
int totalCola = scanner.nextInt();- สร้าง
scannerเพื่อรับข้อมูล - รับตัวอักษรแรก (A หรือ B) เพื่อกำหนดว่าใครเป็นคนดื่มก่อน
- กำหนดตัวอักษรของคนดื่มหลังโดยใช้ ternary operator
- รับจำนวนโคล่าทั้งหมดที่จะดื่ม
ขั้นตอนที่ 3: การเตรียมตัวแปร
int n = 1;
int tracking = 1;nเป็นตัวแปรที่ใช้กำหนดจำนวนโคล่าที่แต่ละคนจะดื่มในแต่ละรอบtrackingใช้นับจำนวนโคล่าที่ดื่มไปแล้วทั้งหมด
ขั้นตอนที่ 4: การจำลองการดื่มโคล่า
while (tracking <= totalCola) {
// โค้ดสำหรับการดื่มของทั้งสองคน
}- ใช้ลูป
whileเพื่อดำเนินการจนกว่าจะดื่มโคล่าครบตามจำนวน
ขั้นตอนที่ 5: การดื่มของคนแรก
for (int i = 1; i <= n; i++) {
if (tracking == totalCola) {
System.out.println(firstPerson);
}
tracking++;
}- คนแรกดื่มโคล่าจำนวน
nขวด - เพิ่มค่า
trackingทุกครั้งที่ดื่ม - ถ้า
trackingเท่ากับtotalColaแสดงว่าคนแรกเป็นคนดื่มขวดสุดท้าย
ขั้นตอนที่ 6: การดื่มของคนที่สอง
for (int i = 1; i <= n; i++) {
if (tracking == totalCola) {
System.out.println(secondPerson);
}
tracking++;
}- คนที่สองดื่มโคล่าจำนวน
nขวดเช่นกัน - ตรวจสอบเช่นเดียวกับคนแรก
ขั้นตอนที่ 7: การเพิ่มจำนวนโคล่าในแต่ละรอบ
n++;- เพิ่มค่า
nเพื่อให้ในรอบถัดไป แต่ละคนดื่มโคล่ามากขึ้น
ตัวอย่างการทำงาน
สมมติว่าเรามีข้อมูลนำเข้าดังนี้:
A
20Aเป็นคนดื่มก่อน,Bเป็นคนดื่มหลัง- ต้องดื่มโคล่าทั้งหมด 20 ขวด
ตามตารางที่ให้มา โคล่าขวดที่ 20 จะถูกดื่มโดยคนที่ดื่มหลัง (B) ในรอบที่ 4
ดังนั้น โปรแกรมจะแสดงผลลัพธ์เป็น:
Bปรับปรุงล่าสุด