Telegram Group & Telegram Channel
🧠 Хитрая задача на 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



tg-me.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


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/golangtests/775

View MORE
Open in Telegram


Go tests Telegram | DID YOU KNOW?

Date: |

Telegram has exploded as a hub for cybercriminals looking to buy, sell and share stolen data and hacking tools, new research shows, as the messaging app emerges as an alternative to the dark web.An investigation by cyber intelligence group Cyberint, together with the Financial Times, found a ballooning network of hackers sharing data leaks on the popular messaging platform, sometimes in channels with tens of thousands of subscribers, lured by its ease of use and light-touch moderation.

How To Find Channels On Telegram?

There are multiple ways you can search for Telegram channels. One of the methods is really logical and you should all know it by now. We’re talking about using Telegram’s native search option. Make sure to download Telegram from the official website or update it to the latest version, using this link. Once you’ve installed Telegram, you can simply open the app and use the search bar. Tap on the magnifier icon and search for a channel that might interest you (e.g. Marvel comics). Even though this is the easiest method for searching Telegram channels, it isn’t the best one. This method is limited because it shows you only a couple of results per search.

Go tests from sg


Telegram Go tests
FROM USA