Le Docteur, en essayant de s'échapper des forces Dalek, a décidé de les envoyer en rotation en voyageant dans diverses poches d'espace dans un mouvement en spirale.
Selon la nature de l'espace-temps disponible, le médecin doit entrer dans le TARDIS contrôle la hauteur et la largeur de la section de l'espace et son point d'entrée avec lequel commencer la spirale.
La section de l'espace peut être envisagée comme une grille h x l remplie d'entiers séquentiels de gauche à droite, de haut en bas, en commençant par 1.
La position de départ est fournie en rc pour la ligne et la colonne ... À partir de là, le logiciel TARDIS doit cracher la liste ordonnée des nombres entiers obtenue en spirale vers l'extérieur dans le sens antihoraire à partir de la ligne r de la colonne c , en commençant par le haut ...
Votre tâche, en tant que compagnon du médecin, est de programmer le TARDIS pour qu'il prenne quatre nombres, dans le format height width row columnet qu'il détermine quel secteur d'espace le TARDIS doit parcourir pour correspondre au mouvement en spirale décrit ci-dessous ...
Entrée 1
5 5 3 3
(Grille 5 x 5, à partir de la position 3,3)
Sortie 1
13 8 7 12 17 18 19 14 9 4 3 2 1 6 11 16 21 22 23 24 25 20 15 10 5
Expliquer la sortie
Grille d'origine

Spirale générée

Entrée 2
2 4 1 2
(Grille 2 x 4 à partir de la position 1,2)
Sortie 2
2 1 5 6 7 3 8 4
Expliquer la sortie
Légèrement différent car la spirale doit maintenant tourner autour de la grille pour générer une sortie respective ...
Grille d'origine

Spirale générée

Règles:
Il s'agit de code-golf, donc la longueur de code la plus courte est approuvée.
Les exemples ci-dessus doivent être utilisés pour tester votre code. S'il ne fournit pas la sortie respective, il y a un problème ...
Les versions de code golfées et golfées doivent être fournies dans votre réponse ...
Bonne chance!