{"id":25003805,"url":"https://github.com/lpogic/fusy","last_synced_at":"2025-03-29T22:12:42.243Z","repository":{"id":116401161,"uuid":"389923085","full_name":"lpogic/fusy","owner":"lpogic","description":"Język programowania Fusy","archived":false,"fork":false,"pushed_at":"2022-03-05T17:48:28.000Z","size":895,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-04T22:39:21.855Z","etag":null,"topics":["java","programming-language","scripting-language"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lpogic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-07-27T09:26:42.000Z","updated_at":"2022-01-08T23:28:17.000Z","dependencies_parsed_at":null,"dependency_job_id":"22a00545-0b2a-4609-875d-92acaf7bbfc8","html_url":"https://github.com/lpogic/fusy","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lpogic%2Ffusy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lpogic%2Ffusy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lpogic%2Ffusy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lpogic%2Ffusy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lpogic","download_url":"https://codeload.github.com/lpogic/fusy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246249221,"owners_count":20747168,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","programming-language","scripting-language"],"created_at":"2025-02-04T22:39:09.407Z","updated_at":"2025-03-29T22:12:42.025Z","avatar_url":"https://github.com/lpogic.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Interpreter Fusy dla JVM\nProjekt kompilatora i środowiska uruchomieniowego dla aplikacji tworzonych w języku Fusy.\n\n## Użycie\n\n1. Pobierz i rozpakuj najnowszą wersję skompilowaną\n2. Uruchom plik launch.bat\n3. Podaj lokalizację pliku ze skryptem (np. przeciągając plik ze skryptem na obszar terminala) i naciśnij Enter\n\nPo zakończeniu wykonywania skryptu można uruchomić kolejny wykonując krok 3, albo zamknąć terminal wpisując 'exit'.\n\n# Fusy\nEksperymentalny język programowania do szybkiego tworzenia niewielkich aplikacji.\n\n# Próbka\n(rozwiązanie zadania \u003ca href=\"http://rosettacode.org/wiki/Dijkstra%27s_algorithm\"\u003ehttp://rosettacode.org/wiki/Dijkstra%27s_algorithm\u003c/a\u003e)\n```\n\\\\ 2x BACKSLASH = komentarz do końca linii\n\\\\\\\n  3x BACKSLASH = komentarz zamykany kolejną sekwencją 3x BS\n\\\\\\\n\\\\ Przypisz nowej zmiennej \"startNode\" wartość \"a\"(String)\n#startNode = \"a\"\n\\\\ Uniwersalna struktura danych \"Subject\" jako zbiór liter od \"a\" do \"f\"\n#vertices = [ .a[] .b[] .c[] .d[] .e[] .f[] ]\n#edges = []:merge[    \\\\ Wywołanie metody \"merge\" na pustym Subject\n  .a [ .b [ 7 ] ]\n  .a [ .c [ 9 ] ]\n  .a [ .f [ 14 ] ]\n  .b [ .c [ 10 ] ]\n  .b [ .d [ 15 ] ]\n  .c [ .d [ 11 ] ]\n  .c [ .f [ 2 ] ]\n  .d [ .e [ 6 ] ]\n  .e [ .f [ 9 ] ]\n]    \\\\ Subject jako drzewo\n\n\n@record Link( Object from, Object to, Integer cost, Object lastNode) \u003c    \\\\ Definicja rekordu \"Link\"\n\n#input = []\n#output = []\n \\\\ Iterowanie po całej kolekcji; Wywołanie metody \"eachRaw\" bez argumentów; z użyciem kropki i nawiasów\n for #v vertices.eachRaw()\n  if !startNode.equals(v)\n    \\\\ Przypisanie do zmiennej \"iclass\" klasy Integer\n    #iclass = @Integer\n    input.set(new Link(startNode, v, edges.in(startNode).in(v).as(iclass, null), startNode))\n  \u003c    \\\\ Domknięcie if-a\n\u003c    \\\\ Domknięcie for-a\n\n\\\\ Nagłówek funkcji \"lowestCost\", przyjmującej argument \"input\" typu Subject i zwracającej obiekt typu Link\n@Link lowestCost(Subject input)\n  \\\\ \"@(l) return l.cost() != null \u003c\" to funkcja lambda ( dłuższa forma )\n  #withCost = input.eachAs(@Link).select(@(l) return l.cost() != null )\n  \\\\ Wywołanie metody \"first\" bez argumentów; z użyciem dwukropka i z pominięciem nawiasów\n  #lowest = withCost:first\n  \\\\ for i if w postaci jednoliniowej ( z przecinkiem jako separator )\n  for #l withCost, if lowest:cost \u003e l:cost, lowest = l\n  return lowest\n\u003c    \\\\ Domknięcie funkcji \"lowestCost\"\n\n\\\\ \"@\u003e lowestCost(input)\" to krótsza forma funkcji lambda bez argumentów\nfor #lc pull(@\u003e lowestCost(input))\n  if lc == null, break\n  input.unset(lc)\n  output.put(lc:to, lc:lastNode)\n  for #l edges.in(lc:to) \n    for #i input.eachAs(@Link) \n      #sumCost = l:in:asInt + lc:cost\n      if i:to:equals(l:one) \u0026\u0026 (i:cost == null || i:cost \u003e sumCost) \n        input.swap(i, new Link(i:from, i:to, sumCost, lc:to))\n      \u003c\n    \u003c\n  \u003c\n\u003c\n\n@void printOutput(Subject output)\n  #c = output:reverse:cascade\n  for #o c \n    \\\\ Operator wyboru ( isTrue ? valueIfTrue !! valueIfFalse )\n    out:print(c:firstFall ? \"[ \" !! \"\\n  \")\n    \\\\ Formatowany String z użyciem { wyrażenie, które zostanie sprowadzone toString }\n    out:print(\"{ o:in:raw }--\u003e{ o:raw }\")\n  \u003c\n  out:println(\" ]\")\n\u003c\n\nout:println(\"Output:\")\nprintOutput(output)\n\n@Subject shortestPath(Subject output, String from, String to)\n  #path = [ to ]\n  while !Objects.equals(path:last:raw, from), path.alter(output.in(path:last:raw))\n  \u003e path    \\\\ Krótka forma \"return path\"\n\u003c\n\n@void printPath(Subject path)\n  #c = path:reverse:cascade\n  for #o c\n    out:print(c:firstFall ? \"[ \" !! \"--\u003e\")\n    out:print(o:raw)\n  \u003c\n  out:println(\" ]\")\n\u003c\n\nout:println(\"\\nShortest path from 'a' to 'e':\")\nprintPath(shortestPath(output, \"a\", \"e\"))\nout:println(\"\\nShortest path from 'a' to 'f':\")\nprintPath(shortestPath(output, \"a\", \"f\"))\n```\nwyjście:\n```\nOutput:\n[ d--\u003ee\n  c--\u003ed\n  c--\u003ef\n  a--\u003ec\n  a--\u003eb ]\n\nShortest path from 'a' to 'e':\n[ a--\u003ec--\u003ed--\u003ee ]\n\nShortest path from 'a' to 'f':\n[ a--\u003ec--\u003ef ]\n```\n\nWięcej przykładów na https://github.com/lpogic/fusy-rosetta-code\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flpogic%2Ffusy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flpogic%2Ffusy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flpogic%2Ffusy/lists"}