Historial de los últimos códigos añadidos

Listado de los últimos códigos introducidos.
Imágen de perfil

Buscar la posición de todos los elementos en una lista


Python

Publicado el 17 de Enero del 2020 por katas
32 visualizaciones desde el 17 de Enero del 2020
Crear una función que devuelva una lista con todos los índices donde se encuentre un elemento en una lista. Si no se encuentra ninguna vez, tiene que devolver una lista vacía [].

1
2
indexOfAll([1, 2, 3, 1, 2, 3], 1); # [0,3]
indexOfAll([1, 2, 3], 4); # []
Imágen de perfil

Buscar la posición de todos los elementos en un array


JavaScript

Publicado el 17 de Enero del 2020 por katas
34 visualizaciones desde el 17 de Enero del 2020
Crear una función que devuelva un array con todos los índices donde se encuentre un elemento en una matriz. Si no se encuentra ninguna vez, tiene que devolver un array vació [].

1
2
indexOfAll([1, 2, 3, 1, 2, 3], 1); // [0,3]
indexOfAll([1, 2, 3], 4); // []
Imágen de perfil

Saber si nuestro código se ejecuta en un navegador o en NodeJS


JavaScript

Publicado el 17 de Enero del 2020 por katas
30 visualizaciones desde el 17 de Enero del 2020
Determina si el entorno donde se esta ejecutando JavaScript es un navegador o se esta ejecutando sobre NodeJS.

Utiliza Array.prototype.includes() en el tipo de valores de la ventana y del documento (los globales generalmente solo están disponibles en un entorno de navegador a menos que se definan explícitamente), lo que devolverá verdadero si uno de ellos no está definido. typeof permite que se verifique la existencia de globals sin lanzar un ReferenceError. Si ambos no están indefinidos, se supone que el entorno actual es un navegador.

1
2
isBrowser(); // true (browser)
isBrowser(); // false (Node)
Imágen de perfil
Val: 32
Ha mantenido su posición en ASP.NET (en relación al último mes)
Gráfica de ASP.NET

Buscar los valores de una lista en medio del contenido de otra lista


Python

Publicado el 17 de Enero del 2020 por joel
61 visualizaciones desde el 17 de Enero del 2020
Esta código muestra como buscar las palabras de una lista en cualquier parte de los valores de otra lista.

1
list(filter(exist, palabras)) # ['liou', 'miau', 'Semiautomático', 'dioico']
sin imagen de perfil

Convertir entre dos fechas años, meses y días


Visual Basic

Actualizado el 17 de Enero del 2020 por Jose Francisco (Publicado el 16 de Enero del 2020)
69 visualizaciones desde el 16 de Enero del 2020
Se puede calcular entre dos fechas los años los meses y los días....
Imágen de perfil

Obtener las veces que se repite una letra o palabra en una frase


Python

Publicado el 16 de Enero del 2020 por katas
97 visualizaciones desde el 16 de Enero del 2020
Crear una función que devuelva las repeticiones de una letra o palabra dentro de una cadena.

1
2
3
4
5
6
7
getRepetitions("", "") # 0
getRepetitions("house", "a") # 0
getRepetitions("zzzz", "z") # 4
getRepetitions("zzzz", "zz") # 2
getRepetitions("zzzz", "zzz") # 1
getRepetitions("the big house", "big") # 1
getRepetitions("the big house is bigger than a plane", "big") # 2
Imágen de perfil

Obtener la cantidad de veces que cada vocal aparece en una cadena


Python

Publicado el 16 de Enero del 2020 por katas
91 visualizaciones desde el 16 de Enero del 2020
Crear una función que reciba una cadena y devuelva un diccionario con la la cantidad de veces que aparece cada vocal en la cadena.

1
2
3
4
5
getVowels("") # {a: 0, e: 0, i: 0, o: 0, u: 0}
getVowels("zzzz") # {a: 0, e: 0, i: 0, o: 0, u: 0}
getVowels("the bIg house") # {a: 0, e: 2, i: 1, o: 1, u: 1}
str="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum."
getVowels(str) # {a: 29, e: 59, i: 38, o: 25, u: 17}
Imágen de perfil

