GOLANGTESTS Telegram 775
🧠 Хитрая задача на Go: "Петля Блуждающего Робота"

Представь: у тебя есть робот, который бродит по бесконечной двумерной решетке. Он выполняет команды из строки:

- 'G' — идти вперед
- 'L' — повернуть налево (90°)
- 'R' — повернуть направо (90°)

Робот стартует из точки (0, 0) и смотрит на север. Команды повторяются бесконечно. Нужно определить:

👉 Зациклится ли движение робота?
(т.е. вернётся ли он в исходную точку или навсегда останется в замкнутом цикле)

📌 Примеры:


isLooping("GLGLGLG") => true // движется по квадрату
isLooping("GG") => false // уходит навсегда


🧩 Подвох задачи:

На первый взгляд кажется, что нужно бесконечно симулировать команды. Но на самом деле всё решается за один проход строки!
Важно: если после одного прохода робот:
- вернулся в (0,0) или
- сменил направление — значит, будет цикл.

Go-реализация:

```go
func isLooping(commands string) bool {
dirs := [][2]int{{0,1}, {1,0}, {0,-1}, {-1,0}} // север, восток, юг, запад
x, y, d := 0, 0, 0

for _, c := range commands {
switch c {
case 'G':
x += dirs[d][0]
y += dirs[d][1]
case 'L':
d = (d + 3) % 4
case 'R':
d = (d + 1) % 4
}
}

return (x == 0 && y == 0) || d != 0
}
```

🎯 Отличная задача для собеседования: она проверяет
• понимание направления и симуляции
• знание работы с векторами
• умение заменить бесконечный цикл на математический анализ


@golangtests



tgoop.com/golangtests/775
Create:
Last Update:

🧠 Хитрая задача на Go: "Петля Блуждающего Робота"

Представь: у тебя есть робот, который бродит по бесконечной двумерной решетке. Он выполняет команды из строки:

- 'G' — идти вперед
- 'L' — повернуть налево (90°)
- 'R' — повернуть направо (90°)

Робот стартует из точки (0, 0) и смотрит на север. Команды повторяются бесконечно. Нужно определить:

👉 Зациклится ли движение робота?
(т.е. вернётся ли он в исходную точку или навсегда останется в замкнутом цикле)

📌 Примеры:


isLooping("GLGLGLG") => true // движется по квадрату
isLooping("GG") => false // уходит навсегда


🧩 Подвох задачи:

На первый взгляд кажется, что нужно бесконечно симулировать команды. Но на самом деле всё решается за один проход строки!
Важно: если после одного прохода робот:
- вернулся в (0,0) или
- сменил направление — значит, будет цикл.

Go-реализация:

```go
func isLooping(commands string) bool {
dirs := [][2]int{{0,1}, {1,0}, {0,-1}, {-1,0}} // север, восток, юг, запад
x, y, d := 0, 0, 0

for _, c := range commands {
switch c {
case 'G':
x += dirs[d][0]
y += dirs[d][1]
case 'L':
d = (d + 3) % 4
case 'R':
d = (d + 1) % 4
}
}

return (x == 0 && y == 0) || d != 0
}
```

🎯 Отличная задача для собеседования: она проверяет
• понимание направления и симуляции
• знание работы с векторами
• умение заменить бесконечный цикл на математический анализ


@golangtests

BY Go tests


Share with your friend now:
tgoop.com/golangtests/775

View MORE
Open in Telegram


Telegram News

Date: |

Telegram has announced a number of measures aiming to tackle the spread of disinformation through its platform in Brazil. These features are part of an agreement between the platform and the country's authorities ahead of the elections in October. On Tuesday, some local media outlets included Sing Tao Daily cited sources as saying the Hong Kong government was considering restricting access to Telegram. Privacy Commissioner for Personal Data Ada Chung told to the Legislative Council on Monday that government officials, police and lawmakers remain the targets of “doxxing” despite a privacy law amendment last year that criminalised the malicious disclosure of personal information. Clear During the meeting with TSE Minister Edson Fachin, Perekopsky also mentioned the TSE channel on the platform as one of the firm's key success stories. Launched as part of the company's commitments to tackle the spread of fake news in Brazil, the verified channel has attracted more than 184,000 members in less than a month. With Bitcoin down 30% in the past week, some crypto traders have taken to Telegram to “voice” their feelings.
from us


Telegram Go tests
FROM American