CodinGame Solo Puzzle - ASCII Art - Solved By Etienne THIERY
Maybe your like
- Previous
- cd ..
- Next
ASCII art
The aim of this puzzle is to copy and paste part of strings given in input, to convert a simple string into a nice ASCII-art representation. Once you have a few auxiliary functions to select the right parts of the strings, it is quite easy.
C
More dynamic allocation, string manipulation. Note the usage of preprocessor macros to make the code easyly maintainable : in a few keystrokes it would be possible to change the number of letters in the alphabet.
#include <stdlib.h> #include <stdio.h> #include <string.h> #define FIRST_CHAR 'a' #define LAST_CHAR 'z' #define QU_MARK (LAST_CHAR+1) // returns a substring of 'str' from index 'begin' (included) to index 'end' char *subString(char *str, int begin, int end) { int len = end-begin; char *sub = malloc((len+1)*sizeof(char)); strncpy(sub, str+begin, len); sub[len] = '\0'; return sub; } /* prints the 'l'-th line of the representation of character 'c' in ASCII-art alphabet 'abc'. 'w' is the width of one character*/ void printChar(int l, char c, char** abc, int w) { int begin = (c-FIRST_CHAR)*w; int end = begin+w; printf("%s", subString(abc[l], begin, end)); } int main(int argc, char** argv) { // width and height of the ASCII-art representation of 1 character int width, height; scanf("%d\n%d\n", &width, &height); // text to convert, be careful, fgets store the \n char text[256]; fgets(text, 256, stdin); // ASCII art representations of the whole alphabet + ? char** rows = malloc(height*sizeof(char*)); for (int i = 0; i < height; i++) { rows[i] = malloc(1024*sizeof(char)); fgets(rows[i], 1024, stdin); } // prints the result line by line, character by character char c; for (int l = 0; l < height; l++) { int i = 0; while ((c = tolower(text[i])) != '\n') { if (FIRST_CHAR <= c && c <= LAST_CHAR) printChar(l, c, rows, width); else printChar(l, QU_MARK, rows, width); i++; } printf("\n"); } return EXIT_SUCCESS; }Java
import java.util.*; class Solution { static final char FIRST_CHAR = 'a'; static final char LAST_CHAR = 'z'; static final char QU_MARK = LAST_CHAR+1; /** prints the l-th line of the ASCII-art representation of a character * @param l line to print * @param c char to print * @param rep ASCII-art representation of the whole alphabet + ? * @param w width of the ASCII-art representation of 1 character */ public static void printChar(int l, char c, String[] rep, int w) { int begin = (c-FIRST_CHAR)*w; int end = begin+w; System.out.print(rep[l].substring(begin, end)); } public static void main(String args[]) { Scanner in = new Scanner(System.in); // width and height of the ASCII-art representation of 1 character int width = in.nextInt(); int height = in.nextInt(); // text to convert in.nextLine(); String text = in.nextLine().toLowerCase(); // ASCII art representations of the whole alphabet + ? String[] rows = new String[height]; for (int i = 0; i < height; i++) rows[i] = in.nextLine(); // prints the result line by line, character by character for (int l = 0; l < height; l++) { for (char c : text.toCharArray()) if (FIRST_CHAR <= c && c <= LAST_CHAR) printChar(l, c, rows, width); else printChar(l, QU_MARK, rows, width); System.out.print("\n"); } } }Python 3
# some constants, ord gives the ascii code of a character (chr does the opposite) FIRST_CHAR = ord('a') LAST_CHAR = ord('z') QU_MARK = LAST_CHAR+1 def printChar(l, c, rep, w): ''' prints the 'l'-th line of the ASCII-art representation of a character 'c' rep is the ASCII-art representation of the whole alphabet + ? and w width of the ASCII-art representation of 1 character''' begin = (ord(c)-FIRST_CHAR)*w end = begin+w print(rep[l][begin:end], end="") # width and height of the ASCII-art representation of 1 character # text to convert, ASCII art representations of the whole alphabet + ? width, height, text, rows = int(input()), int(input()), input().lower(), [] for i in range(height): rows.append(input()) # prints the result line by line, character by character for l in range(height): for c in text: if (FIRST_CHAR <= ord(c)) and (ord(c) <= LAST_CHAR): printChar(l, c, rows, width) else: printChar(l, chr(QU_MARK), rows, width) print() ContactTag » Codingame Ascii Art Solution Python
-
CodinGame-Solutions/07-ascii-3 At Master - GitHub
-
CodinGame-Solutions/ At Master - ASCII Art - GitHub
-
CodinGame Python - E6 - ASCII Art - YouTube
-
[Codingame - Puzzle Facile] - 7. Ascii Art [Python3] - YouTube
-
Codingame Solution: ASCII Art
-
[Community Puzzle] Number Shifting - CodinGame Forum
-
ASCII Art Puzzle Discussion - CodinGame - Coding Game
-
Can Any Expert Help Me With The Solution Of This Puzzle On Codingame
-
Code Golf - From Text To Ascii Art From CodinGame Practice Puzzle
-
ASCII Art – Challenge | Coding Like A Grekz
-
What Kind Of Experience Is It To Learn Programming While Playing ...
-
Aurélien Despons / CodinGame · GitLab
-
CodinGame - Puzzle ASCII Art Par LucasLethuillier - Page 1
-
Codingame - ASCII Art 思路- 代码先锋网