Contar las vocales de una cadena


Python

Publicado el 16 de Enero del 2020 por katas
80 visualizaciones desde el 16 de Enero del 2020
Crear una función que reciba una cadena y devuelva la cantidad de vocales que contiene.

1
2
3
getVowels("") # 0
getVowels("zzzz") # 0
getVowels("the big house") # 5
Imágen de perfil

Obtener la cantidad de veces que cada vocal aparece en una cadena


JavaScript

Publicado el 15 de Enero del 2020 por katas
145 visualizaciones desde el 15 de Enero del 2020
Crear una función que reciba una cadena y devuelva un objeto con la la cantidad de veces que aparece cada vocal en la cadena.

1
2
3
4
5
console.log(getVowels("")); // {a: 0, e: 0, i: 0, o: 0, u: 0}
console.log(getVowels("zzzz")); // {a: 0, e: 0, i: 0, o: 0, u: 0}
console.log(getVowels("the bIg house")); // {a: 0, e: 2, i: 1, o: 1, u: 1}
const str="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum."
console.log(getVowels(str)); // {a: 29, e: 59, i: 38, o: 25, u: 17}
Imágen de perfil

Contar las vocales de una cadena


JavaScript

Publicado el 15 de Enero del 2020 por katas
105 visualizaciones desde el 15 de Enero del 2020
Crear una función que reciba una cadena y devuelva la cantidad de vocales que contiene.

1
2
3
getVowels(""); // 0
getVowels("zzzz"); // 0
getVowels("the big house"); // 5
Imágen de perfil

Obtener las veces que se repite una letra o palabra en una frase


JavaScript

Publicado el 15 de Enero del 2020 por katas
94 visualizaciones desde el 15 de Enero del 2020
Crear una función que devuelva las repeticiones de una letra o palabra dentro de una cadena

1
2
3
4
5
6
7
getRepetions("", ""); // 0
getRepetions("house", "a"); // 0
getRepetions("zzzz", "z"); // 4
getRepetions("zzzz", "zz"); // 2
getRepetions("zzzz", "zzz"); // 1
getRepetions("the big house", "big"); // 1
getRepetions("the big house is bigger than a plane", "big"); // 2
Imágen de perfil
Val: 32
Ha mantenido su posición en ASP.NET (en relación al último mes)
Gráfica de ASP.NET

Enviar un formulario automáticamente al introducir 6 caracteres


JavaScript

Publicado el 15 de Enero del 2020 por joel
108 visualizaciones desde el 15 de Enero del 2020
Código de ejemplo para mostrar como enviar un formulario automáticamente al introducir 6 caracteres en un input.
Imágen de perfil
Val: 32
Ha mantenido su posición en ASP.NET (en relación al último mes)
Gráfica de ASP.NET

Determinar si una posición dentro de una cadena esta entre las etiquetas <span>


PHP

Publicado el 14 de Enero del 2020 por joel
142 visualizaciones desde el 14 de Enero del 2020
Función que determina si una posición dada dentro de una cadena se encuentra entre los tags <span..> y </span>.

1
2
3
4
5
6
7
8
9
10
11
$cadena="";
echo positionIsBetweenSpan($cadena, 1); // false
$cadena="la casa azul";
echo positionIsBetweenSpan($cadena, 5); // false
$cadena="la <span class='b'>casa azul <span class='c'>esta</span> entre dos casas</span> rojas <span> de la calle";
echo positionIsBetweenSpan($cadena, 1); // false
echo positionIsBetweenSpan($cadena, 25); // true
echo positionIsBetweenSpan($cadena, 48); // true
echo positionIsBetweenSpan($cadena, 70); // true
echo positionIsBetweenSpan($cadena, 85); // false
echo positionIsBetweenSpan($cadena, 100); // true
Imágen de perfil

show process Openvms


Otros

