hội người tạm mù việt nam

Xem PDF

Điểm: 1 Thời gian: 1.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

Trường Lê Quý Đôn vừa tổ chức không-biết-có-nên-gọi-là-thành-công-hay-không hội trại truyền thống “Nhiệt huyết Thiên Thanh” năm 2023.

Bạn Thành - một học sinh Đà Nẵng cầu toàn đi du học tại Việt Nam. Vì là người cầu toàn nên gì bạn cũng theo quy tắc. Vì vậy, khi lớp bạn tập động tác cho bài nhảy “Việt Nam ơi”, bạn luôn là người làm chuẩn nhất.

Sau khi nếm mùi hào quang rực rỡ trên sân khấu trại với bài biểu diễn đó, vì ánh đèn sân khấu chiếu quá mạnh, cùng với ở dưới dàn khán giả bật quá nhiều đèn Flash điện thoại, nên Thành đã bị mù tạm thời. Chính vì vậy, bạn chưa thể viết được như người bình thường. May mắn là ngày đó bạn chơi thân với chị Hà nên được chị dạy cho chữ nổi Braille, cũng đọc được sơ sơ.

Câu chuyện trên tất nhiên có thể không có thật, nhưng việc bạn lại phải xử lý xâu Unicode là có thật.
Yên tâm đi, cũng không khó, và solution vào đâu đó 100 dòng, nhưng gần một nửa khối lượng là định nghĩa giá trị rồi.

Test 1

Input
⠨⠉⠹⠠⠝⠛⠀⠓⠕⠁⠰⠀⠨⠭⠤⠁⠀⠓⠹⠊⠠⠀⠨⠉⠓⠢⠥⠀⠝⠛⠓⠊⠤⠁⠀⠨⠧⠠⠊⠣⠞⠀⠨⠝⠁⠍
Output
4
Note
Hint will be here and in the announcement

Test 1

Input
⠨⠛⠊⠢⠁⠊⠀⠨⠅⠓⠔⠥⠽⠣⠝⠀⠅⠓⠔⠊⠉⠓⠀⠨⠅⠰⠽⠀⠞⠓⠊⠀⠨⠓⠠⠕⠉⠀⠎⠊⠝⠓⠀⠛⠊⠢⠕⠊⠀⠨⠟⠥⠔⠹⠉⠀⠛⠊⠁⠀⠨⠞⠗⠥⠝⠛⠀⠓⠠⠕⠉⠀⠨⠏⠓⠢⠹⠀⠞⠓⠹⠝⠛⠀⠍⠹⠝⠀⠨⠞⠊⠝⠀⠓⠠⠕⠉
Output
0
Note


