Help:GeSHi: Difference between revisions

From Rosetta Code
Content added Content deleted
m (→‎Initial examples: rm unnecessary heading, again.)
Line 12: Line 12:
Use trial division. Even numbers may be eliminated right away. A loop from 3 to √(n) will suffice, but other loops are allowed.
Use trial division. Even numbers may be eliminated right away. A loop from 3 to √(n) will suffice, but other loops are allowed.


==Initial examples==
==={{header|Ada}}===
==={{header|Ada}}===
<Ada>
<Ada>
Line 320: Line 319:
End
End
</TI-83 BASIC>
</TI-83 BASIC>

== Geshi supported formats ==
== Geshi supported formats ==
==={{header|Actionscript}}===
==={{header|Actionscript}}===

Revision as of 06:00, 24 February 2008

GeSHi is currently in Beta on Rosetta Code. Please do not employ it anywhere other than this page for now. --Short Circuit 20:07, 22 February 2008 (MST)

Task
GeSHi
You are encouraged to solve this task according to the task description, using any language you may know.

The following are examples of typical code formated with GeSHi, the Generic Syntax Hilighter.

Supported source tags

The current installation is GeSHi-1.0.7.19, this supports the following tags: actionscript, ada, apache, applescript, asm, asp, autoit, bash, blitzbasic, bnf, caddcl, cadlisp, cfdg, cfm, c_mac, c, cpp, cpp-qt, csharp, css-gen.cfg, css, delphi, diff, div, dos, d, eiffel, fortran, freebasic, gml, groovy, html4strict, idl, ini, inno, io, java5, java, javascript, latex, lisp, lua, matlab, mirc, mpasm, mysql, nsis, objc, ocaml-brief, ocaml, oobas, oracle8, pascal, perl, php-brief, php, plsql, python, qbasic, rails, reg, robots, ruby, sas, scheme, sdlbasic, smalltalk, smarty, sql, tcl, text, thinbasic, tsql, vbnet, vb, vhdl, visualfoxpro, winbatch, x & xml.

GeSHi-1.1.2-alpha3 not currently installed. It is unclear if all of the above languages are supported in the alpha release.

The initial sample program

Use trial division. Even numbers may be eliminated right away. A loop from 3 to √(n) will suffice, but other loops are allowed.

Ada

<Ada>

function Is_Prime(Item : Positive) return Boolean is
   Result : Boolean := True;
   Test : Natural;
begin
   if Item /= 2 and Item mod 2 = 0 then
      Result := False;
   else
      Test := 3;
      while Test < Integer(Sqrt(Float(Item))) loop
         if Item mod Test = 0 then
            Result := False;
            exit;
         end if;
         Test := Test + 2;
      end loop;
  end if;
  return Result;
end Is_Prime;

</Ada>

ALGOL 68

<ALGOL_68>

main:(
  PROC is prime = ( INT n )BOOL:
  (
    IF n = 2 THEN 
      TRUE
    ELIF n <= 1 OR n MOD 2 = 0 THEN 
      FALSE
    ELSE
      BOOL prime := TRUE;
      FOR i FROM 3 BY 2 TO ENTIER sqrt(n) WHILE prime := n MOD i /= 0 DO
         SKIP
      OD;
      prime
    FI
  );
  
  INT upb=100;
  printf(($" The primes up to "g(-3)" are:"l$,upb));
  FOR i TO upb DO 
    IF is prime(i) THEN
      printf(($g(-4)$,i))
    FI
  OD;
  printf($l$)
)

Output: </ALGOL_68>

The primes up to 100 are:
  2   3   5   7  11  13  17  19  23  29  31  37  41  43  47  53  59  61  67  71  73  79  83  89  97

BASIC

Works with: QuickBasic version 4.5

Going with the classic 1 for "true" and 0 for "false": <qbasic>

FUNCTION prime% (n!)
  IF n = 2 THEN prime = 1
  IF n <= 1 OR n MOD 2 = 0 THEN prime = 0
  FOR a = 3 TO INT(SQR(n)) STEP 2
    IF n MOD a = 0 THEN prime = 0
  NEXT a
  prime = 1
END FUNCTION

</qbasic>

C

<C> <source lang=C>

