Recientemente, me preguntaron en una pregunta de entrevista para invertir una cadena en perl. Escribí el código y querían que les diera algunos ejemplos de cadenas para probarlo. Les di ejemplos como una cadena con pocos caracteres, muchos caracteres, caracteres inválidos, etc. Pero también me preguntaron cuál es la cadena más larga con la que probaré. No estaba seguro de qué decir. De ahí esta pregunta. ¿Cuál es la cadena más larga que puedo probar en un código perl? De qué depende ? Memoria en la máquina? ¿Existe alguna limitación desde el punto de vista de Perl?¿Cuál es la cuerda más larga que puedo tener?
Respuesta
Estaba buscando para ver si puedo encontrar documentación oficial sobre la cadena más larga. Encontré uno en http://perltutorial.org hablando de cadenas:
Perl define la cadena como una secuencia de caracteres. La cadena más corta no contiene caracteres ni cadenas nulas. La cadena más larga puede contener caracteres ilimitados, que solo se limita a la memoria disponible de su computadora.
No sé si esto es oficial suficiente para ti. Sería bueno ver algo en las preguntas frecuentes o Perldoc.
Por cierto, para revertir oficialmente una cadena en Perl:
my $rev_string = reverse $string;
Esto es en el Perl FAQ # 4, que tiene un montón de manejar cosas en él cadena. El revertir una pregunta de cadena es una vieja pregunta de entrevista truco para ver si alguien sabe sus cosas arcanos de Perl. Seguro que casi todo el mundo sabe reverse
invertirá una matriz, pero ¿saben también que invertirá una cadena? Noobies resolverá algún tipo de algoritmo complejo y el entrevistador tendrá una razón para sentirse satisfecho y no contratar a esa persona.
Personalmente, si estaba entrevistando a alguien, hice esta pregunta, y alguien surgió en el lugar con un algoritmo elegante y me mostró cómo funcionaría con los caracteres cortos, largos y no válidos, los contrataría. Siempre puede aprender nuevos trucos de Perl estúpidos, pero pensar rápido en sus pies es algo que es difícil de encontrar.
Aprendí el truco de cuerda inversa hace mucho tiempo cuando alguien me hizo la misma pregunta en una entrevista. Lo busqué y lo encontré en las preguntas frecuentes y me di cuenta de que lo hice mal. He estado usando Perl durante casi 20 años y no puedo pensar en un momento en el que haya tenido que invertir una cadena Perl.
perltutorial.org es [no recomendado] (http://perl-tutorial.org/rejected/), toda la información es cuestionable [por asociación] (http://enwp.org/Association_fallacy). Las respuestas de SO deben citar recursos autorizados de alta calidad. – daxim
Los procesos a menudo solo pueden acceder a una fracción de la memoria de la computadora, por lo que puede estar limitado a mucho menos que la memoria de la computadora. – ikegami
@daxim - Recuerdo haber leído algo similar en el Camel Book, pero no pude encontrarlo. Encontré una declaración similar a la anterior en Perlmonk, pero tampoco hay referencia allí. Tal vez la respuesta correcta debería haber sido _Way más de lo que probablemente nunca necesitarás, así que no te preocupes por eso. –
Fundamentalmente, depende de la cantidad de memoria a la que puede acceder su programa (es decir, Perl). Si tienes una máquina de 32 bits, está en algún lugar por debajo de 4 GiB. Si tiene una máquina de 64 bits, entonces el límite es probablemente mayor y depende de la memoria virtual disponible. No hay una limitación fija.
bien. Entonces, ¿cómo se puede crear una cadena larga o, en otras palabras, crear la cadena más larga posible para realizar la prueba? De lo que no estoy seguro es de si existe la necesidad de tener una cadena larga como uno de los casos de prueba. – user238021
@ user238021: esto * * bloqueará tu computadora. Te avisaron: perl -e 'print escalar reverse a ... "z" x999' – jm666
- 1. Cuál es la expresión regular más larga que ha visto
- 2. ¿Cuál es la dirección de correo electrónico más larga posible?
- 3. PHP MySQL donde la longitud es más larga que 1
- 4. subcadena más larga que aparece n veces
- 5. ¿Cuál es la manera más fácil en C# para recortar una nueva línea de una cuerda?
- 6. puede el punto tener una historia más larga
- 7. ¿Cuál es el dispositivo más pequeño que puedo programar?
- 8. ¿Por qué la cuerda "11" es menor que la cuerda "3"?
- 9. ¿Cómo puedo encontrar la cadena más larga en Python?
- 10. La subsecuencia más larga común
- 11. ¿Cuál es la mejor forma de formatear una cuerda en Scala?
- 12. ¿Cuál es el más simple ¿PUEDO tener las obras para un único archivo C?
- 13. Encuentra más larga secuencia
- 14. Ruta simple más larga
- 15. ¿Cómo puedo tener más control en ASP.NET?
- 16. ¿Usar una matriz es más rápido que tener múltiples instrucciones?
- 17. Seleccionar TimeRange común más larga
- 18. ¿Cuál es la declaración LINQ más impresionante que ha encontrado?
- 19. PHP más corta/cadena más larga en la gama
- 20. Igraph: Obtener la distancia geodésica más larga
- 21. ¿Por qué la Stream.Position es larga
- 22. Android ImageButton ¿cómo tener un área seleccionable que es más grande que la imagen en sí?
- 23. Subsección palindrómica común más larga
- 24. alinear al palabra más larga
- 25. Contando la ocurrencia más larga de secuencia repetida en Python
- 26. línea más larga en vim?
- 27. ¿Cuál es la aplicación Lisp más impresionante?
- 28. ¿Cuál es la expresión regular más eficiente?
- 29. ¿Cómo encontrar la palabra más larga en la lista?
- 30. ¿Cuál es el encabezado de Windows más pequeño que puedo #incluir para definir DWORD?
¿Conseguiste el trabajo? – simbabque