Bình luận


  • 4
    Trung09    8:27 a.m. 23 Tháng 8, 2023

    BRAILLE = "⠀⠁⠂⠃⠄⠅⠆⠇⠈⠉⠊⠋⠌⠍⠎⠏⠐⠑⠒⠓⠔⠕⠖⠗⠘⠙⠚⠛⠜⠝⠞⠟⠠⠡⠢⠣⠤⠥⠦⠧⠨⠩⠪⠫⠬⠭⠮⠯⠰⠱⠲⠳⠴⠵⠶⠷⠸⠹⠺⠻⠼⠽⠾⠿"
    CNT_BRAILLE = 64
    BRCODE = [0] * CNT_BRAILLE
    NAN = -1

    def madeCode():
    for num in range(CNT_BRAILLE):
    save = num
    ans = 0
    for i in range(1, 7):
    if num & 1:
    ans = ans * 10 + i * (num & 1)
    num >>= 1
    BRCODE[save] = ans
    def findCode(c):
    for i in range(CNT_BRAILLE):
    if c == BRAILLE[i]:
    return BRCODE[i]
    return NAN
    madeCode();

    LETTER = " aăâbcdđeêfghijklmnoôơpqrstuưvwxyz"
    CNT_LETTER = 34
    CHAR_CODE=[
    0, 1,345,16,12,14,
    145,2346,15,126,
    124,1245,125,24,
    245,13,123,134,
    1345,135,1456,246,
    1234,12345,1235,234,
    2345,136,1256,1236,
    2456,1346,13456,1356
    ]
    def getLetter(code):
    for i in range(CNT_LETTER):
    if code == CHAR_CODE[i]:
    return LETTER[i]
    return ''
    def letter2code(letter):
    return CHAR_CODE[LETTER.find(letter)]

    TONE = [35, 56, 26, 36, 6]
    VOWEL = "aăâeêioôơuưy"
    VOWEL_WITH_TONES = "áàảãạắằẳẵặấầẩẫậéèẻẽẹếềểễệíìỉĩịóòỏõọốồổỗộớờởỡợúùủũụứừửữựýỳỷỹỵ"
    CAPS_VOWEL_WITH_TONES = "ÁÀẢÃẠẮẰẲẴẶẤẦẨẪẬÉÈẺẼẸẾỀỂỄỆÍÌỈĨỊÓÒỎÕỌỐỒỔỖỘỚỜỞỠỢÚÙỦŨỤỨỪỬỮỰÝỲỶỸỴ"

    DIGIT = "1234567890"
    CHAR_DIGIT = [
    1, 12, 14, 145, 15, 124, 1245, 125, 24, 245
    ]

    CAPS_ONE = 46
    CAPS_ALL = 456
    START_DIGIT = 3456

    def makeBrailleWord(letters: list, tone, cap):
    model = letters[:]
    length = len(letters)
    if tone != NAN:
    # tone = TONE[tone]
    if length >= 2 and model[0] == letter2code('g') and model[1] == letter2code('i'):
    if length == 2 or LETTER[CHAR_CODE.index(model[2])] not in VOWEL:
    model.insert(1, tone)
    else:
    model.insert(2, tone)
    elif length >= 2 and model[0] == letter2code('q') and model[1] == letter2code('u'):
    model.insert(2, tone)
    else:
    firstVowel = NAN
    for i in range(length):
    if LETTER[CHAR_CODE.index(model[i])] in VOWEL:
    firstVowel = i
    break
    model.insert(firstVowel, tone)
    if cap:
    if model[0] in TONE:
    model.insert(1, CAPS_ONE)
    else:
    model.insert(0, CAPS_ONE)
    return model

    s = input().split(BRAILLE[0])
    answer = 0
    for word in s:
    length = len(word)
    allChar = []
    for c in word:
    allChar.append(findCode(c))
    # print(allChar)
    if allChar[0] == START_DIGIT:
    continue
    else:
    cap = False; tone = NAN
    letters = []
    for c in allChar:
    if c == CAPS_ONE:
    cap = True
    elif c in TONE:
    tone = c
    else:
    letters.append(c)

        model = makeBrailleWord(letters, tone, cap)
        for i in range(length):
            if model[i] != allChar[i]:
                answer += 1
                break
    

    print(answer)


    • 0
      MINHQUAN_2013    8:58 p.m. 22 Tháng 7, 2024
      Python
      BRAILLE = "⠀⠁⠂⠃⠄⠅⠆⠇⠈⠉⠊⠋⠌⠍⠎⠏⠐⠑⠒⠓⠔⠕⠖⠗⠘⠙⠚⠛⠜⠝⠞⠟⠠⠡⠢⠣⠤⠥⠦⠧⠨⠩⠪⠫⠬⠭⠮⠯⠰⠱⠲⠳⠴⠵⠶⠷⠸⠹⠺⠻⠼⠽⠾⠿"
      CNT_BRAILLE = 64
      BRCODE = [0] * CNT_BRAILLE
      NAN = -1
      
      def madeCode():
      for num in range(CNT_BRAILLE):
      save = num
      ans = 0
      for i in range(1, 7):
      if num & 1:
      ans = ans * 10 + i * (num & 1)
      num >>= 1
      BRCODE[save] = ans
      def findCode(c):
      for i in range(CNT_BRAILLE):
      if c == BRAILLE[i]:
      return BRCODE[i]
      return NAN
      madeCode();
      
      LETTER = " aăâbcdđeêfghijklmnoôơpqrstuưvwxyz"
      CNT_LETTER = 34
      CHAR_CODE=[
      0, 1,345,16,12,14,
      145,2346,15,126,
      124,1245,125,24,
      245,13,123,134,
      1345,135,1456,246,
      1234,12345,1235,234,
      2345,136,1256,1236,
      2456,1346,13456,1356
      ]
      def getLetter(code):
      for i in range(CNT_LETTER):
      if code == CHAR_CODE[i]:
      return LETTER[i]
      return ''
      def letter2code(letter):
      return CHAR_CODE[LETTER.find(letter)]
      
      TONE = [35, 56, 26, 36, 6]
      VOWEL = "aăâeêioôơuưy"
      VOWEL_WITH_TONES = "áàảãạắằẳẵặấầẩẫậéèẻẽẹếềểễệíìỉĩịóòỏõọốồổỗộớờởỡợúùủũụứừửữựýỳỷỹỵ"
      CAPS_VOWEL_WITH_TONES = "ÁÀẢÃẠẮẰẲẴẶẤẦẨẪẬÉÈẺẼẸẾỀỂỄỆÍÌỈĨỊÓÒỎÕỌỐỒỔỖỘỚỜỞỠỢÚÙỦŨỤỨỪỬỮỰÝỲỶỸỴ"
      
      DIGIT = "1234567890"
      CHAR_DIGIT = [
      1, 12, 14, 145, 15, 124, 1245, 125, 24, 245
      ]
      
      CAPS_ONE = 46
      CAPS_ALL = 456
      START_DIGIT = 3456
      
      def makeBrailleWord(letters: list, tone, cap):
      model = letters[:]
      length = len(letters)
      if tone != NAN:
      # tone = TONE[tone]
      if length >= 2 and model[0] == letter2code('g') and model[1] == letter2code('i'):
      if length == 2 or LETTER[CHAR_CODE.index(model[2])] not in VOWEL:
      model.insert(1, tone)
      else:
      model.insert(2, tone)
      elif length >= 2 and model[0] == letter2code('q') and model[1] == letter2code('u'):
      model.insert(2, tone)
      else:
      firstVowel = NAN
      for i in range(length):
      if LETTER[CHAR_CODE.index(model[i])] in VOWEL:
      firstVowel = i
      break
      model.insert(firstVowel, tone)
      if cap:
      if model[0] in TONE:
      model.insert(1, CAPS_ONE)
      else:
      model.insert(0, CAPS_ONE)
      return model
      
      s = input().split(BRAILLE[0])
      answer = 0
      for word in s:
      length = len(word)
      allChar = []
      for c in word:
      allChar.append(findCode(c))
      # print(allChar)
      if allChar[0] == START_DIGIT:
      continue
      else:
      cap = False; tone = NAN
      letters = []
      for c in allChar:
      if c == CAPS_ONE:
      cap = True
      elif c in TONE:
      tone = c
      else:
      letters.append(c)
      
          model = makeBrailleWord(letters, tone, cap)
          for i in range(length):
              if model[i] != allChar[i]:
                  answer += 1
                  break
      print(answer)
      

      • 0
        anhthu030412    6:13 p.m. 23 Tháng 8, 2023

        Dài dữ =))

        9 bình luận nữa