Vous marchez en spirale dans un monde où les murs de la croix s'élèvent (régularité, Python / Ruby / C / C # / Java)

problème http://nabetani.sakura.ne.jp/hena/ord28spirwa/
simulation(Python/Ruby/C++) http://qiita.com/cielavenir/items/8c77a158136bd668a27b
Régularité(Python/Ruby/C/C#/Java) http://qiita.com/cielavenir/items/a285b0cea4a26ff886b8
Régularité(D/Go/Swift/PHP/ Vala ) http://qiita.com/cielavenir/items/edb1daff9ea861a418ec
Régularité(VB/F#/Perl) http://qiita.com/cielavenir/items/0c84af4049ab161f82c1
Régularité(PowerShell) http://qiita.com/cielavenir/items/d9ef9f12068e99e888f2
Régularité( AIR-lang ) http://qiita.com/cielavenir/items/d804f61412fb4f07ba06
Régularité(Crystal/Perl6) http://qiita.com/cielavenir/items/13896a662b05da8b77a2
Je souhaite traiter le premier élément d'un tableau multidimensionnel Ruby et le renvoyer
(tap/À propos de la pause, etc.)
http://qiita.com/cielavenir/items/3f209351b924e2615f5e

Une question supplémentaire a été posée pour moi, qui a terminé la simulation avec la bonne méthode en copiant et collant le code existant. Bien entendu, il est peu probable que la simulation résolve le problème supplémentaire. Par conséquent, il est nécessaire de trouver et d'utiliser la régularité. Cependant, si vous n'écrivez pas le code avec soin, des bogues peuvent être introduits dans de petits détails. Plus précisément, il est de +1 à la pointe et de -1 à la fin. J'ai remarqué ce dernier, mais pas le premier à temps. J'ai fait abattre Chocolate Bar. Merci beaucoup.

hena28_fast.py


#!/usr/bin/env python
#http://qiita.com/Nabetani/items/23ebddb44f0234e7fb15
#http://nabetani.sakura.ne.jp/hena/ord28spirwa/

dir='ESWN'
if __name__=='__main__':
	import sys,itertools
	if sys.version_info[0]>=3: raw_input=input
	try:
		while True:
			line=raw_input().rstrip().split(':')
			n,e,s,w=[int(e) for e in line[0].split(',')]
			l=[e,s,w,n]
			days=int(line[1])+1
			for i in itertools.count(0):
				for j,e in enumerate([l[i%4]+(i%4==0),(i//4+1)*2,l[i%4]-(i%4==3)]):
					if days-e<0:
						print(dir[(i+j)%4])
						break
					days-=e
				else:
					continue
				break
			sys.stdout.flush()
	except EOFError:
		pass

hena28_fast.rb


#!/usr/bin/env ruby
#http://qiita.com/Nabetani/items/23ebddb44f0234e7fb15
#http://nabetani.sakura.ne.jp/hena/ord28spirwa/

dir='ESWN'
if __FILE__==$0
	while gets
		line=$_.chomp.split(':')
		n,e,s,w=line[0].split(',').map(&:to_i)
		l=[e,s,w,n]
		days=line[1].to_i+1
		(0..1/0.0).each{|i|
			break unless [
				l[i%4]+(i%4==0 ? 1 : 0),
				(i/4+1)*2,
				l[i%4]-(i%4==3 ? 1 : 0),
			].each_with_index{|e,j|
				if days-e<0
					puts dir[(i+j)%4]
					break
				end
				days-=e
			}
		}
		STDOUT.flush
	end
end

hena28_fast.c


// http://qiita.com/Nabetani/items/23ebddb44f0234e7fb15
// http://nabetani.sakura.ne.jp/hena/ord28spirwa/

#include <stdio.h>

int main(){
	const char* dir="ESWN";
	int n,e,s,w;
	long long days;
	for(;~scanf("%d,%d,%d,%d:%lld",&n,&e,&s,&w,&days);){
		days+=1;
		int l[]={e,s,w,n},i=0,j,f=1;
		for(;f;i++){
			int x[]={l[i%4]+(i%4==0),(i/4+1)*2,l[i%4]-(i%4==3)};
			for(j=0;j<3;j++){
				if(days-x[j]<0){
					printf("%c\n",dir[(i+j)%4]);
					f=0;
					break;
				}
				days-=x[j];
			}
		}
		fflush(stdout);
	}
}

hena28_fast.cs


// http://qiita.com/Nabetani/items/23ebddb44f0234e7fb15
// http://nabetani.sakura.ne.jp/hena/ord28spirwa/

using System;
using System.Runtime.InteropServices;

class Hena28{
	[DllImport("c", CallingConvention = CallingConvention.Cdecl)]
	private static extern int scanf(string format, out int a, out int b, out int c, out int d, out long e);

	static void Main(){
		string dir="ESWN";
		int n,e,s,w;
		long days;
		for(;scanf("%d,%d,%d,%d:%lld",out n,out e,out s,out w,out days)==5;){
			days+=1;
			int[] l=new int[]{e,s,w,n};
			int f=1;
			for(int i=0;f!=0;i++){
				int[] x=new int[]{l[i%4]+(i%4==0 ? 1 : 0),(i/4+1)*2,l[i%4]-(i%4==3 ? 1 : 0)};
				for(int j=0;j<3;j++){
					if(days-x[j]<0){
						Console.WriteLine(dir[(i+j)%4]);
						f=0;
						break;
					}
					days-=x[j];
				}
			}
			Console.Out.Flush();
		}
	}
}

hena28_fast.java


// http://qiita.com/Nabetani/items/23ebddb44f0234e7fb15
// http://nabetani.sakura.ne.jp/hena/ord28spirwa/

import java.util.Scanner;
import java.util.regex.*;

class Main{
	public static void main(String[]args){
		Scanner cin=new Scanner(System.in);
		String dir="ESWN";
		for(;cin.hasNext();){
			cin.findInLine("(\\d+),(\\d+),(\\d+),(\\d+):(\\d+)");
			MatchResult match=cin.match();
			cin.nextLine();
			int[] l=new int[]{Integer.parseInt(match.group(2)),Integer.parseInt(match.group(3)),Integer.parseInt(match.group(4)),Integer.parseInt(match.group(1))};
			long days=Long.parseLong(match.group(5))+1;
			int i=0,j,f=1;
			for(;f!=0;i++){
				int[] x=new int[]{l[i%4]+(i%4==0 ? 1 : 0),(i/4+1)*2,l[i%4]-(i%4==3 ? 1 : 0)};
				for(j=0;j<3;j++){
					if(days-x[j]<0){
						System.out.println(dir.charAt((i+j)%4));
						f=0;
						break;
					}
					days-=x[j];
				}
			}
			System.out.flush();
		}
	}
}

Recommended Posts

Vous marchez en spirale dans un monde où les murs de la croix s'élèvent (régularité, Python / Ruby / C / C # / Java)
Vous marchez en spirale dans un monde où les murs de la croix s'élèvent (simulation)
AtCoder Beginner Contest 166 A Explication du problème "A? C" (Python3, C ++, Java)
Mesurons le résultat de l'exécution du programme avec C ++, Java, Python.
Hello World dans divers langages [Python / PHP / Java / Perl / Ruby]
AtCoder Beginner Contest 169 Explication du problème "Multiplication 1" (Python3, C ++, Java)
ABC166 en Python A ~ C problème
Résoudre ABC036 A ~ C avec Python
Résoudre ABC037 A ~ C avec Python
Si vous voulez un singleton en python, considérez le module comme un singleton
Que se passe-t-il si vous "importez A, B comme C" en Python?
Livre en spirale en Python! Python avec un livre en spirale! (Chapitre 14 ~)
Résoudre ABC175 A, B, C avec Python
Afficher une liste d'alphabets en Python 3
Résolution avec Ruby, Perl, Java et Python AtCoder ARC 086 C Hash Sorting
Résolution avec Ruby, Perl, Java et Python AtCoder ARC 066 C Hash carré itératif
Dessiner un graphique d'une fonction quadratique en Python
Récupérer l'appelant d'une fonction en Python
J'ai écrit une classe en Python3 et Java
Copiez la liste en Python
Réécrire des éléments dans une boucle de listes (Python)
Créez un tracé de R semblable à un joyplot avec python
Appel de scripts Python à partir de Python intégré en C ++ / C ++
Sortie sous la forme d'un tableau python
J'ai essayé d'ajouter un module Python 3 en C
Touchons une partie de l'apprentissage automatique avec Python
Environnement enregistré pour l'analyse des données avec Python
paiza POH ec-campagne (C # / Java / Python / Ruby) # paizahack_01
Si vous définissez une méthode dans une classe Ruby, puis définissez une méthode dans celle-ci, elle devient une méthode de la classe d'origine.