


import gc
import unittest

import numpy as np
import torch

from diffusers import StableDiffusionKDiffusionPipeline
from diffusers.utils import slow, torch_device
from diffusers.utils.testing_utils import enable_full_determinism, require_torch_gpu


enable_full_determinism()







@slow
@require_torch_gpu
class  snake_case_     (unittest.TestCase   ):
					def 				lowerCamelCase__(   self     :Optional[Any]   )      ->					Union[str, Any]:
												# clean up the VRAM after each test
												super().tearDown()
												gc.collect()
												torch.cuda.empty_cache()
					def 				lowerCamelCase__(   self     :Optional[int]   )      ->					Tuple:
												a__    =  StableDiffusionKDiffusionPipeline.from_pretrained('CompVis/stable-diffusion-v1-4'   )
												a__    =  sd_pipe.to(__snake_case   )
												sd_pipe.set_progress_bar_config(disable=__snake_case   )

												sd_pipe.set_scheduler('sample_euler'   )

												a__    =  'A painting of a squirrel eating a burger'
												a__    =  torch.manual_seed(0   )
												a__    =  sd_pipe([prompt]    ,generator=__snake_case    ,guidance_scale=9.0    ,num_inference_steps=20    ,output_type='np'   )

												a__    =  output.images

												a__    =  image[0, -3:, -3:, -1]

												assert image.shape == (1, 5_12, 5_12, 3)
												a__    =  np.array([0.04_47, 0.04_92, 0.04_68, 0.04_08, 0.03_83, 0.04_08, 0.03_54, 0.03_80, 0.03_39]   )

												assert np.abs(image_slice.flatten() - expected_slice   ).max() < 1E-2
					def 				lowerCamelCase__(   self     :str   )      ->					Any:
												a__    =  StableDiffusionKDiffusionPipeline.from_pretrained('stabilityai/stable-diffusion-2-1-base'   )
												a__    =  sd_pipe.to(__snake_case   )
												sd_pipe.set_progress_bar_config(disable=__snake_case   )

												sd_pipe.set_scheduler('sample_euler'   )

												a__    =  'A painting of a squirrel eating a burger'
												a__    =  torch.manual_seed(0   )
												a__    =  sd_pipe([prompt]    ,generator=__snake_case    ,guidance_scale=9.0    ,num_inference_steps=20    ,output_type='np'   )

												a__    =  output.images

												a__    =  image[0, -3:, -3:, -1]

												assert image.shape == (1, 5_12, 5_12, 3)
												a__    =  np.array([0.12_37, 0.13_20, 0.14_38, 0.13_59, 0.13_90, 0.11_32, 0.12_77, 0.11_75, 0.11_12]   )

												assert np.abs(image_slice.flatten() - expected_slice   ).max() < 5E-1



					def 				lowerCamelCase__(   self     :Dict   )      ->					Tuple:
												a__    =  StableDiffusionKDiffusionPipeline.from_pretrained('stabilityai/stable-diffusion-2-1-base'   )
												a__    =  sd_pipe.to(__snake_case   )
												sd_pipe.set_progress_bar_config(disable=__snake_case   )

												sd_pipe.set_scheduler('sample_dpmpp_2m'   )

												a__    =  'A painting of a squirrel eating a burger'
												a__    =  torch.manual_seed(0   )
												a__    =  sd_pipe(
												    [prompt]    ,generator=__snake_case    ,guidance_scale=7.5    ,num_inference_steps=15    ,output_type='np'    ,use_karras_sigmas=__snake_case    ,)

												a__    =  output.images

												a__    =  image[0, -3:, -3:, -1]

												assert image.shape == (1, 5_12, 5_12, 3)
												a__    =  np.array(
												    [0.11_38_16_89, 0.12_11_29_21, 0.1_38_94_57, 0.12_54_96_06, 0.1_24_49_64, 0.10_83_15_17, 0.11_56_28_66, 0.10_86_78_16, 0.10_49_90_48]   )

												assert np.abs(image_slice.flatten() - expected_slice   ).max() < 1E-2








def 							__lowercase     (				__lowerCAmelCase							:       int = 2_0_0     ):
							a__    =  [1, 2, 5, 1_0, 2_0, 5_0, 1_0_0, 2_0_0]
							a__    =  [0] * (pence + 1)
							a__    =  1  # base case: 1 way to make 0 pence

							for coin in coins:
														for i in range(__lowerCAmelCase      ,					pence + 1      ,					1     ):
																					number_of_ways[i] += number_of_ways[i - coin]
							return number_of_ways[pence]


if __name__ == "__main__":
						assert solution(2_00) == 7_36_82




