Okviri

0012

สังเกตว่าบรรทัดที่ 1 กับ 5 จะเหมือนกันเสมอ และบรรทัดที่ 2 กับ 4 จะเหมือนกันเสมอ ดังนั้นเราจะอธิบายวิธีการสร้างเฉพาะบรรทัดที่ 1, 2, และ 3

บรรทัดที่ 1 สังเกตว่าจะมีแพทเทินคือ ..#., ..#., ..*., และวนไปเรื่อย ๆ ปิดท้ายด้วยตัว .

บรรทัดที่ 2 สังเกตว่าจะมีแพทเทินคือ .#.#, .#.#, .*.*, และวนไปเรื่อย ๆ ปิดท้ายด้วยตัว .

บรรทัดที่ 3 สังเกตุว่าจะมีแพทเทินคือ #.O., #.O., *.O., *.O. วนไปเรื่อย ๆ และจบด้วย # หรือ * ขึ้นอยู่กับกรณี (ว่าความยาวของอินพุตหารด้วย 3 ลงตัวหรือไม่)

เราใช้ ternary operator ในการเขียนโค้ดให้กระชับขึ้น หรือจะเขียนด้วย if-else ก็ได้เช่นกัน

#include<bits/stdc++.h>	
using namespace std;	
int main () {	  
  string s;	  
  cin >> s;	  
  int n = s.size();	

  // บรรทัดที่ 1
  for (int i = 0; i < n; i++) {	    
    cout << (i % 3 == 2 ? "..*." : "..#.");	  
  } cout << ".\n";	

  // บรรทัดที่ 2
  for (int i = 0; i < n; i++) {	    
    cout << (i % 3 == 2 ? ".*.*" : ".#.#");	  
  } cout << ".\n";	

  // บรรทัดที่ 3
  for (int i = 0; i < n; i++) {	    
    if (i != 0 && i % 3 != 1) cout << "*." << s[i] << ".";	    
    else cout << "#." << s[i] << ".";	  
  } 
  cout << (n % 3 == 0 ? "*" : "#") << "\n";	

  // บรรทัดที่ 4
  for (int i = 0; i < n; i++) {	   
    cout << (i % 3 == 2 ? ".*.*" : ".#.#");	  
  } cout << ".\n";	

  // บรรทัดที่ 5
  for (int i = 0; i < n; i++) {	   
    cout << (i % 3 == 2 ? "..*." : "..#.");	  
  } cout << ".\n";	

  return 0;	
}

สังเกตว่าบรรทัดที่ 1 กับ 5 จะเหมือนกันเสมอ และบรรทัดที่ 2 กับ 4 จะเหมือนกันเสมอ ดังนั้นเราจะอธิบายวิธีการสร้างเฉพาะบรรทัดที่ 1, 2, และ 3

บรรทัดที่ 1 สังเกตว่าจะมีแพทเทินคือ ..#., ..#., ..*., และวนไปเรื่อย ๆ ปิดท้ายด้วยตัว .

บรรทัดที่ 2 สังเกตว่าจะมีแพทเทินคือ .#.#, .#.#, .*.*, และวนไปเรื่อย ๆ ปิดท้ายด้วยตัว .

บรรทัดที่ 3 สังเกตุว่าจะมีแพทเทินคือ #.O., #.O., *.O., *.O. วนไปเรื่อย ๆ และจบด้วย # หรือ * ขึ้นอยู่กับกรณี (ว่าความยาวของอินพุตหารด้วย 3 ลงตัวหรือไม่)

#include<bits/stdc++.h>	
using namespace std;	
int main () {	  
  string s;	  
  cin >> s;	  
  int n = s.size();	

  // บรรทัดที่ 1
  for (int i = 0; i < n; i++) {	    
    cout << (i % 3 == 2 ? "..*." : "..#.");	  
  } cout << ".\n";	

  // บรรทัดที่ 2
  for (int i = 0; i < n; i++) {	    
    cout << (i % 3 == 2 ? ".*.*" : ".#.#");	  
  } cout << ".\n";	

  // บรรทัดที่ 3
  for (int i = 0; i < n; i++) {	    
    if (i != 0 && i % 3 != 1) cout << "*." << s[i] << ".";	    
    else cout << "#." << s[i] << ".";	  
  } 
  cout << (n % 3 == 0 ? "*" : "#") << "\n";	

  // บรรทัดที่ 4
  for (int i = 0; i < n; i++) {	   
    cout << (i % 3 == 2 ? ".*.*" : ".#.#");	  
  } cout << ".\n";	

  // บรรทัดที่ 5
  for (int i = 0; i < n; i++) {	   
    cout << (i % 3 == 2 ? "..*." : "..#.");	  
  } cout << ".\n";	

  return 0;	
}