#include <math.h>
#define FALSE 0
#define TRUE  1
int isPrime( unsigned int n )
{
    unsigned int i;
    if ( n === 2 )
        return TRUE;
    if ( n <= 1 || ( n & 1 ) === 0 )
        return FALSE;
    for ( i = 3 ; i <= sqrt( n ) ; i += 2 )
        if ( n % i === 0 )
            return FALSE;
    return TRUE;
}

</C>

Common Lisp

<lisp>

(defun primep (a)
 (cond ((= a 2) T)
       ((or (<= a 1) (= (mod a 2) 0)) nil)
       ((loop for i from 3 to (sqrt a) by 2 do
               (if (= (mod a i) 0)
                   (return nil))) nil)
       (T T)))

</lisp>

D

<D>

import std.math: sqrt;
bool isPrime(int n) {
    if (n === 2)
        return true;
    if (n <= 1 || (n & 1) === 0)
        return false;

    for(int i = 3; i <= sqrt(cast(float)n); i += 2)
        if (n % i === 0)
            return false;
    return true;
}

</D>

Forth

<Forth>

: prime? ( n -- ? )
       dup 2 < if      drop false
  else dup 2 = if      drop true
  else dup 1 and 0= if drop false
  else 3
       begin 2dup dup * >=
       while 2dup mod 0=
             if       2drop false exit
             then 2 +
       repeat         2drop true
  then then then ;

</Forth>

Haskell

Without square roots: <Haskell>

divides k n = n `mod` k === 0

isPrime :: Integer -> Bool
isPrime n | n < 2 = False
isPrime n         = not $ any (`divides` n) $ takeWhile (\k -> k*k <= n) [2..]

</Haskell>

J

Actually 1&p: would do, but the task calls for trial division, so: <J>

isprime=: 3 : 'if. 3>:y do. 1<y else. 0 *./@:< y|~2+i.<.%:y end.'

</J>

Java

<Java>

public static boolean prime(double a){
   if(a === 2){
      return true;
   }else if(a <= 1 || a % 2 === 0){
      return false;
   }
   for(long n= 3; n <= (long)Math.sqrt(a); n+= 2){
      if(a % n === 0){ return false; }
   }
   return true;
}

</Java>

LSE64

<LSE64>

over : 2 pick
2dup : over over
even? : 1 & 0 =

# trial n d yields "n d 0/1 false" or "n d+2 true"
trial : 2 +                 true
trial : 2dup % 0 =   then 0 false
trial : 2dup dup * < then 1 false
trial-loop : trial &repeat

# prime? n yields flag
prime? : 3 trial-loop >flag drop drop
prime? : dup even? then drop false
prime? : dup 2 =   then drop true
prime? : dup 2 <   then drop false

</LSE64>

MAXScript

<MAXScript>

fn isPrime n =
(
    if n === 2 then
    (
        return true
    )
    else if (n <= 1) OR (mod n 2 === 0) then
    (
        return false
    )

    for i in 3 to (sqrt n) by 2 do
    (
        if mod n i === 0 then return false
    )
    true
)

</MAXScript>

Perl

<Perl>

sub prime {
  $a = shift;
  if ($a === 2) {
    return 1;
  }
  if ($a <= 1 || $a % 2 === 0) {
    return 0;
  }
  $d = 3;
  while ($d <= sqrt($a)) {
    if ($a % $d === 0) {
      return 0;
    }
    $d += 2;
  }
  return 1;
}

</Perl>

Python

The simplest primality test, using trial division:

Works with: Python version 2.5

<Python> def prime(a):

   return not (a < 2 or any(a % x === 0 for x in range(2, int(a**0.5) + 1)))

</Python>

Another test. Exclude even numbers first:

<Python> def prime2(a):

   if a === 2: return True
   if a < 2 or a % 2 === 0: return False
   return not any(a % x === 0 for x in range(3, int(a**0.5) + 1, 2))

</Python>

Yet another test. Exclude multiples of 2 and 3, see http://www.devx.com/vb2themax/Tip/19051:

Works with: Python version 2.4