Actualizado el 14 de Enero del 2020 por Edgar (Publicado el 13 de Enero del 2020)
153 visualizaciones desde el 13 de Enero del 2020
Este programa permite examinar a detalle un proceso en ejecución bajo el sistema operativo open vms
Imágen de perfil

Espacio remanente en discos Openvms


Otros

Publicado el 13 de Enero del 2020 por Edgar
129 visualizaciones desde el 13 de Enero del 2020
Es un programa que permite ver el espacio remanente en discos bajo el sistema operativo open vms
Imágen de perfil

Convertir formato am/pm a 24 horas


JavaScript

Publicado el 12 de Enero del 2020 por katas
153 visualizaciones desde el 12 de Enero del 2020
Crear una función que dada una hora en formato meridiano de 1am a 12am y de 1pm a 12pm, devuelva su equivalente en formato en valor de 0 a 24 horas.

1
2
3
4
5
6
getIntegerOfMeridiemSuffix("12am"); // 0
getIntegerOfMeridiemSuffix("1am"); // 1
getIntegerOfMeridiemSuffix("12pm"); // 12
getIntegerOfMeridiemSuffix("11am"); // 11
getIntegerOfMeridiemSuffix("1pm"); // 13
getIntegerOfMeridiemSuffix("11pm"); // 23
Imágen de perfil

Cortar un texto para que se ajuste en anchura sin cortar ninguna palabra


JavaScript

Publicado el 12 de Enero del 2020 por katas
202 visualizaciones desde el 12 de Enero del 2020
Escriba un formato de función que tome dos argumentos, texto y ancho, y formatee el texto para que se ajuste al ancho.

Su función debe dividir el texto dado en líneas usando caracteres de nueva línea. Debe incluir tantas palabras en cada línea como sea posible sin exceder el ancho dado o dividir las palabras entre dos líneas. No debe haber un espacio al principio o al final de cualquier línea.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
const texto="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum sagittis dolor mauris, at elementum ligula tempor eget. In quis rhoncus nunc, at aliquet orci. Fusce at dolor sit amet felis suscipit tristique. Nam a imperdiet tellus. Nulla eu vestibulum urna. Vivamus tincidunt suscipit enim, nec ultrices nisi volutpat ac. Maecenas sit amet lacinia arcu, non dictum justo. Donec sed quam vel risus faucibus euismod. Suspendisse rhoncus rhoncus felis at fermentum. Donec lorem magna, ultricies a nunc sit amet, blandit fringilla nunc. In vestibulum velit ac felis rhoncus pellentesque. Mauris at tellus enim. Aliquam eleifend tempus dapibus. Pellentesque commodo, nisi sit amet hendrerit fringilla, ante odio porta lacus, ut elementum justo nulla et dolor.";
 
result=format(texto, 30);
/* Devolvera:
Lorem ipsum dolor sit amet,
consectetur adipiscing elit.
Vestibulum sagittis dolor
mauris, at elementum ligula
tempor eget. In quis rhoncus
nunc, at aliquet orci. Fusce
at dolor sit amet felis
suscipit tristique. Nam a
imperdiet tellus. Nulla eu
vestibulum urna. Vivamus
tincidunt suscipit enim, nec
ultrices nisi volutpat ac.
Maecenas sit amet lacinia
arcu, non dictum justo. Donec
sed quam vel risus faucibus
euismod. Suspendisse rhoncus
rhoncus felis at fermentum.
Donec lorem magna, ultricies a
nunc sit amet, blandit
fringilla nunc. In vestibulum
velit ac felis rhoncus
pellentesque. Mauris at tellus
enim. Aliquam eleifend tempus
dapibus. Pellentesque commodo,
nisi sit amet hendrerit
fringilla, ante odio porta
lacus, ut elementum justo
nulla et dolor.
*/
Imágen de perfil

Alineas texto a la derecha


JavaScript

Publicado el 12 de Enero del 2020 por katas
135 visualizaciones desde el 12 de Enero del 2020
Su tarea en este Kata es emular el texto justificado directamente en la fuente monoespacio. Se le dará un texto de una línea y el ancho de justificación esperado. La palabra más larga nunca será mayor que este ancho.

