Skip to content

Commit 3a35a21

Browse files
authored
Merge pull request #171 from vzsky/add_0012
2 parents 1ff3dfe + 75fbddd commit 3a35a21

File tree

1 file changed

+96
-0
lines changed

1 file changed

+96
-0
lines changed

md/0012.md

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
สังเกตว่าบรรทัดที่ 1 กับ 5 จะเหมือนกันเสมอ และบรรทัดที่ 2 กับ 4 จะเหมือนกันเสมอ ดังนั้นเราจะอธิบายวิธีการสร้างเฉพาะบรรทัดที่ 1, 2, และ 3
2+
3+
บรรทัดที่ 1 สังเกตว่าจะมีแพทเทินคือ `..#.`, `..#.`, `..*.`, และวนไปเรื่อย ๆ ปิดท้ายด้วยตัว `.`
4+
5+
บรรทัดที่ 2 สังเกตว่าจะมีแพทเทินคือ `.#.#`, `.#.#`, `.*.*`, และวนไปเรื่อย ๆ ปิดท้ายด้วยตัว `.`
6+
7+
บรรทัดที่ 3 สังเกตุว่าจะมีแพทเทินคือ `#.O.`, `#.O.`, `*.O.`, `*.O.` วนไปเรื่อย ๆ และจบด้วย `#` หรือ `*` ขึ้นอยู่กับกรณี (ว่าความยาวของอินพุตหารด้วย 3 ลงตัวหรือไม่)
8+
9+
เราใช้ [ternary operator](https://www.geeksforgeeks.org/cpp/cpp-ternary-or-conditional-operator/) ในการเขียนโค้ดให้กระชับขึ้น หรือจะเขียนด้วย `if-else` ก็ได้เช่นกัน
10+
11+
```cpp
12+
#include<bits/stdc++.h>
13+
using namespace std;
14+
int main () {
15+
string s;
16+
cin >> s;
17+
int n = s.size();
18+
19+
// บรรทัดที่ 1
20+
for (int i = 0; i < n; i++) {
21+
cout << (i % 3 == 2 ? "..*." : "..#.");
22+
} cout << ".\n";
23+
24+
// บรรทัดที่ 2
25+
for (int i = 0; i < n; i++) {
26+
cout << (i % 3 == 2 ? ".*.*" : ".#.#");
27+
} cout << ".\n";
28+
29+
// บรรทัดที่ 3
30+
for (int i = 0; i < n; i++) {
31+
if (i != 0 && i % 3 != 1) cout << "*." << s[i] << ".";
32+
else cout << "#." << s[i] << ".";
33+
}
34+
cout << (n % 3 == 0 ? "*" : "#") << "\n";
35+
36+
// บรรทัดที่ 4
37+
for (int i = 0; i < n; i++) {
38+
cout << (i % 3 == 2 ? ".*.*" : ".#.#");
39+
} cout << ".\n";
40+
41+
// บรรทัดที่ 5
42+
for (int i = 0; i < n; i++) {
43+
cout << (i % 3 == 2 ? "..*." : "..#.");
44+
} cout << ".\n";
45+
46+
return 0;
47+
}
48+
```
49+
50+
สังเกตว่าบรรทัดที่ 1 กับ 5 จะเหมือนกันเสมอ และบรรทัดที่ 2 กับ 4 จะเหมือนกันเสมอ ดังนั้นเราจะอธิบายวิธีการสร้างเฉพาะบรรทัดที่ 1, 2, และ 3
51+
52+
บรรทัดที่ 1 สังเกตว่าจะมีแพทเทินคือ `..#.`, `..#.`, `..*.`, และวนไปเรื่อย ๆ ปิดท้ายด้วยตัว `.`
53+
54+
บรรทัดที่ 2 สังเกตว่าจะมีแพทเทินคือ `.#.#`, `.#.#`, `.*.*`, และวนไปเรื่อย ๆ ปิดท้ายด้วยตัว `.`
55+
56+
บรรทัดที่ 3 สังเกตุว่าจะมีแพทเทินคือ `#.O.`, `#.O.`, `*.O.`, `*.O.` วนไปเรื่อย ๆ และจบด้วย `#` หรือ `*` ขึ้นอยู่กับกรณี (ว่าความยาวของอินพุตหารด้วย 3 ลงตัวหรือไม่)
57+
58+
59+
```cpp
60+
#include<bits/stdc++.h>
61+
using namespace std;
62+
int main () {
63+
string s;
64+
cin >> s;
65+
int n = s.size();
66+
67+
// บรรทัดที่ 1
68+
for (int i = 0; i < n; i++) {
69+
cout << (i % 3 == 2 ? "..*." : "..#.");
70+
} cout << ".\n";
71+
72+
// บรรทัดที่ 2
73+
for (int i = 0; i < n; i++) {
74+
cout << (i % 3 == 2 ? ".*.*" : ".#.#");
75+
} cout << ".\n";
76+
77+
// บรรทัดที่ 3
78+
for (int i = 0; i < n; i++) {
79+
if (i != 0 && i % 3 != 1) cout << "*." << s[i] << ".";
80+
else cout << "#." << s[i] << ".";
81+
}
82+
cout << (n % 3 == 0 ? "*" : "#") << "\n";
83+
84+
// บรรทัดที่ 4
85+
for (int i = 0; i < n; i++) {
86+
cout << (i % 3 == 2 ? ".*.*" : ".#.#");
87+
} cout << ".\n";
88+
89+
// บรรทัดที่ 5
90+
for (int i = 0; i < n; i++) {
91+
cout << (i % 3 == 2 ? "..*." : "..#.");
92+
} cout << ".\n";
93+
94+
return 0;
95+
}
96+
```

0 commit comments

Comments
 (0)