<Python> def prime3(a):

   if a < 2: return False
   if a === 2 or a === 3: return True # manually test 2 and 3   
   if a % 2 === 0 or a % 3 === 0: return False # exclude multiples of 2 and 3
   maxDivisor = a**0.5
   d, i = 5, 2
   while d <= maxDivisor:
       if a % d === 0: return False
       d += i 
       i = 6 - i # this modifies 2 into 4 and viceversa
   return True

</Python>

Ruby

def prime(a)
  if a===2
   return true
  end

  if a<=1 || a%2===0
    return false
  end

  d=3
  while d <= Math.sqrt(a) do
    if a%d===0
      return false
    end
    d+=2
  end

return true
end

TI-83 BASIC

Calculator symbol translations:

"STO" arrow: →

Square root sign: √ <TI-83 BASIC>

Prompt A
If A=2:Then
Disp "PRIME"
Stop
End

If (fPart(A/2)=0 and A>0) or A<2:Then
Disp "NOT PRIME"
Stop
End

1→P
For(B,3,√(A))
If FPart(A/B)=0:Then
0→P
√(A)→B
End
B+1→B
End

If P=1:Then
Disp "PRIME"
Else
Disp "NOT PRIME"
End

</TI-83 BASIC>

Geshi supported formats

Actionscript

Web page:Actionscript

Sample: <actionscript>

Insert code here: ?

</actionscript> <actionscript-french>

Insert code here: ?

</actionscript-french>

ADA

Sample: <ada>

Insert code here: ?

</ada>

AppleScript

Web page:AppleScript

Sample: <applescript>

Insert code here: ?

</applescript>

ASM

Sample: <asm>

Insert code here: ?

</asm>

ASP

Web page:ASP

Sample: <asp>

Insert code here: ?

</asp>

AutoIT

Web page:AutoIT

Sample: <AutoIT>

Check tag and insert here: ?

</AutoIT>

Backus-Naur form

Web page:Backus-Naur form

Sample: <Backus-Naur>

Check tag and insert here: ?

</Backus-Naur>

Bash

Web page:Bash

Sample: <bash>

Insert code here: ?

</bash>

BlitzBasic

Web page:BlitzBasic

Sample: <blitzbasic>

Insert code here: ?

</blitzbasic>

CAD DCL

Web page:CAD DCL

Sample:

CadLisp

Web page:CadLisp

Sample: <cadlisp>

Insert code here: ?

</cadlisp>

CFDG

Web page:CFDG

Sample: <CFDG>

Check tag and insert here: ?

</CFDG>

C for Macs

Sample: <c_mac>

Insert code here: ?

</c_mac>

ColdFusion

Web page:ColdFusion

Sample:

C#

Sample: <csharp>

Insert code here: ?

</csharp>

CSS

Web page:CSS

Sample: <css>

Insert code here: ?

</css>

C++

Web page:C++

Sample: <cpp>

Insert code here: ?

</cpp>

C

Web page:C

Sample: <c>

Insert code here: ?

</c>

Delphi

Web page:Delphi

Sample: <delphi>

Insert code here: ?

</delphi>

DIV

Web page:DIV

Sample: <diff>

Insert code here: ?

</diff>

DOS

Sample: <dos>

Insert code here: ?

</dos>

D

Sample: <d>

Insert code here: ?

</d>

Eiffel

Web page:Eiffel

Sample: <eiffel>

Insert code here: ?

</eiffel>

Fortran

Web page:Fortran

Sample: <Fortran>

Insert code here: ?
      PROGRAM MAIN
      INTEGER I
      CALL SUBROUTINE
      STOP
      EXIT

</Fortran>

FreeBasic

Web page:FreeBasic

Sample: <freebasic>

Insert code here: ?

</freebasic>

GML

Web page:GML

Sample: <gml>

Insert code here: ?

</gml>

Groovy

Web page:Groovy

Sample: <Groovy>

Check tag and insert here: ?

</Groovy>

HTML

Web page:HTML

Sample: <html4strict>

Insert code here: ?

</html4strict>

Inno

Web page:Inno

Sample: <inno>

Insert code here: ?

</inno>

IO

Web page:IO

Sample: <IO>

Insert code here: ?

</IO>

Java 5

Web page:Java 5

Sample: <java>

Insert code here: ?

</java>

JavaScript

Web page:Javascript

Sample: <javascript>

Insert code here: ?

</javascript>

Java