Estas son las reglas:
- Use espacios para llenar los espacios en el lado izquierdo de las palabras.
- Cada línea debe contener tantas palabras como sea posible.
- Use '\ n' para separar las líneas.
- La brecha entre palabras no puede diferir en más de un espacio.
- Las líneas deben terminar con una palabra, no un espacio.
- '\n' no está incluido en la longitud de una línea.
- La última línea no debe contener '\n'

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
const texto="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum sagittis dolor mauris, at elementum ligula tempor eget. In quis rhoncus nunc, at aliquet orci. Fusce at dolor sit amet felis suscipit tristique. Nam a imperdiet tellus. Nulla eu vestibulum urna. Vivamus tincidunt suscipit enim, nec ultrices nisi volutpat ac. Maecenas sit amet lacinia arcu, non dictum justo. Donec sed quam vel risus faucibus euismod. Suspendisse rhoncus rhoncus felis at fermentum. Donec lorem magna, ultricies a nunc sit amet, blandit fringilla nunc. In vestibulum velit ac felis rhoncus pellentesque. Mauris at tellus enim. Aliquam eleifend tempus dapibus. Pellentesque commodo, nisi sit amet hendrerit fringilla, ante odio porta lacus, ut elementum justo nulla et dolor.";
 
result=alignRight(texto, 30);
/* devolvera:
   Lorem ipsum dolor sit amet,
  consectetur adipiscing elit.
     Vestibulum sagittis dolor
   mauris, at elementum ligula
  tempor eget. In quis rhoncus
  nunc, at aliquet orci. Fusce
       at dolor sit amet felis
     suscipit tristique. Nam a
    imperdiet tellus. Nulla eu
      vestibulum urna. Vivamus
  tincidunt suscipit enim, nec
    ultrices nisi volutpat ac.
     Maecenas sit amet lacinia
 arcu, non dictum justo. Donec
   sed quam vel risus faucibus
  euismod. Suspendisse rhoncus
   rhoncus felis at fermentum.
Donec lorem magna, ultricies a
        nunc sit amet, blandit
 fringilla nunc. In vestibulum
        velit ac felis rhoncus
pellentesque. Mauris at tellus
 enim. Aliquam eleifend tempus
dapibus. Pellentesque commodo,
       nisi sit amet hendrerit
    fringilla, ante odio porta
     lacus, ut elementum justo
               nulla et dolor.
*/
Imágen de perfil

Alineas texto de manera justificada


JavaScript

Actualizado el 12 de Enero del 2020 por katas (Publicado el 9 de Enero del 2020)
226 visualizaciones desde el 9 de Enero del 2020
Su tarea en este Kata es emular la justificación del texto en fuente monoespacio. Se le dará un texto de una línea y el ancho de justificación esperado. La palabra más larga nunca será mayor que este ancho.

Estas son las reglas:
- Use espacios para llenar los espacios entre las palabras.
- Cada línea debe contener tantas palabras como sea posible.
- Use '\n' para separar las líneas.
- La brecha entre palabras no puede diferir en más de un espacio.
- Las líneas deben terminar con una palabra, no un espacio.
- '\n' no está incluido en la longitud de una línea.
- Los espacios grandes van primero, luego los más pequeños ('Lorem--ipsum--dolor--sit-amet,' (2, 2, 2, 1 espacios)).
- La última línea no debe justificarse, use solo un espacio entre las palabras.
- La última línea no debe contener '\n'
- Las cadenas con una palabra no necesitan espacios vacíos ('somelongword\n').

1
2
3
4
5
6
7
8
9
10
11
12
13
const texto="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum sagittis dolor mauris, at elementum ligula tempor eget. In quis rhoncus nunc, at aliquet orci. Fusce at dolor sit amet felis suscipit tristique. Nam a imperdiet tellus. Nulla eu vestibulum urna. Vivamus tincidunt suscipit enim, nec ultrices nisi volutpat ac. Maecenas sit amet lacinia arcu, non dictum justo. Donec sed quam vel risus faucibus euismod. Suspendisse rhoncus rhoncus felis at fermentum. Donec lorem magna, ultricies a nunc sit amet, blandit fringilla nunc. In vestibulum velit ac felis rhoncus pellentesque. Mauris at tellus enim. Aliquam eleifend tempus dapibus. Pellentesque commodo, nisi sit amet hendrerit fringilla, ante odio porta lacus, ut elementum justo nulla et dolor.";
 
