Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3584625
А
Аноним
12 марта 2026 16:06 · публичный вопрос
А
Аноним

Код вакансии на kadrout

Ответ нейросети
12 марта 2026 16:06

Поскольку не указаны язык программирования и точные требования к формату кода вакансии, предложу понятное и практичное решение на Python. Формат кода возьмём такой:

KD-<КОМПАНИЯ>--

  • KD — префикс площадки (Kadrout).
  • COMPANY — код компании (буквы и цифры, без пробелов, upper-case).
  • YYYYMMDD — дата публикации вакансии.
  • SEQ — последовательность за день (4 цифры, ведущие нули).

Такой формат позволяет быстро проверить валидность кода и легко разобрать его на составляющие.

Что будет в решении (пошагово):

  1. Валидация входных данных: проверяем, что company_code допустим (только A-Z и 0-9, без пробелов).
  2. Обеспечение даты: если дата не передана, берем сегодня.
  3. Формирование кода: KD--YYYYMMDD- с seq как 4-значным числом.
  4. Парсинг кода: извлекаем части обратно в удобную структуру.
  5. Валидация формата кода через регулярное выражение.

Готовый пример на Python

  1. Генерация кода вакансии
  • Вход: company_code (строка), date (datetime.date или None), seq (целое число или None)
  • Выход: строка вида KD-ACME-20260312-0007
  1. Парсинг кода
  • Вход: код вакансии
  • Выход: словарь с полями prefix, company_code, date (date), seq (int)
  1. Валидация формата
  • Вход: код
  • Выход: True/False

Пример кода:

import re from datetime import date, datetime

Формат: KD---

_PREFIX = "KD" _VALID_PATTERN = re.compile(r"^([A-Z0-9]+)-([A-Z0-9]+)-([0-9]{8})-([0-9]{4})$")

def generate_job_code(company_code: str, dt: date = None, seq: int = 1) -> str: """ Сгенерировать код вакансии для Kadrout. - company_code: код компании (разрешены A-Z0-9, без пробелов, регистр не обязательно). - dt: дата в формате date; если None, взять today's date. - seq: последовательность за день; по умолчанию 1. """ if not isinstance(company_code, str) or not company_code.strip(): raise ValueError("company_code должен быть непустой строкой") code = company_code.upper().strip() if not re.match(r"^[A-Z0-9]+$", code): raise ValueError("company_code должен состоять только из A-Z и 0-9")

dt = dt or date.today()
if not isinstance(dt, date):
    raise ValueError("dt должен быть объектом date или None")

if not isinstance(seq, int) or seq < 0:
    raise ValueError("seq должен быть неотрицательным целым числом")

return f"{_PREFIX}-{code}-{dt:%Y%m%d}-{seq:04d}"

def parse_job_code(code: str) -> dict: """ Разбор кода вакансии. Возвращает словарь: {'prefix': 'KD', 'company_code': 'ACME', 'date': date, 'seq': int} """ m = _VALID_PATTERN.match(code) if not m: raise ValueError("Неправильный формат кода вакансии")

# Разбиваем на части: префикс-ко-мп-датa-seq
company_and_prefix, company_code, date_str, seq_str = code.split('-', 3)
# date_str — часть с YYYYMMDD
parsed_date = datetime.strptime(date_str, "%Y%m%d").date()
return {
    "prefix": code.split('-', 1)[0],  # например "KD"
    "company_code": company_code,
    "date": parsed_date,
    "seq": int(seq_str)
}

def is_valid_job_code(code: str) -> bool: """Проверка: соответствует ли код формату KD--YYYYMMDD-""" return bool(_VALID_PATTERN.match(code))

Примеры использования

if name == "main": # Генерация code1 = generate_job_code("ACME", dt=date(2026, 3, 12), seq=7) print("Сгенерированный код:", code1) # KD-ACME-20260312-0007

# Разбор
info = parse_job_code(code1)
print("Разбор кода:")
print(info)

# Валидация
print("Валидность:", is_valid_job_code(code1))  # True

# Пример неверного кода
try:
    parse_job_code("KD-ACME-202603-0007")
except ValueError as e:
    print("Ошибка разбора:", e)

Пояснения к коду и основным моментам

  • Формат KD--YYYYMMDD- выбран за счёт простоты и удобства парсинга. Он обеспечивает:
    • Быстрый доступ к дате и коду компании.
    • Возможность нумерации по дням (SEQ можно увеличивать внутри дня).
    • Легкую проверку валидности через регулярное выражение.
  • company_code приводим к верхнему регистру и допускаем только латинские буквы и цифры (без пробелов и спецсимволов).
  • seq по умолчанию можно начинать с 1; на практике для реального применения шаг счётчика обычно хранится в БД или файле и увеличивается при каждой новой вакансии за день.
  • Парсинг возвращает удобную структуру для дальнейшей обработки (дата как объект date, seq как int).

Если вы получите уточнения

  • Какой формат желательнее именно на вашей задаче (другой разделитель, другой набор полей и пр.)?
  • Какой язык программирования вы используете на экзамене?
  • Нужно ли интегрировать с реальным хранением последовательности (база данных, файл) или достаточно чисто статическое генератор-валидатор?

Я могу адаптировать решение под нужный формат и под выбранный язык, а также дать более простые/более сложные варианты (например, без даты, с префиксом компании более длинным, или с уникальным идентификатором вместо SEQ).