1. 1C / Говнокод #28944

    +1

    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
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    Функция ЭтоVIN(Знач Значение, Знач ПробелыЗапрещены = Истина) Экспорт 
    	
    	Если ТипЗнч(Значение) <> Тип("Строка") Тогда
    		Возврат Ложь;
    	КонецЕсли;   
    	
    	Если Не ПробелыЗапрещены Тогда
    		Значение = СтрЗаменить(Значение, " ", "");
    	КонецЕсли;
    	
    	Возврат ЗначениеЗаполнено(Значение)
    	И (СтрДлина(Значение) = 17)
    	И 	
    	// Если содержит только цифры, то в результате замен должна быть получена пустая строка.
    	// Проверять при помощи ПустаяСтрока нельзя, так как в исходной строке могут быть пробельные символы.
    	СтрДлина(  
    	СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить(	СтрЗаменить(
    	СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить(
    	СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить(	СтрЗаменить(
    	СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить(
    	СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить( 
    	СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить(
    	СтрЗаменить( СтрЗаменить( СтрЗаменить( 
    	Значение, "0", ""), "1", ""), "2", ""), "3", ""), "4", ""), "5", ""), "6", ""), "7", ""), "8", ""), "9", "")
    	, "A", ""), "B", ""), "C", ""), "D", ""), "E", ""), "F", ""), "G", ""), "H", ""), "J", ""), "K", ""), "L", ""), "M", "")
    	, "N", ""), "P", ""), "R", ""), "S", ""), "T", ""), "U", ""), "V", ""), "W", ""), "X", ""), "Y", ""), "Z", "")) = 0; 
    	
    КонецФункции

    Функция определяет является ли строка VIN, метода выбрана забавная - в строке удаляются все допустимые символы, то что осталось, по мнению автора - мусор, т.е. vin невалидный. Видимо просто проверить каждый символ на вхождение в допустимый алфавит это слишком просто ;).

    Запостил: VladC, 20 Мая 2024

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

    • Винлайн заплатит — без вариантов
      Ответить
    • По этому я за номер кузова
      Ответить
    • Представляю, как будет тормозить. Ведь каждый вызов СтрЗаменить ищет указанный символ в строке, а потом ещё удаление отнимает ресурсы.

      Хорошо, что строка короткая.
      Ответить
      • Хорошо если это VIN-код из 17 символов, в принципе никто и не заметит. А если вкинуть что-то потяжелее...
        Ответить
    • Достаточно было пройти по строке один раз, и завершить проход на первом неудачном символе. Вроде бы это задача по программированию для школьника
      Ответить
    • Напомнило:

      Роскомнадзор запретил букву А
      Роскомндзор зпретил букву Б
      Роскомндзор зпретил укву В
      Роскомндзор зпретил уку Г
      Роскомндзор зпретил уку Д
      Роскомнзор зпретил уку Е
      Роскомнзор зпртил уку Ё
      Роскомнзор зпртил уку Ж
      Роскомнзор зпртил уку З
      Роскомнор пртил уку И
      Роскомнор пртл уку Й
      Роскомнор пртл уку К
      Росомнор пртл уу Л
      Росомнор прт уу М
      Росонор прт уу Н
      Росоор прт уу О
      Рср прт уу П
      Рср рт уу Р
      с т уу С
      т уу Т
      уу У
      Ф
      Х
      Ц
      Ч
      Ш
      Щ
      Ъ
      Ы
      Ь
      Э
      Ю
      Я
      Ответить
    • Чуть допиленная (добавлен алфавит) функция из БСП - "СтроковыеФункцииКлиентСервер.ТолькоЦифр ыВСтроке"
      Ответить
    • икарус я нам работу нашел
      https://x.com/kpertsev/status/1752049101074510052
      Ответить
      • У Windows 3.11 день рожденья,
        Ей сегодня тридцать лет.
        Я несу ей поздравленье
        И огромный розовый букет.

        А по ДОС вакансий нет?
        Ответить
    • Возврат СтрДлина(Значение) = 17 И НЕ СтрРазделить(Значение, "0123456789ABCDEFGHJKLMNPRSTUVWZYZ", Ложь).Количество();
      Ответить

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