class_docstr: The LSAT dataset is from the paper:
  https://arxiv.org/abs/2104.06598
  
  Original repository can be found at:
  https://github.com/zhongwanjun/AR-LSAT
  
  This is a multi-choice QA dataset containing question that test analytical reasoning,
  from the Law School Admission Test (LSAT). The questions explore cases of constraint
  satisfaction, where there is a set of elements that need to be assigned while complying
  with given conditions, for instance: making 1-1 assignments of talks to dates ("assignment"),
  grouping students to teams ("grouping") or ordering classes in a schedule ("ordering").
  
  We can either evaluate all questions together ("all") or a subset of the questions:
  
  - grouping: in_out_grouping, distribution_grouping
  - ordering: simple ordering, relative_ordering, complex ordering
  - assignment: determined assignment, undetermined assignment
  - miscellaneous
  
  We prompt models using the following format:
  
  Input
  
      Passage: <passage>
      Question: <question>
      A. ...
      B. ...
      C. ...
  
  Output (Target completion)
  
      B
  
  Using an example from the training dataset, we have:
  
  Input
  
      Passage: Of the eight students - George, Helen, Irving, Kyle, Lenore, Nina, Olivia, and Robert -
      in a seminar, exactly six will give individual oral reports during three consecutive days - Monday,
      Tuesday, and Wednesday. Exactly two reports will be given each day - one in the morning and one in
      the afternoon - according to the following conditions: Tuesday is the only day on which George can
      give a report. Neither Olivia nor Robert can give an afternoon report. If Nina gives a report, then
      on the next day Helen and Irving must both give reports, unless Nina's report is given on Wednesday.
      Question: Which one of the following could be the schedule of the students' reports?
      A. Mon. morning: Helen; Mon. afternoon: Robert Tues. morning: Olivia; Tues. afternoon: Irving Wed.
          morning: Lenore; Wed. afternoon: Kyle
      B. Mon. morning: Irving; Mon. afternoon: Olivia Tues. morning: Helen; Tues. afternoon: Kyle Wed.
          morning: Nina; Wed. afternoon: Lenore
      C. Mon. morning: Lenore; Mon. afternoon: Helen Tues. morning: George; Tues. afternoon: Kyle Wed.
          morning: Robert; Wed. afternoon: Irving
      D. Mon. morning: Nina; Mon. afternoon: Helen Tues. morning: Robert; Tues. afternoon: Irving Wed.
          morning: Olivia; Wed. afternoon: Lenore
      E. Mon. morning: Olivia; Mon. afternoon: Nina Tues. morning: Irving; Tues. afternoon: Helen Wed.
  
  Target completion
  
      C
code: def get_question_types(self, tags: List[str]) -> List[str]:
      question_type: str = (
          tags[2].replace(
              "grouping (distribution)", "distribution grouping"
          )
          or "miscellaneous"
      )
      return [
          question_type.replace(" ", "_").replace("/", "_"),
          self.subtype2type.get(question_type),
      ]
  
file_path: H2O/h2o_hf/helm/src/helm/benchmark/scenarios/lsat_qa_scenario.py
imports: import os
  import json
  from typing import List
  from helm.common.general import ensure_file_downloaded, ensure_directory_exists
  from .scenario import Scenario, Instance, Reference, TRAIN_SPLIT, VALID_SPLIT, TEST_SPLIT, CORRECT_TAG, PassageQuestionInput, Output
label_desc: Use image node_id 2 for calling the LSATScenario obj's underlying member method code with example usage: obj.get_question_types(tags) and returns: list