من رفتم سربازی اگر محتوای منو دوست داشتید و بدردتون خورد از من حمایت مالی کنید

حل تمرین هگزانوردی کوئرا با پایتون

حل تمرین هگزانوردی کوئرا با پایتون
حل تمرین هگزانوردی کوئرا با پایتون

حل تمرین هگزانوردی کوئرا با پایتون

در این نوشته به روش حل یکی از سوالات برنامه نویسی وب‌سایت کوئرا می‌پردازیم.

 

حل تمرین هگزانوردی کوئرا با پایتون

علی در شهری نامتناهی زندگی می‌کند که خیابان‌های آن مانند شکل زیر است. شما می‌توانید خانه علی که در یکی از تقاطع‌های این شهر قرار دارد را در تصویر زیر ببیند.

تصویر موقعیت مکانی خانه علی

علی در خانه مانده و حوصله‌اش خیلی سررفته و می‌خواهد در شهر گشتی بزند. گشت زدن علی n مرحله دارد. علی در هر مرحله یکی از 6 جهت که با حروف A,B,C,D,E,F در شکل نشان‌ داده‌ایم را انتخاب می‌کند و از محل تقاطع فعلی در آن جهت حرکت می‌کند تا به تقاطع بعدی برسد.

تقاطع‌های حرکتی علی

پس یک گشت علی را می‌توان به صورت یک رشته به طول n مثل:

نشان داد به طوری که برای هر i از 1 تا :

si A,B,C,D,E,F

علی می‌خواهد برای هر یک از t گشتی که انتخاب کرده است، فاصله‌ی نقطه‌ی پایانی این گشت را با خانه حساب کند. منظور از فاصله دو تقاطع، یعنی طول کوتاه‌ترین گشتی که بتوان با کمک آن از یک تقاطع به تقاطع دیگر رفت. همچنین فاصله دو تقاطع یکسان را 0 در نظر می‌گیریم.

 

ورودی

در سطر اول ورودی عدد صحیح و مثبت t آمده است. که نشان‌دهنده‌ی تعداد گشت‌هایی است که در این ورودی آمده است.

ورودی در تمرین هگزانوردی

در t سطر بعدی، در هر سطر یک رشته که تنها شامل حروف A,B,C,D,E,F است آمده که نشان‌دهنده یک گشت علی است. تضمین می‌شود مجموع طول رشته‌ها در یک ورودی از 100000 بیشتر نشود.

 

خروجی

خروجی شامل t سطر است که در هر سطر یک عدد صحیح و نامنفی، که نشان‌دهنده فاصله تقاطع نهایی علی بعد از انجام آن گشت تا تقاطعی که خانه علی در آن قرار دارد است.

 

مثال

ورودی نمونه 1

3
A
AB
ABC

 

خروجی نمونه 1

1
2
2

 

شکل حرکت علی

شکل حرکت علی در گشت اول

شکل حرکت علی در گشت اول

 

شکل حرکت علی در گشت دوم

شکل حرکت علی در گشت دوم

 

شکل حرکت علی در گشت سوم

شکل حرکت علی در گشت سوم

 

کد پایتون سوال تمرین هگزانوردی

t = int(input())
results = []

for _ in range(t):
    path = input().strip()
    x, y, z = 0, 0, 0

    for direction in path:
        if direction == 'A':
            x += 1
            y -= 1
        elif direction == 'B':
            x += 1
            z -= 1
        elif direction == 'C':
            y += 1
            z -= 1
        elif direction == 'D':
            x -= 1
            y += 1
        elif direction == 'E':
            x -= 1
            z += 1
        elif direction == 'F':
            y -= 1
            z += 1

    distance = max(abs(x), abs(y), abs(z))
    results.append(distance)

for result in results:
    print(result)

 

منبع سوال: کوئرا

اگر نیاز به حل تمرین‌های دیگری از کوئرا دارید در بخش نظرات همین نوشته برای ما بنویسید.

برای امتیاز به این نوشته کلیک کنید!
[کل: 2 میانگین: 5]