1. Java / Говнокод #18106

    +143

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    MyNumber(String n) {
           try {
               for (int i = 0; i < n.length(); i++) {  
                    numbers[i] = charToInt(n.charAt(i));
               }
           } catch (InvalidArgumentException e) {
               e.printStackTrace();
           }
        }
    
        public int charToInt(char c) throws InvalidArgumentException{
            char[] digits = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
    
            for (int i = 0; i < 10; i++) {
                if (digits[i] == c) return i;
            }
    
            throw new InvalidArgumentException(null);
        }

    Попросили быстро написать перевод числа, закодированного в строку, в массив его цифр.

    Запостил: Govnocoder#0xFF, 01 Мая 2015

    Комментарии (25) RSS

    • И чо?
      И в яве не работает стандартный хак с порядком символов в ASCII-таблице?
      Ответить
      • А при использовании UNICODE проблемы не возникнет?
        Ответить
        • Нет. Он же с ascii совместим в первых 128 символах.
          Ответить
          • А вдруг код писали для IBM-овского мейнфрейма, который использует безумную кодировку EBCDIC? Ну а вдруг?
            Ответить
            • привет ньюфагам
              Ответить
            • Там цифры не по порядку идут?
              Ответить
              • Чёрт! По порядку... И даже в антикварных шестибитных тоже по порядку. Поиск кодировок, в которых перемешаны цифры, ничего не дал.
                Ответить
                • Да и латинские буквы, вроде бы везде по порядку. Или я ошибаюсь?

                  P.S. Ошибаюсь. В той самой EBCDIC они хуй пойми как разложены.
                  Ответить
                  • Нет, буквы не везде по порядку. В EBCDIC буквы представлены несколькими не связанными друг с другом интервалами. А были кодировки, в которых некоторые коды использовались одновременно для кириллицы и для латиницы, а оставшиеся символы, начертание которых в кириллице и в латинице различалось, были размещены где придётся. Причём основной могла быть как латиница (ДКОИ-8, КОИ-7, КОИ-8), так и кириллица:
                    https://ru.wikipedia.org/wiki/Код_УПП, https://en.wikipedia.org/wiki/GOST_10859
                    Ответить
        • я бы на вашем месте обогатился базовыми знаниями о кодировках (как и сделал в свое время).
          Ответить
        • Возникнет, если в число попросят перевести вот такие цифры: 𝟘𝟙𝟚𝟛𝟜𝟝𝟞𝟟𝟠𝟡. Или если текст закодирован в UTF-7 (ей вообще хоть кто-то пользовался?) или в Punycode.
          Ответить
          • > если текст закодирован в UTF-7
            А это здесь причём? На вход процедуры приходит String а не byte[].

            > 𝟘𝟙𝟚𝟛𝟜𝟝𝟞𝟟𝟠𝟡
            У них коды не по порядку?
            Ответить
            • По порядку, но они не в диапазоне, зашитом в программу. Я вообще не знаю, есть ли программы, распознающие все эти 🄄⑭⒂𝟿𝟮𝟨𝟓 в качестве цифр.
              Ответить
              • > в качестве цифр
                А должны ли программы распознавать этот хлам в качестве цифр? Есть же куда более употребимые вещи, которые не распознаются - например японские цифры или даже римские.
                Ответить
                • Не уверен. Нужно уточнить.
                  Ответить
                  • http://www.fileformat.info/info/unicode/category/Nd/list.htm
                    Ответить
                    • У меня проблема с отображением диапазонов NKO, SINHALA LITH, TAI THAM HORA, TAI THAM THAM, JAVANESE, MYANMAR TAI LAING, CHAM, MEETEI MAYEK.
                      Ответить
                    • Там версия стандарта не указана. Надёжнее грепнуть все Nd отсюда:
                      http://www.unicode.org/Public/UCD/latest/ucd/extracted/DerivedNumericValues.txt
                      Ответить
                • От же кляті москалі! Японцев за людей не считают...
                  Ответить
              • Кстати нет
                Ответить
    • некн
      Ответить
    • 6546456
      Ответить
    • 7657657
      Ответить

    Добавить комментарий