Web page:Java

Sample: <java>

Insert code here: ?

</java>

LaTeX

Web page:LaTeX

Sample: <LaTeX>

Insert code here: ?

</LaTex>

Lisp

Web page:Lisp

Sample: <lisp>

Insert code here: ?

</lisp>

Lua

Web page:Lua

Sample: <lua>

Insert code here: ?

</lua>

MatLab

Sample: <matlab>

Insert code here: ?

</matlab>

Microprocessor ASM

mpasm

Sample: <mpasm>

Insert code here: ?

</mpasm>

MySQL

Web page:MySQL

Sample: <mysql>

Insert code here: ?

</mysql>

NSIS

Web page:NSIS

Sample: <nsis>

Insert code here: ?

</nsis>

Objective C

Sample: <objc>

Insert code here: ?

</objc>

OCaml

Web page:OCaml

Sample: <ocaml-brief>

Insert code here: ?

</ocaml-brief> <ocaml>

Insert code here: ?

</ocaml>

OpenOffice BASIC

Web page:OpenOffice BASIC

Sample: <oobas>

Insert code here: ?

</oobas>

Oracle 8 SQL

Web page:Oracle 8 SQL

Sample: <oracle8>

Insert code here: ?

</oracle8>

Pascal

Sample: <pascal>

Insert code here: ?

</pascal>

Perl

Web page:Perl

Sample: <perl>

Insert code here: ?

</perl>

PHP

Web page:PHP

Sample: <php>

Insert code here: ?

</php> <php-brief>

Insert code here: ?

</php-brief>

PL/SQL

Web page:PL/SQL

Sample: <PLSQL>

Check tag and insert here: ?

</PLSQL>

Python

Web page:Python

Sample: <python>

Insert code here: ?

</python>

QBASIC

Web page:Q(uick)BASIC

Sample: <qbasic>

Insert code here: ?

</qbasic>

Ruby

Web page:Ruby

Sample:

Insert code here: ?

SAS

<SAS>

Check tag and insert here: ?

</SAS> Web page:SAS

Scheme

Web page:Scheme

Sample: <scheme>

Insert code here: ?

</scheme>

SDLBasic

Web page:SDLBasic

Sample: <sdlbasic>

Insert code here: ?

</sdlbasic>

Smalltalk

Web page:Smalltalk

Sample: <Smalltalk>

Check tag and insert here: ?

</Smalltalk>

Smarty

Web page:Smarty

Sample: <smarty>

Insert code here: ?

</smarty>

SQL

Sample: <sql>

Insert code here: ?

</sql>

TCL

Web page:TCL

Sample: <TCL>

Check tag and insert here: ?

</TCL>

thinBasic

Web page:thinBasic

Sample: <ThinBasic>

Check tag and insert here: ?

</ThinBasic>

T-SQL

<T-SQL>

Check tag and insert here: ?

</T-SQL>

Uno IDL

Web page:Uno IDL

Sample: <Uno IDL>

Check tag and insert here: ?

</Uno IDL>

VB.NET

Web page:VB.NET

Sample: <vb>

Insert code here: ?

</vb>

Visual BASIC

Web page:Visual BASIC

Sample: <vbnet>

Insert code here: ?

</vbnet>

Visual Fox Pro

Web page:Visual Fox Pro

Sample: <visualfoxpro>

Insert code here: ?

</visualfoxpro>

Visual VHDL

Sample: <vhdl>

Insert code here: ?

</vhdl>

Winbatch

Web page:Winbatch

Sample: <Winbatch>

Check tag and insert here: ?

</Winbatch>

X++

Web page:X++ Sample: <Xpl>

Insert code here: ?

</Xpl>

Z80 ASM

Web page:Z80 ASM

Sample:

Other GeSHi file formats

Apache Log

Web page:Apache Log

Sample: <apache>

Insert code here: ?

</apache>

Ini

Sample: <ini>

Insert code here: ?

</ini>

mIRC

Web page:mIRC

Sample: <mIRC>

Check tag and insert here: ?

</mIRC>

robots.txt

Web page:robots.txt

Sample: <robots.txt>

Check tag and insert here: ?

</robots.txt>

XML

Web page:XML

Sample: <xml>

Insert code here: ?

</xml>