Back
reverse (clj)
(source)function
(reverse s)
Returns s with its characters reversed.
Examples
clojure
(ns clojure.test-clojure.transducers
(:require [clojure.string :as s]
[clojure.test :refer :all]
[clojure.test.check :as chk]
[clojure.test.check.generators :as gen]
[clojure.test.check.properties :as prop]
[clojure.test.check.clojure-test :as ctest]))
(deftest test-eduction
(testing "one xform"
(is (= [1 2 3 4 5]
(eduction (map inc) (range 5)))))
(testing "multiple xforms"
(is (= ["2" "4"]
(eduction (map inc) (filter even?) (map str) (range 5)))))
(testing "materialize at the end"
(is (= [1 1 1 1 2 2 2 3 3 4]
(->> (range 5)
(eduction (mapcat range) (map inc))
sort)))
(is (= [1 1 2 1 2 3 1 2 3 4]
(vec (->> (range 5)
(eduction (mapcat range) (map inc))
to-array))))
(is (= {1 4, 2 3, 3 2, 4 1}
(->> (range 5)
(eduction (mapcat range) (map inc))
frequencies)))
(is (= ["drib" "god" "hsif" "kravdraa" "tac"]
(->> ["cat" "dog" "fish" "bird" "aardvark"]
(eduction (map clojure.string/reverse))
(sort-by first)))))
(testing "expanding transducer with nils"
(is (= '(1 2 3 nil 4 5 6 nil)
(eduction cat [[1 2 3 nil] [4 5 6 nil]])))))
clojure
(ns clojure.test-clojure.string
(:require [clojure.string :as s])
(:use clojure.test))
(deftest t-reverse
(is (= "tab" (s/reverse "bat"))))
(deftest nil-handling
(are [f args] (thrown? NullPointerException (apply f args))
s/reverse [nil]
s/replace [nil #"foo" "bar"]
s/replace-first [nil #"foo" "bar"]
s/re-quote-replacement [nil]
s/capitalize [nil]
s/upper-case [nil]
s/lower-case [nil]
s/split [nil #"-"]
s/split [nil #"-" 1]
s/trim [nil]
s/triml [nil]
s/trimr [nil]
s/trim-newline [nil]))
(deftest char-sequence-handling
(are [result f args] (let [[^CharSequence s & more] args]
(= result (apply f (StringBuffer. s) more)))
"paz" s/reverse ["zap"]
"foo:bar" s/replace ["foo-bar" \- \:]
"ABC" s/replace ["abc" #"\w" s/upper-case]
"faa" s/replace ["foo" #"o" (StringBuffer. "a")]
"baz::quux" s/replace-first ["baz--quux" #"--" "::"]
"baz::quux" s/replace-first ["baz--quux" (StringBuffer. "--") (StringBuffer. "::")]
"zim-zam" s/replace-first ["zim zam" #" " (StringBuffer. "-")]
"\\\\ \\$" s/re-quote-replacement ["\\ $"]
"Pow" s/capitalize ["POW"]
"BOOM" s/upper-case ["boom"]
"whimper" s/lower-case ["whimPER"]
["foo" "bar"] s/split ["foo-bar" #"-"]
"calvino" s/trim [" calvino "]
"calvino " s/triml [" calvino "]
" calvino" s/trimr [" calvino "]
"the end" s/trim-newline ["the end\r\n\r\r\n"]
true s/blank? [" "]
["a" "b"] s/split-lines ["a\nb"]
"fa la la" s/escape ["fo lo lo" {\o \a}]))
functional-koans/clojure-koans
(ns koans.02-strings
(:require [koan-engine.core :refer :all]
[clojure.string :as string]))
"You may want to make sure your words are backwards"
(= __ (string/reverse "hello"))
mtgred/netrunner
(ns game.cards.hardware
(:require
[clojure.set :as set]
[clojure.string :as str]
[game.core.access :refer [access-bonus access-card breach-server
get-only-card-to-access]]
[game.core.actions :refer [play-ability]]
[game.core.board :refer [all-active all-active-installed all-installed]]
[game.core.card :refer [active? corp? event? facedown? get-card get-counters get-title
get-zone hardware? has-subtype? ice? in-deck? in-discard?
in-hand? in-scored? installed? program? resource? rezzed?
runner? virus-program? faceup?]]
[game.core.card-defs :refer [card-def]]
[game.core.cost-fns :refer [all-stealth install-cost
rez-additional-cost-bonus rez-cost trash-cost]]
[game.core.damage :refer [chosen-damage damage damage-prevent
enable-runner-damage-choice runner-can-choose-damage?]]
[game.core.def-helpers :refer [breach-access-bonus defcard offer-jack-out
reorder-choice trash-on-empty get-x-fn]]
[game.core.drawing :refer [draw]]
[game.core.effects :refer [register-lingering-effect
unregister-effects-for-card unregister-lingering-effects]]
[game.core.eid :refer [effect-completed make-eid make-result]]
[game.core.engine :refer [can-trigger? not-used-once? register-events
register-once register-suppress resolve-ability trigger-event
unregister-floating-events unregister-suppress-by-uuid]]
[game.core.events :refer [event-count first-event? first-trash? no-event?
run-events]]
[game.core.expose :refer [expose]]
[game.core.finding :refer [find-card find-latest]]
[game.core.flags :refer [can-trash? card-flag? in-corp-scored? register-run-flag!
zone-locked?]]
[game.core.gaining :refer [gain-clicks gain-credits lose-clicks
lose-credits]]
[game.core.hand-size :refer [hand-size runner-hand-size+]]
[game.core.hosting :refer [host]]
[game.core.ice :refer [all-subs-broken? any-subs-broken? break-sub pump
reset-all-ice update-all-ice update-all-icebreakers
update-breaker-strength]]
[game.core.installing :refer [runner-can-install? runner-can-pay-and-install? runner-install]]
[game.core.link :refer [get-link link+]]
[game.core.memory :refer [caissa-mu+ mu+ update-mu virus-mu+]]
[game.core.moving :refer [mill move swap-agendas trash trash-cards]]
[game.core.optional :refer [get-autoresolve never? set-autoresolve]]
[game.core.payment :refer [build-cost-string can-pay? cost-value]]
[game.core.play-instants :refer [play-instant]]
[game.core.prompts :refer [cancellable clear-wait-prompt]]
[game.core.props :refer [add-counter add-icon remove-icon]]
[game.core.revealing :refer [reveal]]
[game.core.rezzing :refer [derez rez]]
[game.core.runs :refer [bypass-ice end-run end-run-prevent
get-current-encounter jack-out make-run
successful-run-replace-breach total-cards-accessed]]
[game.core.say :refer [system-msg]]
[game.core.servers :refer [target-server is-central?]]
[game.core.shuffling :refer [shuffle!]]
[game.core.tags :refer [gain-tags lose-tags tag-prevent]]
[game.core.to-string :refer [card-str]]
[game.core.toasts :refer [toast]]
[game.core.update :refer [update!]]
[game.core.virus :refer [count-virus-programs number-of-virus-counters]]
[game.macros :refer [continue-ability effect msg req wait-for]]
[game.utils :refer :all]
[jinteki.utils :refer :all]
[game.core.set-aside :refer [set-aside get-set-aside]]
[game.core.sabotage :refer [sabotage-ability]]
[game.core.mark :refer [identify-mark-ability]]))
(defcard "Recon Drone"
; eventmap uses reverse so we get the most recent event of each kind into map
(letfn [(eventmap [s]
(into {} (reverse (get s :turn-events))))]
{:interactions {:prevent [{:type #{:net :brain :meat}
:req (req (and (:access @state)
(= (:cid (second (:pre-damage (eventmap @state))))
(:cid (first (:pre-access-card (eventmap @state)))))))}]}
:abilities [{:cost [:x-credits :trash-can]
:label "prevent damage"
:req (req (and (:access @state)
(= (:cid (second (:pre-damage (eventmap @state))))
(:cid (first (:pre-access-card (eventmap @state)))))))
:msg (msg "prevent " (cost-value eid :x-credits) " damage")
:effect (effect (damage-prevent (first (:pre-damage (eventmap @state))) (cost-value eid :x-credits)))}]}))
lspector/Clojush
(ns clojush.instructions.string
(:use [clojush pushstate globals]
[clojure.string :only [split trim]]
clojush.instructions.vectors)
(:require [clojure.string :as string]))
(define-registered
string_reverse
^{:stack-types [:string]}
(fn [state]
(if (empty? (:string state))
state
(let [top-string (top-item :string state)]
(push-item (apply str (reverse top-string))
:string
(pop-item :string state))))))
(define-registered
string_parse_to_chars
^{:stack-types [:string]}
(fn [state]
(if (empty? (:string state))
state
(loop [char-list (reverse (top-item :string state))
loop-state (pop-item :string state)]
(if (empty? char-list)
loop-state
(recur (rest char-list)
(push-item (str (first char-list)) :string loop-state)))))))
(define-registered
string_split
^{:stack-types [:string]}
(fn [state]
(if (empty? (:string state))
state
(loop [word-list (reverse (filter not-empty (split (trim (top-item :string state)) #"\s+")))
loop-state (pop-item :string state)]
(if (empty? word-list)
loop-state
(recur (rest word-list)
(push-item (first word-list) :string loop-state)))))))
jackrusher/mundaneum
(ns mundaneum.properties
(:require [clojure.java.io :as io]
[clojure.string :as string]
[clojure.data.json :as json]))
;; reverse loookup
(def wdt->readable
(reduce (fn [m [readable wdt]] (assoc m wdt readable))
{}
wdt))
jerryasher-challenges/challenge-hackerrank30
(require 'clojure.string)
(let [ignore (read-line)
data (read-line)
arr (clojure.string/split data #"\s+")
rarr (reverse arr)
line (clojure.string/join " " rarr)]
(println line))