Recent Changes - Search:

Oktatás

* Programozás 2
  + feladatsor
  + C feladatsor
  + Python feladatsor
  + GitHub oldal

* Szkriptnyelvek
  + feladatsor
  + quick link

* Adator. prog.
  + feladatsor
  + quick link

Teaching

* Prog. for Data Sci. (TODO)

teaching assets


Félévek

* 2025/26/1
* archívum


Linkek

* kalendárium
   - munkaszüneti napok '20
* tételsorok
* jegyzetek
* szakdolgozat / PhD
* ösztöndíjak
* certificates
* C lang.
* C++
* C#
* Clojure
* D lang.
* Java
* Nim
* Scala


[ edit | logout ]
[ sandbox | passwd ]

Increment a string by 1

(1) inc by 1
import std.stdio;
import std.string;
import std.algorithm;
import std.ascii; // isLower()

string inc_string(const string s) pure
{
    assert(s.all!(isLower), "the input must be a lowercased string");
    //
    char[] chars = s.dup;
    chars.reverse;

    bool carry = true;
    // dfmt off
    foreach (ref c; chars)
    {
        if (!carry) {
            break;
        }
        // else:
        if (carry) {
            c += 1;
            carry = false;
        }
        if (c > 'z') {
            c = 'a';
            carry = true;
        }
    }
    if (carry) {
        chars ~= 'a';
    }
    chars.reverse;
    // dfmt on

    return chars.idup;
}

void main()
{
    writeln(inc_string("aa"));  // ab

    // writeln(inc_string("aa1"));  // error
    // writeln(inc_string("aBc"));  // error
}

unittest
{
    assert(inc_string("a") == "b");
    assert(inc_string("z") == "aa");
    assert(inc_string("aa") == "ab");
    assert(inc_string("am") == "an");
    assert(inc_string("az") == "ba");
    assert(inc_string("ba") == "bb");
    assert(inc_string("bz") == "ca");
    assert(inc_string("zz") == "aaa");
    assert(inc_string("zza") == "zzb");
    assert(inc_string("zzz") == "aaaa");
    assert(inc_string("aaaz") == "aaba");
}
Cloud City

  

Blogjaim, hobbi projektjeim

* The Ubuntu Incident
* Python Adventures
* @GitHub
* heroku
* extra
* haladó Python
* YouTube listák


Debrecen | la France


[ edit ]

Edit - History - Print *** Report - Recent Changes - Search
Page last modified on 2025 July 08, 12:21