result=justify(texto, 100);
/* devolvera:
Lorem  ipsum  dolor  sit  amet,  consectetur  adipiscing  elit. Vestibulum sagittis dolor mauris, at
elementum  ligula  tempor eget. In quis rhoncus nunc, at aliquet orci. Fusce at dolor sit amet felis
suscipit  tristique.  Nam  a  imperdiet tellus. Nulla eu vestibulum urna. Vivamus tincidunt suscipit
enim,  nec  ultrices  nisi  volutpat ac. Maecenas sit amet lacinia arcu, non dictum justo. Donec sed
quam  vel risus faucibus euismod. Suspendisse rhoncus rhoncus felis at fermentum. Donec lorem magna,
ultricies  a  nunc  sit  amet,  blandit  fringilla  nunc.  In  vestibulum  velit  ac  felis  rhoncus
pellentesque. Mauris at tellus enim. Aliquam eleifend tempus dapibus. Pellentesque commodo, nisi sit
amet hendrerit fringilla, ante odio porta lacus, ut elementum justo nulla et dolor.
*/
Imágen de perfil
Actualizado

Conoce la versión de Linux


C/Visual C

Actualizado el 12 de Enero del 2020 por Octulio (Publicado el 21 de Diciembre del 2019)
457 visualizaciones desde el 21 de Diciembre del 2019
Informa la versión de Linux en un cuadro de diálogo. Se hace uso de la biblioteca de clases Qt para Linux:
Muestra la siguiente información:
Versión del núcleo Linux.
Versión de la distribución de Linux.
Versión de X Server.
Versión de Qt.
Versión del escritorio KDE/GNOME/XFCE/MOTIF.
Dicha información puede ser marcada y copiada desde LinuxVer haciendo clic derecho sobre el área de texto.

Referencias: Sitios importantes para comenzar a aprender a programar en C++/Qt/Linux/Windows.
* https://es.wikipedia.org/wiki/Qt_(biblioteca)
* https://en.wikipedia.org/wiki/Qt_(software)
* https://www.qt.io/download-open-source
* https://github.com/PacktPublishing/Mastering-Qt-5-Second-Editon


linuxver-01
LinuxVer-0A
LinuxVer-0D
linuxver-05
Imágen de perfil

Determine si el orden de las llaves es válido


Python

Publicado el 12 de Enero del 2020 por katas
157 visualizaciones desde el 12 de Enero del 2020
Escriba una función que tome una cadena de llaves y determine si el orden de las llaves es válido. Debería devolver verdadero si la cadena es válida, y falso si no es válida.

Todas las cadenas de entrada no estarán vacías y solo consistirán en paréntesis, corchetes y llaves: () [] {}.

¿Qué se considera válido?
Una cadena de llaves se considera válida si todas las llaves coinciden con la llave correcta.

1
2
3
4
5
6
validBraces("(){}[]") # true
validBraces("([{}])") # true
validBraces("({}[{}])") # true
validBraces("(]") # false
validBraces("[(])") # false
validBraces("[({})](]") # false
Imágen de perfil

CEYS Versión 1805


Visual Basic

Actualizado el 12 de Enero del 2020 por rafael (Publicado el 9 de Enero del 2020)
387 visualizaciones desde el 9 de Enero del 2020
CEYS: Control de Entradas y Salidas. Versión 1805
Sistema de facturación y control de inventarios, Multiusuario, Compras, Ventas, Notas de Crédito, Notas de Débito, Traslados entre Inventarios, Órdenes de Trabajo. Capturas a través de lector de códigos de barras. Cuentas por Pagar, Cuentas por Cobrar, Pagos, Análisis de Saldos por Antigüedad. Control de inventarios múltiples. Requiere WinRar para descomprimir. SO: W7, W8, W10.
Imágen de perfil
Actualizado

