GeeksforGeeks brinda a todos los entusiastas de la codificación la oportunidad de mostrar sus habilidades de programación y estructuras de datos y algoritmos escribiendo artículos de codificación o basados en DSA. Sin embargo, a muchas personas (especialmente estudiantes universitarios o principiantes) les resulta difícil articular sus aprendizajes y habilidades y contribuir en GeeksforGeeks. Pero ahora el problema se resolvió, ya que este artículo lo guiará a través de todo el proceso y las pautas para escribir artículos de Programación/DSA en GeeksforGeeks .
Empecemos:
En primer lugar, debe saber cómo comenzar a escribir artículos en GFG junto con otros aspectos fundamentales, como por qué debería contribuir, dónde escribir, etc. Puede consultar este enlace para conocer todos estos detalles de manera integral. .
¿Cómo verificar si podemos escribir un artículo?
Ahora, debe verificar si puede escribir un artículo sobre un tema o problema en particular o no. Puede hacer lo mismo siguiendo los pasos mencionados a continuación:
- Busque el título y la declaración del problema en la búsqueda personalizada en GeeksforGeeks. Si existe, no escriba.
- Luego busque el título, la declaración del problema y los ejemplos (juntos y/o individualmente) en Google para encontrar enlaces existentes relacionados de otros sitios web. Si el mismo contenido también está disponible en algún lugar, como Codility, Codeforces, etc., esto conducirá al plagio y, por lo tanto, no se puede aceptar.
- Busque algunas variaciones básicas o enunciados de problemas generalizados. Si se encuentra, se considerará plagio.
Si el artículo pasa los puntos anteriores, el artículo se puede escribir.
Pautas y formato del artículo de codificación
Avanzando más, veamos el formato y las pautas que debe seguir al escribir un artículo de codificación en GeeksforGeeks. Los artículos de programación deben contener los siguientes puntos:
- Planteamiento del problema
- Ejemplos (Dos). Explicación de ejemplos para obtener una comprensión adecuada de cómo logramos el resultado.
- Enlaces de requisitos previos para el enfoque si los hay.
- El enfoque utilizado para resolver el problema.
- Primero, una idea básica o intuición.
- Luego, los puntos paso a paso sobre cómo funcionará este enfoque.
- Resalte cualquier observación o punto importante usando negrita, blockquote o pre.
- Implementación / Código. Si hay códigos en varios idiomas, el orden debe ser C++, Java, Python3, C#. Tenga en cuenta que no se aceptan los códigos Python 2, pero sí los códigos Python 3.
- Complejidad Temporal y Espacio Auxiliar, con la explicación de los términos utilizados para expresarlos.
Trate de mantener el lenguaje simple, específico y libre de pronombres como yo, usted, nosotros, etc.
Formato de enfoque
Si el enfoque es:
Creamos una array mark[] de tipo booleano. Iteramos a través de todos los caracteres de nuestra string y cada vez que vemos un carácter lo marcamos. Minúsculas y mayúsculas se consideran iguales. Entonces, ‘A’ y ‘a’ están marcados en el índice 0 y, de manera similar, ‘Z’ y ‘z’ están marcados en el índice 25.
Lo anterior se puede escribir como:
Este enfoque se basa en Hashing .
- Se crea una estructura de datos Hashing de tipo booleano de tamaño 26, de forma que el índice 0 representa el carácter ‘a’, el 1 representa el carácter ‘b’, etc.
- Recorra la string carácter por carácter y marque el carácter particular como presente en el Hash.
- Después de completar el recorrido y marcar la string, recorra el Hash y vea si todos los caracteres están presentes, es decir, cada índice tiene verdadero. Si todos están marcados, devuelve verdadero, de lo contrario, falso.
Enfoque de muestra:
Problema: imprima todas las combinaciones únicas de configuración de N piezas en un tablero NxN
Enfoque: este problema se puede resolver utilizando la recursividad para generar todas las soluciones posibles. Ahora, siga los pasos a continuación para resolver este problema:
- Cree una función llamada allCombinations , que generará todas las soluciones posibles.
- Tomará un entero piecesPlaced que denota el número total de piezas colocadas, un entero N que denota el número de piezas que se deben colocar, dos enteros fila y columna que denotan la fila y la columna donde se colocará la pieza actual y una string de caracteres para almacenar la array donde se colocan las piezas, como argumentos.
- Ahora, la llamada inicial a allCombinations pasará 0 como piecesPlaced , N , 0 y 0 como fila y columna y una string vacía como ans .
- En cada llamada, verifique el caso base, es decir:
- Si la fila se convierte en N y se colocan todas las piezas, es decir, piezas colocadas = N. Luego imprima la respuesta y regrese. De lo contrario, si piecesPlaced no es N , simplemente regrese de esta llamada.
- Ahora haz dos llamadas:
- Uno para agregar un ‘*’ en la posición actual y otro para dejar esa posición y agregar ‘-‘ .
- Después de esto, las llamadas recursivas imprimirán todas las soluciones posibles.
¿Cómo agregar código en el artículo?
Avanzando más, ahora necesita comprender el proceso de agregar el código en el artículo. Es como sigue:
Puede usar el botón ‘ Agregar código’ para agregar el código.
Para agregar código en varios lenguajes de programación, puede elegir la opción Agregar otro idioma como se muestra a continuación. Después de eso, haga clic en el botón Continuar .
En caso de que su código no se compile o ejecute por algún motivo, como bibliotecas no compatibles con el compilador, si desea demostrar errores, etc., desmarque la opción Habilitar ejecución en Ide para eliminar los botones de ejecución del código. Este botón también evita errores cuando intenta agregar la salida usando el botón » Anexar salida » que está justo al lado del botón » Agregar código «.
Estándares de codificación
Debe asegurarse de seguir los estándares de codificación mencionados a continuación:
1) Los nombres de funciones y variables siguen el caso del camello. Por ejemplo, getMin(), getMax() y removeDuplicates(), isPresent, etc.
2) El código del controlador (o función principal) no contiene ninguna lógica. Contiene solo entrada/salida y llamada de función.
3) La sangría debe hacerse usando 4 espacios.
4) Máximo 60 caracteres en una línea para que el programa sea legible en dispositivos móviles sin mucho desplazamiento horizontal.
C
// Below style should be avoided int fun(int a, int sumSoFar, int currSum, char val, int *result) // The above should be written as int fun(int a, int sumSoFar, int currSum, char val, int *result)
C++
// Below style should be avoided cout << "Sample code to understand coding style for more readability of millions of readers" << val; // The above should be written as cout << "Sample code to understand coding style for" << " more readability of millions of readers" << val;
5) En caso de que el código esté escrito en varios lenguajes como Python, Java y C/C++, la salida de todos los códigos debe ser la misma.
6) Evite el uso de sentencias scanf (o cin).
7) Espacios en while, if, else, for
C
// There should be one space after while, no other // spaces while (i < 0) if (x < y) { }
8) No debe haber espacios para una llamada de función o declaración de función
C
// No spaces after "reverse" or after "(" void reverse(char* str, int low, int high) { while (low < high) { swap(&str[low], &str[high]); ++low; --high; } } // Driver program to test above function int main() { char str[] = "geeksforgeeks"; reverse(str); return 0; }
9) Evite el uso de typdef.
10) Los nombres de las funciones deben tener la forma » m axOfTwo()», los nombres de las variables deben tener la forma «max_of_two» o el mismo estilo que el nombre de la función. Los nombres de Clase/Estructura deben tener la forma “ NúmeroComplejo ” o “ NodeÁrbolSufijo ”. Los nombres de las macros deben estar en letras mayúsculas como MAX_SIZE.
11) Evitar el uso de variables estáticas y globales.
12) Cuando usamos cout, debemos usar un espacio entre cout y “<<” y un espacio entre dos “<<“. Por ejemplo:
C++
cout << "Sample" << "Example"
13) Debe haber un espacio después de la coma en la lista de declaraciones y el paso de parámetros.
C
int x, y, z; fun(x, y, z);
14) Debe haber espacios en los operadores de asignación
C
// Should be avoided int x, y=0; // Should be followed int x, y = 0; // Should be avoided x+=10; // Should be followed x += 10;
15) Al comienzo de cada programa, escriba una línea para indicar el propósito del programa:
Java
// Java program to illustrate sum of two numbers
Nota: Se recomienda enfáticamente agregar complejidad de tiempo después de su código en estructuras de datos/artículos de algoritmos.
Pautas para la creación de imágenes
Las pautas de creación de imágenes son las siguientes:
- El nombre de la imagen debe ser Relevante . Por ejemplo, si una imagen muestra”: “Suma de dos números usando una lista enlazada”, el título de la imagen debe ser: Suma de dos números usando una lista enlazada.
- En caso de que las imágenes se construyan con el rastreador de paquetes, envíe la grabación de pantalla en lugar de la imagen si es posible.
- En el caso de capturas de pantalla, agregue GeeksforGeeks (o GFG) en algún lugar de la salida. Por ejemplo, puede ser el nombre de la carpeta, el título de la imagen, etc.
- Es obligatorio crear tus propias imágenes utilizando alguna herramienta de dibujo de imágenes (por ejemplo: Dibujos de Google, MS Paint, https://www.draw.io/). Las imágenes NO DEBEN ser tomadas de ninguna otra fuente para evitar cualquier problema de derechos de autor. Puede seguir las siguientes pautas para crear imágenes al estilo GeeksforGeeks:
- El límite/perfil de la imagen debe ser de color negro.
- El texto a escribir debe ser de color verde.
- Nuestra prioridad debe ser usar un fondo blanco, si se necesitan otros colores de fondo, use verde como fondo y color blanco en el texto.
- El color rojo debe usarse para mostrar movimientos, representaciones, variaciones y otras cosas.
- Si se requieren más colores en la imagen, comuníquese con los revisores de GeeksforGeeks para que lo guíen.
Consulte a continuación la imagen de ejemplo para tener una idea clara sobre la creación de imágenes de una array:
Puntos importantes (con ejemplos)
1. Si el enfoque es bastante simple o conciso, entonces no hay necesidad de mencionar puntos paso a paso para resolver el problema; los pasos para resolver el problema se pueden cubrir en ese único párrafo. Por ejemplo, consulte este artículo: Ordenar una lista vinculada después de convertir elementos a su cuadrado
2. Agregue Time Complexity y Auxiliary Space después de su código en estructuras de datos/artículos de algoritmos. Consulte el artículo como referencia: Imprima todas las combinaciones únicas de configuración de N piezas en un tablero NxN
3. Al usar un enfoque eficiente para resolver un problema, primero debe decir por qué es mejor que el enfoque ingenuo/antiguo. Por ejemplo, consulte este artículo: Recuento de pares (arr[i], arr[j]) tales que arr[i] + j y arr[j] + i son iguales
4. Algunos artículos de muestra más:
- Maximiza la suma de elementos arr[i] seleccionados saltando índice por valor i
- Encuentre si 0 se elimina más o 1 eliminando el elemento central si el triplete consecutivo es divisible por 3 en la array binaria dada
- Comprobar si un número se puede expresar como producto de un número primo y un número compuesto
Nota: El problema tomado directamente de Codility & Codeforces no se puede publicar debido a problemas de derechos de autor.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA