글자바꿔가며 예쁘게그리는건 어려워서 패스!

그리고 개구리가 너무 크다ㅠㅠ



EDIT1: 이미지 큰것도 인정해주신다는 말에 더 올려봄









EDIT2: 코드 및 다른버전

const vector<uint32_t>term_colors{0x00000000,0x00800000,0x00008000,0x00808000,0x00000080,0x00800080,0x00008080,0x00C0C0C0,0x00808080,0x00FF0000,0x0000FF00,0x00FFFF00,0x000000FF,0x00FF00FF,0x0000FFFF,0x00FFFFFF,0x00000000,0x0000005F,0x00000087,0x000000AF,0x000000D7,0x000000FF,0x00005F00,0x00005F5F,0x00005F87,0x00005FAF,0x00005FD7,0x00005FFF,0x00008700,0x0000875F,0x00008787,0x000087AF,0x000087D7,0x000087FF,0x0000AF00,0x0000AF5F,0x0000AF87,0x0000AFAF,0x0000AFD7,0x0000AFFF,0x0000D700,0x0000D75F,0x0000D787,0x0000D7AF,0x0000D7D7,0x0000D7FF,0x0000FF00,0x0000FF5F,0x0000FF87,0x0000FFAF,0x0000FFD7,0x0000FFFF,0x005F0000,0x005F005F,0x005F0087,0x005F00AF,0x005F00D7,0x005F00FF,0x005F5F00,0x005F5F5F,0x005F5F87,0x005F5FAF,0x005F5FD7,0x005F5FFF,0x005F8700,0x005F875F,0x005F8787,0x005F87AF,0x005F87D7,0x005F87FF,0x005FAF00,0x005FAF5F,0x005FAF87,0x005FAFAF,0x005FAFD7,0x005FAFFF,0x005FD700,0x005FD75F,0x005FD787,0x005FD7AF,0x005FD7D7,0x005FD7FF,0x005FFF00,0x005FFF5F,0x005FFF87,0x005FFFAF,0x005FFFD7,0x005FFFFF,0x00870000,0x0087005F,0x00870087,0x008700AF,0x008700D7,0x008700FF,0x00875F00,0x00875F5F,0x00875F87,0x00875FAF,0x00875FD7,0x00875FFF,0x00878700,0x0087875F,0x00878787,0x008787AF,0x008787D7,0x008787FF,0x0087AF00,0x0087AF5F,0x0087AF87,0x0087AFAF,0x0087AFD7,0x0087AFFF,0x0087D700,0x0087D75F,0x0087D787,0x0087D7AF,0x0087D7D7,0x0087D7FF,0x0087FF00,0x0087FF5F,0x0087FF87,0x0087FFAF,0x0087FFD7,0x0087FFFF,0x00AF0000,0x00AF005F,0x00AF0087,0x00AF00AF,0x00AF00D7,0x00AF00FF,0x00AF5F00,0x00AF5F5F,0x00AF5F87,0x00AF5FAF,0x00AF5FD7,0x00AF5FFF,0x00AF8700,0x00AF875F,0x00AF8787,0x00AF87AF,0x00AF87D7,0x00AF87FF,0x00AFAF00,0x00AFAF5F,0x00AFAF87,0x00AFAFAF,0x00AFAFD7,0x00AFAFFF,0x00AFD700,0x00AFD75F,0x00AFD787,0x00AFD7AF,0x00AFD7D7,0x00AFD7FF,0x00AFFF00,0x00AFFF5F,0x00AFFF87,0x00AFFFAF,0x00AFFFD7,0x00AFFFFF,0x00D70000,0x00D7005F,0x00D70087,0x00D700AF,0x00D700D7,0x00D700FF,0x00D75F00,0x00D75F5F,0x00D75F87,0x00D75FAF,0x00D75FD7,0x00D75FFF,0x00D78700,0x00D7875F,0x00D78787,0x00D787AF,0x00D787D7,0x00D787FF,0x00D7AF00,0x00D7AF5F,0x00D7AF87,0x00D7AFAF,0x00D7AFD7,0x00D7AFFF,0x00D7D700,0x00D7D75F,0x00D7D787,0x00D7D7AF,0x00D7D7D7,0x00D7D7FF,0x00D7FF00,0x00D7FF5F,0x00D7FF87,0x00D7FFAF,0x00D7FFD7,0x00D7FFFF,0x00FF0000,0x00FF005F,0x00FF0087,0x00FF00AF,0x00FF00D7,0x00FF00FF,0x00FF5F00,0x00FF5F5F,0x00FF5F87,0x00FF5FAF,0x00FF5FD7,0x00FF5FFF,0x00FF8700,0x00FF875F,0x00FF8787,0x00FF87AF,0x00FF87D7,0x00FF87FF,0x00FFAF00,0x00FFAF5F,0x00FFAF87,0x00FFAFAF,0x00FFAFD7,0x00FFAFFF,0x00FFD700,0x00FFD75F,0x00FFD787,0x00FFD7AF,0x00FFD7D7,0x00FFD7FF,0x00FFFF00,0x00FFFF5F,0x00FFFF87,0x00FFFFAF,0x00FFFFD7,0x00FFFFFF,0x00080808,0x00121212,0x001C1C1C,0x00262626,0x00303030,0x003A3A3A,0x00444444,0x004E4E4E,0x00585858,0x00606060,0x00666666,0x00767676,0x00808080,0x008A8A8A,0x00949494,0x009E9E9E,0x00A8A8A8,0x00B2B2B2,0x00BCBCBC,0x00C6C6C6,0x00D0D0D0,0x00DADADA,0x00E4E4E4,0x00EEEEEE};

namespace Metric { inline int64_t Distance(const uint32_t lhs, const uint32_t rhs) { uint32_t lr = (lhs & 0xFF0000) >> 16; uint32_t lg = (lhs & 0x00FF00) >> 8; uint32_t lb = (lhs & 0x0000FF) >> 0; uint32_t rr = (rhs & 0xFF0000) >> 16; uint32_t rg = (rhs & 0x00FF00) >> 8; uint32_t rb = (rhs & 0x0000FF) >> 0; return abs(lr - (int64_t)rr) + abs(lg - (int64_t)rg) + abs(lb - (int64_t)rb); } inline uint32_t FindClosest(uint32_t target, const vector<uint32_t>& candidates) { uint32_t argmin = 0; int64_t min_distance = 1LL << 60; for (int32_t col = 0; col < candidates.size(); col++) { const uint32_t& candidate = candidates[col]; int64_t distance = Distance(target, candidate); if (distance < min_distance) { min_distance = distance; argmin = col; } } return argmin; } }; namespace ASCIIArt { vector<vector<string>> Convert(const vector<vector<vector<uint32_t>>>& image) { if (image.size() == 0) return {{""}}; vector<vector<string>> art(image.size()); uint32_t frm = 0; for (auto& frame: image) { uint32_t line = 0; art[frm].resize(frame.size()); for (auto& row: frame) { art[frm][line].resize(row.size()); uint32_t column = 0; for (auto& pixel: row) { art[frm][line][column] = Metric::FindClosest(pixel, term_colors); ++column; } ++line; } ++frm; } return art; } };