Agregar N saltos de línea en un párrafo para obtener el resultado más estrecho

Michel Rouzic

Digamos que tenemos un párrafo como este:

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed tempor y vitalidad, de modo que el trabajo y el dolor, algunas cosas importantes que hacer eiusmod. A lo largo de los años, vendré, quien no sacará alícuotas de ella la ventaja del ejercicio, para que los esfuerzos de estímulo si el distrito escolar y la longevidad. Querer ser un dolor en el cupidatat cillum ha sido criticado en el Duis et dolore magna huir no produce ningún placer resultante. Los negros excepteur cupidatat no son excepteur, es reconfortante para el alma, es decir, abandonaron los deberes generales de los que tienen la culpa de tus problemas.

Suponiendo una fuente de ancho fijo, queremos agregar exactamente N saltos de línea (reemplazando solo los caracteres de espacio) para producir un bloque de texto de N + 1 líneas.

Aquí hay un ejemplo de salida para N = 8, obtenemos un ancho de línea máximo de 51:

Lorem ipsum dolor sit amet, consectetur adipiscing 
elit, sed do eiusmod tempor incididunt ut labore 
et dolore magna aliqua. Ut enim ad minim veniam, 
quis nostrud exercitation ullamco laboris nisi ut 
aliquip ex ea commodo consequat. Duis aute irure 
dolor in reprehenderit in voluptate velit esse 
cillum dolore eu fugiat nulla pariatur. Excepteur 
sint occaecat cupidatat non proident, sunt in culpa 
qui officia deserunt mollit anim id est laborum.

¿Cómo encontramos qué caracteres de espacio reemplazar con saltos de línea para obtener el menor número de caracteres en la línea más larga con el menor número de intentos?

Gilad Barkan

(Adaptado de aquí, ¿Cómo particionar una matriz de enteros de una manera que minimice el máximo de la suma de cada partición? )

Si consideramos las longitudes de las palabras como una lista de números, podemos realizar una búsqueda binaria en la partición.

Nuestros max lengthrangos de 0a sum (word-length list) + (num words - 1), meaning the spaces. mid = (range / 2). Verificamos si midse puede lograr dividiendo en Nconjuntos en el O(m)tiempo: recorra la lista, agregando (word_length + 1)a la parte actual mientras que la suma actual es menor o igual a mid. Cuando pase la suma mid, comience una nueva parte. Si el resultado incluye No menos partes, mides alcanzable.

Si midse puede lograr, pruebe con un rango más bajo; de lo contrario, un rango más alto. La complejidad del tiempo es O(m log num_chars). (También tendrá que considerar cómo eliminar un espacio por parte, es decir, dónde iría el salto de línea, las características en el cálculo).

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

eliminar saltos de línea innecesarios dentro de un párrafo en el código vs

Eliminar saltos de línea, saltos de párrafo en un archivo csv usando R

¿Cómo tener tramos que no sean saltos de línea, pero el párrafo aún saltos de línea, en Chrome?

¿Cómo puedo agregar saltos de línea a un archivo JSON para hacerlo más legible?

¿Cómo sumar el campo de remolque para obtener un resultado en línea?

¿Cómo limitar el número de palabras por línea en un párrafo html?

Obtener el número máximo de palabras en una oración de un párrafo Python

Intentando agregar saltos de línea en codificación hexadecimal

Agregar saltos de línea después de un patrón específico

convertir saltos y saltos de párrafo en una nueva línea en java

La función para reemplazar los saltos de línea dobles con etiquetas de párrafo no funciona

¿Cómo puedo agregar saltos de línea a un archivo JSON para que sea más legible?

Agregar saltos de línea en ipython

contar la línea con el carácter más alto en un párrafo

obtener el número de líneas de un párrafo que se han agregado

agregar una palabra antes y después de un párrafo cuando el patrón coincide

División de un párrafo línea por línea en c ++

PHP regex para condensar 4 o más saltos de línea en 3 saltos de línea

Cómo obtener saltos de línea en una función de devolución de llamada (% s o .format)

¿Cómo puedo obtener el texto de un párrafo y luego convertirlo en un número entero en HTML?

No puedo obtener un resultado de una sola línea colocada en el shell de Erlang

¿Cómo muestro el resultado de mi bucle for con la declaración if en una etiqueta html como un párrafo?

Cómo eliminar saltos de línea M a saltos de línea normales en Shellscript en un archivo CSV

¿Cómo obtener el contenido de un elemento (CDATA) conservando los saltos de línea?

Cómo obtener el método circundante en el archivo fuente de Java para un número de línea determinado

Cómo agregar saltos de línea en un archivo de texto usando Blob

¿Cómo obtener el resultado del análisis de dependencia exactamente como demostración en línea?

En R, ¿es posible llamar a una función en un párrafo de texto y eliminar los saltos?

Párrafo coincidente con saltos de línea Regex

TOP Lista

  1. 1

    ¿Cómo ocultar la aplicación web de los robots de búsqueda? (ASP.NET)

  2. 2

    OAuth 2.0 utilizando Spring Security + WSO2 Identity Server

  3. 3

    Manera correcta de agregar referencias al proyecto C # de modo que sean compatibles con el control de versiones

  4. 4

    Ver todos los comentarios en un video de YouTube

  5. 5

    uitableview delete button image in iOS

  6. 6

    ¿Título del selector de SwiftUI?

  7. 7

    Swift / Firebase : Facebook 사용자가 계정을 만들 때 Firebase 데이터베이스에 제대로 저장하려면 어떻게해야합니까?

  8. 8

    ¿Es posible reemplazar los valores de un archivo config.properties a través de TFS?

  9. 9

    Representación de mapas 3D en juegos

  10. 10

    Golang ListenAndServeTLS devuelve datos cuando no se usa https en el navegador

  11. 11

    Declarar propiedades reactivas (agregar bloques de componentes dinámicamente desde la inserción de matriz)

  12. 12

    Cómo hacer que SwiftUI Text multilineTextAlignment comience desde arriba y centro

  13. 13

    Cómo depurar una aplicación React en Visual Studio 2019 usando la plantilla "Blank Node.js"

  14. 14

    Múltiples relaciones en la misma tabla con dos columnas Laravel

  15. 15

    No existe tal archivo o directorio cuando se inicia el nombre del directorio con /

  16. 16

    Verilog : 입력 신호를 한 클럭 주기로 지연시키는 방법은 무엇입니까?

  17. 17

    ¿Cómo hacer un generador de ruido Perlin más suave?

  18. 18

    Problème avec le dessin d'un élément Qml avec des appels OpenGL bruts

  19. 19

    El nombre 'HttpContext' no existe en el contexto actual en Razor

  20. 20

    WPF pleine largeur DataGridColumn sur la largeur de DataGrid

  21. 21

    Tengo algunos problemas con el syscall de golang cuando llamo a dll en win7-64

CalienteEtiquetas

Archivo