Juego de tetris


C/Visual C

estrellaestrellaestrellaestrellaestrella(2)
Actualizado el 11 de Enero del 2020 por Adelino (Publicado el 25 de Enero del 2018)
27.734 visualizaciones desde el 25 de Enero del 2018
Juego de tetris en pantalla grafica (modo 13), se maneja con las teclas de dirección y escape, para cambiar nivel + y -.
Imágen de perfil

Devolver los valores de un diccionario


Python

Publicado el 11 de Enero del 2020 por katas
174 visualizaciones desde el 11 de Enero del 2020
Crear una función que reciba un diccionario y devuelva una lista únicamente con los valores.

1
2
3
4
5
6
edades = {
    "Juan": 35,
    "Carmen": 25,
    "Ana": 27,
}
result=getValues(edades) # [35, 25, 27]
sin imagen de perfil

Centrar un elemento horizonta y vertical con display:grid


CSS

Publicado el 11 de Enero del 2020 por katas
144 visualizaciones desde el 11 de Enero del 2020
Este código muestra como centrar un elemento verticalmente y horizontalmente utilizando el display:grid

centrar-elemento-grid
Imágen de perfil

enviar gmail con python


Python

Publicado el 10 de Enero del 2020 por joker_116
273 visualizaciones desde el 10 de Enero del 2020
Este es un programa escrito en Python para enviar mensajes por gmail
En el rar abra dos archivos un script de Python y un exe

El exe es para no tener que instalar python solo ingresan los datos y listo.
Espero lo disfruten.
Imágen de perfil
Val: 10
Ha aumentado 1 puesto en ASP.NET (en relación al último mes)
Gráfica de ASP.NET

Dibujar en Javascript con Canvas


JavaScript

Actualizado el 10 de Enero del 2020 por Ana Zelideth (Publicado el 9 de Enero del 2020)
188 visualizaciones desde el 9 de Enero del 2020
Buen día les comparto un ejemplo de como hacer círculos y un pino en Javascript con canvas.

arbol-navidad-canvas
Imágen de perfil
Actualizado

ChessPDFBrowser


Java

Actualizado el 9 de Enero del 2020 por Francisco Javier Rojas Garrido (Publicado el 22 de Noviembre del 2017)
1.636 visualizaciones desde el 22 de Noviembre del 2017
chessPDF

Aplicación de ajedrez que permite trabajar con las partidas de los libros de ajedrez en PDF (siempre que los libros no sean escaneados y las partidas estén escritas en formato algebraico).

También permite trabajar con listas de partidas leídas/escritas en formato PGN, y modificar los TAGs, NAGs y comentarios.

Los árboles de variantes pueden se modificados realizando movimientos con las piezas situadas en un tablero.

Permite trabajar con partidas incompletas (es decir, que empiecen en un movimiento posterior al inicial)
Imágen de perfil

Obtener los valores pasados en una url


JavaScript

Publicado el 9 de Enero del 2020 por katas
214 visualizaciones desde el 9 de Enero del 2020
Crear una función que devuelva un objeto con los parámetros (nombre:valor) recibidos en una url utilizando una expresión regular.

1
2
3
4
5
6
getURLParameters('http://url.com/index.php?name=Jhon&surname=Smith'); // {name: 'Jhon', surname: 'Smith'}
getURLParameters('index.php?name=Jhon&surname=Smith'); // {name: 'Jhon', surname: 'Smith'}
getURLParameters('http://url.com/index?id=7'); // {id: "7"}
getURLParameters('http://url.com/index?7'); // {}
getURLParameters('http://url.com/'); // {}
getURLParameters('http://url.com/index.php?'); // {}
Imágen de perfil

Validar una url con Java


Java

Publicado el 8 de Enero del 2020 por info
235 visualizaciones desde el 8 de Enero del 2020
Este simple código muestra una función para validar una url utilizando una expresión regular con el método estático compile de la clase Pattern.