


'''simple docstring'''

import math

import qiskit





def __snake_case      (   UpperCAmelCase_		:		int = 1      ,       UpperCAmelCase_		:		int = 1      ,       UpperCAmelCase_		:		int = 1	):
 if (
     isinstance(UpperCAmelCase_      ,       UpperCAmelCase_	)
     or isinstance(UpperCAmelCase_      ,       UpperCAmelCase_	)
     or isinstance(UpperCAmelCase_      ,       UpperCAmelCase_	)
 ):
  raise TypeError("inputs must be integers."	)

 if (input_a < 0) or (input_a < 0) or (carry_in < 0):
  raise ValueError("inputs must be positive."	)

 if (
     (math.floor(UpperCAmelCase_	) != input_a)
     or (math.floor(UpperCAmelCase_	) != input_a)
     or (math.floor(UpperCAmelCase_	) != carry_in)
 ):
  raise ValueError("inputs must be exact integers."	)

 if (input_a > 2) or (input_a > 2) or (carry_in > 2):
  raise ValueError("inputs must be less or equal to 2."	)

 # build registers
 lowerCamelCase_  				=						qiskit.QuantumRegister(4      ,       "qr"	)
 lowerCamelCase_  				=						qiskit.ClassicalRegister(2      ,       "cr"	)
 # list the entries
 lowerCamelCase_  				=						[input_a, input_a, carry_in]

 lowerCamelCase_  				=						qiskit.QuantumCircuit(UpperCAmelCase_      ,       UpperCAmelCase_	)

 for i in range(0      ,       3	):
  if entry[i] == 2:
   quantum_circuit.h(UpperCAmelCase_	)  # for hadamard entries
  elif entry[i] == 1:
   quantum_circuit.x(UpperCAmelCase_	)  # for 1 entries
  elif entry[i] == 0:
   quantum_circuit.i(UpperCAmelCase_	)  # for 0 entries

    # build the circuit
 quantum_circuit.ccx(0      ,       1      ,       3	)  # ccx = toffoli gate
 quantum_circuit.cx(0      ,       1	)
 quantum_circuit.ccx(1      ,       2      ,       3	)
 quantum_circuit.cx(1      ,       2	)
 quantum_circuit.cx(0      ,       1	)

 quantum_circuit.measure([2, 3]      ,       UpperCAmelCase_	)  # measure the last two qbits

 lowerCamelCase_  				=						qiskit.Aer.get_backend("aer_simulator"	)
 lowerCamelCase_  				=						qiskit.execute(UpperCAmelCase_      ,       UpperCAmelCase_      ,       shots=1000	)

 return job.result().get_counts(UpperCAmelCase_	)


if __name__ == "__main__":
     print(f'''Total sum count for state is: {quantum_full_adder(1, 1, 1)}''')







'''simple docstring'''

import fire
from torch.utils.data import DataLoader
from tqdm import tqdm

from transformers import AutoTokenizer
from utils import SeqaSeqDataset, pickle_save





def __snake_case      (   UpperCAmelCase_		:		List[str]      ,       UpperCAmelCase_		:		Optional[int]      ,       UpperCAmelCase_		:		Optional[int]=1024      ,       UpperCAmelCase_		:		int=1024      ,       UpperCAmelCase_		:		Optional[Any]=False      ,       **UpperCAmelCase_		:		Optional[Any]	):
 lowerCamelCase_  				=						AutoTokenizer.from_pretrained(UpperCAmelCase_	)
 lowerCamelCase_  				=						SeqaSeqDataset(UpperCAmelCase_      ,       UpperCAmelCase_      ,       UpperCAmelCase_      ,       UpperCAmelCase_      ,       type_path="train"      ,       **UpperCAmelCase_	)
 lowerCamelCase_  				=						tok.pad_token_id

 def get_lens(UpperCAmelCase_		:		str	):
  lowerCamelCase_  				=						tqdm(
      DataLoader(UpperCAmelCase_      ,       batch_size=512      ,       num_workers=8      ,       shuffle=UpperCAmelCase_      ,       collate_fn=ds.collate_fn	)      ,       desc=str(ds.len_file	)      ,       )
  lowerCamelCase_  				=						[]
  for batch in dl:
   lowerCamelCase_  				=						batch["input_ids"].ne(UpperCAmelCase_	).sum(1	).tolist()
   lowerCamelCase_  				=						batch["labels"].ne(UpperCAmelCase_	).sum(1	).tolist()
   if consider_target:
    for src, tgt in zip(UpperCAmelCase_      ,       UpperCAmelCase_	):
     max_lens.append(max(UpperCAmelCase_      ,       UpperCAmelCase_	)	)
   else:
    max_lens.extend(UpperCAmelCase_	)
  return max_lens

 lowerCamelCase_  				=						get_lens(UpperCAmelCase_	)
 lowerCamelCase_  				=						SeqaSeqDataset(UpperCAmelCase_      ,       UpperCAmelCase_      ,       UpperCAmelCase_      ,       UpperCAmelCase_      ,       type_path="val"      ,       **UpperCAmelCase_	)
 lowerCamelCase_  				=						get_lens(UpperCAmelCase_	)
 pickle_save(UpperCAmelCase_      ,       train_ds.len_file	)
 pickle_save(UpperCAmelCase_      ,       val_ds.len_file	)


if __name__ == "__main__":
     fire.Fire(save_len_file)



