urriellu.net => Proyectos => Software => CharStat

Quería saber cuales eran las letras más utilizadas en cada idioma y como no encontraba ningún sitio donde lo indicasen claramente (y porque me apetecía programar un poco) escribí CharStat.

Está escrito en C# y funciona perfectamente en Windows usando la implementación de .NET hecha por Microsoft, y sobre Mono 1.2.4 en Linux, por lo que debería funcionar en cualquier sistema operativo que tenga instalada una versión actual de Mono.

Toda la lógica del programa está en stats.cs y separada del código utilizado para generar la interfaz gráfica, por lo que sería muy fácil crear una librería con las opciones de generación de estadísticas, y también crear una interfaz para consola.

Con este programa se generaron las estadísticas publicadas en este artículo.

Código fuente

stats.cs, 298 líneas      [descargar]

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Windows.Forms;
  5. using System.IO;
  6. namespace CharStat_statistics {
  7.     /// <summary>
  8.     /// Class used to generate statistics
  9.     /// </summary>
  10.     public static class stats {
  11.         /// <summary>
  12.         /// Each key is an unicode character found in the text.
  13.         /// Its values are integer variables that determines the amount of times the character appears in the text
  14.         /// </summary>
  15.  
  16. [...]

Program.cs, 16 líneas      [descargar]

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Windows.Forms;
  4.  
  5. namespace CharStat_win {
  6.     static class Program {
  7.         /// <summary>
  8.         /// The main entry point for the application.
  9.         /// </summary>
  10.         [STAThread]
  11.         static void Main() {
  12.             Application.EnableVisualStyles();
  13.             Application.SetCompatibleTextRenderingDefault(false);
  14.             Application.Run(new Form1());
  15.         }
  16.     }
  17. }

Form1.cs, 84 líneas      [descargar]

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Windows.Forms;
  8. using System.Collections.Specialized;
  9. using System.IO;
  10. using CharStat_statistics;
  11. namespace CharStat_win {
  12.     public partial class Form1:Form {
  13.         public Form1() {
  14.             InitializeComponent();
  15.  
  16. [...]

Form1.Designer.cs, 260 líneas      [descargar]

  1. namespace CharStat_win {
  2.     partial class Form1 {
  3.         /// <summary>
  4.         /// Required designer variable.
  5.         /// </summary>
  6.         private System.ComponentModel.IContainer components = null;
  7.         /// <summary>
  8.         /// Clean up any resources being used.
  9.         /// </summary>
  10.         /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
  11.         protected override void Dispose(bool disposing) {
  12.             if(disposing && (components != null)) {
  13.                 components.Dispose();
  14.             }
  15.  
  16. [...]

Capturas de pantalla

CharStat ejecutándose en Windows XPCharStat ejecutándose en Linux sobre Mono 1.2.4 

 

Problemas conocidos

En Windows si se intenta acceder a un archivo que está siendo usado salta una excepción.

No me preocupa especialmente que el programa funcione perfectamente, sólo pretende ser una solución rápida y simple para generar estadísticas del uso de caracteres en textos.

Archivo ejecutable

Descargar .exe
Debería funcionar (sin necesidad de recompilar) en cualquier sistema operativo con una máquina virtual de .NET instalada.

En Windows no requiere instalación ni depende de ninguna librería externa (excepto las incluidas en .NET) y se ejecuta simplemente haciendo doble click en el icono. En KDE/Gnome y cualquier otro escritorio y OS con entorno gráfico funcionará con doble click si los archivos *.exe están asociados para que se ejecuten a través de Mono.

Para ejecutarlo desde la consola:

$ cd /ruta/al/directorio/donde/este/el/ejecutable
$ mono CharStat-WinForms.exe

Yo recomiendo:

$ MONO_THEME=clearlooks mono CharStat-WinForms.exe