The Cow-Signal
Explicación
Generamos una grilla más grande repitiendo cada carácter de la grilla chica tanto en horizontal como en vertical, de modo que cada carácter se convierta en un bloque de caracteres idénticos en la salida final.
Para hacerlo, primero repetimos cada uno de los caracteres de cada fila veces consecutivas, y también repetimos veces consecutivas cada una de estas filas expandidas en la grilla.
Solución en video
Por Jeffrey Meng
Video de YouTube (yz3qBXEhRGc)
Código de la solución en video
#include <bits/stdc++.h>
using namespace std;
int main() {
freopen("cowsignal.in", "r", stdin);
freopen("cowsignal.out", "w", stdout);
int M, N, K;
cin >> M >> N >> K;
for (int i = 0; i < M; i++) {
string line;
cin >> line;
string outputLine;
for (int j = 0; j < N; j++) {
for (int k = 0; k < K; k++) { outputLine += line[j]; }
}
for (int j = 0; j < K; j++) { cout << outputLine << "\n"; }
}
}import java.io.*;
import java.util.StringTokenizer;
public class CowSignal {
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new FileReader("cowsignal.in"));
PrintWriter out =
new PrintWriter(new BufferedWriter(new FileWriter("cowsignal.out")));
StringTokenizer st = new StringTokenizer(in.readLine());
int M = Integer.parseInt(st.nextToken());
int N = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
for (int i = 0; i < M; i++) {
String line = in.readLine();
String outputLine = "";
for (int j = 0; j < N; j++) {
for (int k = 0; k < K; k++) { outputLine += line.charAt(j); }
}
for (int j = 0; j < K; j++) { out.println(outputLine); }
}
out.close();
}
}Implementación
Complejidad temporal:
#include <bits/stdc++.h>
using namespace std;
void setIO(string name = "") {
ios_base::sync_with_stdio(0);
cin.tie(0);
if (name.size()) {
freopen((name + ".in").c_str(), "r", stdin);
freopen((name + ".out").c_str(), "w", stdout);
}
}
int main() {
setIO("cowsignal");
int height, width;
int scale;
cin >> height >> width >> scale;
vector<string> signal(height);
for (string &r : signal) { cin >> r; }
for (int i = 0; i < scale * height; i++) {
for (int j = 0; j < scale * width; j++) {
cout << signal[i / scale][j / scale];
}
cout << '\n';
}
}import java.io.*;
import java.util.*;
public class CowSignal {
public static void main(String[] args) throws IOException {
BufferedReader read = new BufferedReader(new FileReader("cowsignal.in"));
StringTokenizer initial = new StringTokenizer(read.readLine());
int height = Integer.parseInt(initial.nextToken());
int width = Integer.parseInt(initial.nextToken());
int scale = Integer.parseInt(initial.nextToken());
String[] signal = new String[height];
for (int r = 0; r < height; r++) { signal[r] = read.readLine(); }
PrintWriter written = new PrintWriter("cowsignal.out");
for (int i = 0; i < scale * height; i++) {
for (int j = 0; j < scale * width; j++) {
written.print(signal[i / scale].charAt(j / scale));
}
written.println();
}
written.close();
}
}with open("cowsignal.in") as read:
height, width, scale = map(int, read.readline().split())
signal = [read.readline() for _ in range(height)]
with open("cowsignal.out", "w") as written:
for i in range(scale * height):
for j in range(scale * width):
print(signal[i // scale][j // scale], end="", file=written)
print(file=written)